/* Responsive portal chrome layered over the website-owned campaign styles. */
.portal-menu-toggle,
.portal-sidebar-backdrop {
  display: none;
}

/* The Mapping homepage rail repeats navigation already available in the
   campaign header and main dashboard. Hide that website-only rail while
   preserving the source vault, and give its space back to the Mapping page. */
.note.bs-mapping-home .callout-bs-rail {
  display: none;
}

.note.bs-wiki-layout-test.bs-mapping-home > .callout-bs-shell,
.note.bs-wiki-layout-test.bs-mapping-home > .callout-bs-shell > .callout-content {
  grid-template-columns: minmax(0, 1fr);
}

/* Modern Markdown rendering puts the real template layout on a direct
   .callout-content child, while the outer callout retains its legacy grid as
   a fallback. Make that sole child span every outer track so the same grid is
   not applied twice, leaving phantom columns on the right. This is global
   because item overviews retain multiple outer tracks at tablet widths too. */
.note .callout-bs-shell > .callout-content,
.note .callout-bs-entity-shell > .callout-content,
.note .callout-pc-shell > .callout-content,
.note .callout-bs-quest-dashboard > .callout-content,
.note .callout-bs-item-overview > .callout-content,
.note .callout-bs-grid-2 > .callout-content,
.note .callout-bs-grid-3 > .callout-content,
.note .callout-bs-grid-5 > .callout-content {
  grid-column: 1 / -1;
  min-width: 0;
  width: 100%;
}

/* Match the full-vault campaign navigation to the compact angled tabs used
   by PC pages. Cover both legacy and modern callout-content DOM shapes. */
.callout-bs-main-nav > p > a,
.callout-bs-main-nav > .callout-content > p > a {
  clip-path: polygon(6% 0, 100% 0, 94% 100%, 0 100%);
}

.callout-bs-main-nav > p > a:focus-visible,
.callout-bs-main-nav > .callout-content > p > a:focus-visible {
  outline-offset: -3px;
}

/* Desktop is the primary campaign workspace. Use the full browser width and
   let dashboard cards wrap before their tables become letter-wide columns. */
@media (min-width: 1025px) {
  /* Chrome zoom below 100% increases the effective CSS viewport. The public
     site and review app must keep using that space instead of stopping at the
     older 94rem/112rem website-shell caps. Readable prose and compact forms
     retain their own narrower limits below this outer-shell override. */
  .public-main,
  .review-layout {
    max-width: none;
    min-width: 0;
    width: 100%;
  }

  .review-workspace .review-page {
    margin-inline: 0;
    max-width: none;
    min-width: 0;
    width: 100%;
  }

  .portal-workspace,
  .shell,
  .content,
  .content-inner,
  .note {
    max-width: 100%;
    min-width: 0;
  }

  .shell {
    grid-template-columns: clamp(15.5rem, 18vw, 18rem) minmax(0, 1fr);
    width: 100%;
  }

  /* Desktop reads as a website, not a file browser: the vault rail and its
     toggle are hidden above the mobile breakpoint. Below it the sidebar stays
     the file drawer, which is the only navigation a phone has. */
  .shell--no-sidebar {
    grid-template-columns: minmax(0, 1fr);
  }

  .shell--no-sidebar > .sidebar,
  .shell--no-sidebar > .portal-sidebar-backdrop,
  .portal-menu-toggle {
    display: none;
  }

  .content {
    min-width: 0;
    /* Side margins so the campaign reads as a centred document. */
    padding: clamp(0.85rem, 1.8vw, 1.7rem) clamp(1rem, 5vw, 8rem);
    width: 100%;
  }

  .note.bs-wiki-layout-test,
  .note.bs-wiki,
  .note.pc-wiki-layout-test {
    max-width: none;
    min-width: 0;
    width: 100%;
  }

  /* The note fills its column, but the column itself stays a centred
     measure so very wide screens keep margins instead of stretching. */
  .content-inner {
    margin-inline: auto;
    max-width: 135rem;
    min-width: 0;
    width: 100%;
  }

  /* The browser renderer puts the live grid on .callout-content. Keep the
     class selectors as a fallback for older releases that used the outer
     callout as the grid container. */
  .bs-wiki-layout-test .callout[data-callout="bs-shell"] > .callout-content,
  .bs-wiki-layout-test .callout[data-callout="bs-entity-shell"] > .callout-content,
  .note.bs-wiki-layout-test .callout-bs-shell,
  .note.bs-wiki-layout-test .callout-bs-entity-shell,
  .note.bs-wiki .callout-bs-shell,
  .note.bs-wiki .callout-bs-entity-shell {
    /* Give the main workspace 100px more room by reducing every responsive
       rail branch by exactly 100px. The rail still scales with the viewport. */
    grid-template-columns: minmax(0, 1fr) minmax(0, clamp(calc(17rem - 50px), calc(21vw - 50px), calc(23rem - 50px)));
    max-width: 100%;
    min-width: 0;
    width: 100%;
  }

  /* A shell with no rail spans the page: the session summary and bullet
     points lost their rails on 12 September 2026 ("make the center wider"). */
  .bs-wiki-layout-test .callout[data-callout="bs-shell"] > .callout-content:not(:has(> .callout[data-callout="bs-rail"])),
  .bs-wiki-layout-test .callout[data-callout="bs-entity-shell"] > .callout-content:not(:has(> .callout[data-callout="bs-rail"])) {
    grid-template-columns: minmax(0, 1fr);
  }

  .pc-wiki-layout-test .callout[data-callout="pc-shell"] > .callout-content,
  .note.pc-wiki-layout-test .callout-pc-shell {
    /* Keep PC records aligned with the shared 100px rail reduction. */
    grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
    max-width: 100%;
    min-width: 0;
    width: 100%;
  }

  .note.dnd-warframe-campaign-home {
    /* Safe fallback for a release rendered before legacy layout conversion. */
    grid-template-columns: minmax(0, 1fr) minmax(0, calc(21rem - 50px));
    max-width: 100%;
    min-width: 0;
    width: 100%;
  }

  /* Campaign landing pages should occupy the complete laptop canvas. Stack
     their sparse information rail beneath the dashboard, let the dashboard
     use the full width, and share remaining viewport height between its data
     rows. Detail, entity, and PC pages retain their useful side rails. */
  .content:has(> .content-inner > .note.bs-campaign-home) {
    display: flex;
    flex-direction: column;
  }

  .content:has(> .content-inner > .note.bs-campaign-home) > .content-inner,
  .note.bs-campaign-home,
  .note.bs-campaign-home > .callout-bs-shell {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
  }

  .note.bs-campaign-home > .callout-bs-shell > .callout-content {
    align-items: stretch;
    flex: 1 1 auto;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(max-content, 1fr) auto;
    min-height: 0;
  }

  .note.bs-campaign-home .callout-bs-main {
    align-self: stretch;
    display: flex;
    flex-direction: column;
    min-height: 0;
  }

  .note.bs-campaign-home .callout-bs-main > .callout-content {
    display: grid;
    flex: 1 1 auto;
    grid-template-rows: auto auto minmax(max-content, 1fr) minmax(max-content, 1fr);
    min-height: 0;
  }

  .note.bs-campaign-home .callout-bs-rail {
    align-self: stretch;
    margin-top: 0;
    max-height: none;
    overflow: visible;
    position: static;
  }

  .note.bs-campaign-home .callout-bs-rail > .callout-content {
    display: grid;
    gap: var(--bs-gap);
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bs-wiki-layout-test .callout[data-callout="bs-main"],
  .bs-wiki-layout-test .callout[data-callout="bs-rail"],
  .bs-wiki-layout-test .callout[data-callout="bs-main"] > .callout-content,
  .bs-wiki-layout-test .callout[data-callout="bs-rail"] > .callout-content,
  .note.bs-wiki-layout-test .callout-bs-main,
  .note.bs-wiki-layout-test .callout-bs-rail,
  .note.bs-wiki .callout-bs-main,
  .note.bs-wiki .callout-bs-rail,
  .pc-wiki-layout-test .callout[data-callout="pc-main"],
  .pc-wiki-layout-test .callout[data-callout="pc-rail"],
  .pc-wiki-layout-test .callout[data-callout="pc-main"] > .callout-content,
  .pc-wiki-layout-test .callout[data-callout="pc-rail"] > .callout-content,
  .note.pc-wiki-layout-test .callout-pc-main,
  .note.pc-wiki-layout-test .callout-pc-rail {
    max-width: 100%;
    min-width: 0;
    width: 100%;
  }

  .callout-bs-main-nav > p:not(.callout-title):not(.callout-lead),
  .callout-bs-main-nav > .callout-content > p {
    grid-template-columns: repeat(auto-fit, minmax(6.25rem, 1fr));
  }

  .callout-bs-category-grid > p:not(.callout-title):not(.callout-lead),
  .callout-bs-category-grid > .callout-content > p {
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  }

  .callout-bs-grid-2 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 23rem), 1fr));
  }

  .callout-bs-grid-3 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 21rem), 1fr));
  }

  .callout-bs-grid-5 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  }
}

.callout-bs-grid-2 > .callout,
.callout-bs-grid-3 > .callout,
.callout-bs-grid-5 > .callout,
.query-table-scroll,
.query-view {
  min-width: 0;
  width: 100%;
}

/* Obsidian template launchers are not website buttons. Keep their labels for
   parity with the Master Vault, but make the non-interactive state visually
   unmistakable instead of inheriting the category grid's active-card style. */
.callout-bs-category-grid > p > .bs-unavailable-link,
.callout-bs-category-grid > p > strong > .bs-unavailable-link,
.callout-bs-category-grid > .callout-content > p > .bs-unavailable-link,
.callout-bs-category-grid > .callout-content > p > strong > .bs-unavailable-link {
  background: rgba(7, 14, 22, 0.46) !important;
  border-color: rgba(114, 139, 158, 0.42) !important;
  border-style: dashed !important;
  box-shadow: none !important;
  color: #8397a8 !important;
  cursor: not-allowed !important;
  flex-direction: column;
  opacity: 0.72;
  pointer-events: none;
}

.callout-bs-category-grid > p > strong:has(> .bs-unavailable-link),
.callout-bs-category-grid > .callout-content > p > strong:has(> .bs-unavailable-link) {
  background: rgba(7, 14, 22, 0.46) !important;
  border-color: rgba(114, 139, 158, 0.42) !important;
  border-style: dashed !important;
  pointer-events: none;
}

.callout-bs-category-grid .bs-template-link::after {
  content: "Master Vault only";
  display: block;
  font: 600 0.58rem/1.1 system-ui, sans-serif;
  letter-spacing: 0.04em;
  margin-top: 0.18rem;
  text-transform: uppercase;
}

/* Published Obsidian Base views use a real, campaign-scoped directory page.
   The links behave like filters while the data remains read-only. */
.base-directory-page {
  display: grid;
  gap: 0.85rem;
  min-width: 0;
  width: 100%;
}

.base-directory-heading,
.base-directory-results {
  background: #08131e;
  border: 1px solid #1d4055;
  border-radius: 0.45rem;
  min-width: 0;
  padding: clamp(0.9rem, 1.5vw, 1.35rem);
}

.base-directory-heading h1,
.base-directory-results h2 {
  margin-block: 0.2rem 0.55rem;
}

.base-directory-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  min-width: 0;
}

.base-directory-filter {
  align-items: center;
  background: #07111b;
  border: 1px solid #23465b;
  border-radius: 0.35rem;
  color: #70c9e4;
  display: inline-flex;
  font-weight: 750;
  justify-content: center;
  min-height: 2.75rem;
  padding: 0.55rem 0.8rem;
  text-decoration: none;
}

.base-directory-filter:is(:hover, :focus-visible),
.base-directory-filter.is-active {
  background: #12344a;
  border-color: #56c9ed;
  color: #fff;
}

.base-directory-filter.is-active {
  box-shadow: inset 0 -3px #56c9ed;
}

.base-directory-filter:focus-visible {
  outline: 3px solid #9ddfff;
  outline-offset: 2px;
}

.callout-bs-grid-2 .query-table th,
.callout-bs-grid-2 .query-table td,
.callout-bs-grid-3 .query-table th,
.callout-bs-grid-3 .query-table td,
.callout-bs-grid-5 .query-table th,
.callout-bs-grid-5 .query-table td {
  hyphens: none;
  overflow-wrap: normal;
  word-break: normal;
}

.callout-bs-grid-2 .query-table a,
.callout-bs-grid-3 .query-table a,
.callout-bs-grid-5 .query-table a {
  overflow-wrap: anywhere;
}

/* A picture fits its panel at every width. A 1,338 px settlement picture
   sat in a 361 px desktop panel behind its own scrollbar (website QA
   report, 11 September 2026); the panel shows the whole picture at panel
   width and the link around it opens the full-size one. */
.note img,
.note svg {
  height: auto;
  max-width: 100%;
}

.note-image-link {
  display: inline-block;
  max-width: 100%;
}

/* Narrow a search to people, places, things, quests, sessions, lore or
   creatures; each filter carries its count for the query. */
.search-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.9rem 0 0.6rem;
}

.search-filter {
  border: 1px solid var(--border, #17394a);
  border-radius: 999px;
  color: inherit;
  font-size: 0.82rem;
  padding: 0.25rem 0.7rem;
  text-decoration: none;
}

.search-filter[aria-current="true"] {
  background: rgba(88, 185, 230, 0.16);
  border-color: rgba(88, 185, 230, 0.55);
  font-weight: 700;
}

.search-filter-count {
  opacity: 0.7;
  font-variant-numeric: tabular-nums;
}

.search-kind {
  border: 1px solid var(--border, #17394a);
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-left: 0.45rem;
  padding: 0.1rem 0.5rem;
  text-transform: uppercase;
  vertical-align: middle;
}

/* More results than one search page shows: the links to the pages before
   and after. */
.search-paging {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.25rem;
}

@media (max-width: 1024px) {
  :root {
    scroll-padding-top: 3.25rem;
  }

  body {
    overflow-x: hidden;
  }

  body[data-sidebar-open="true"] {
    overflow: hidden;
  }

  .portal-appbar {
    grid-template-columns: 3.1rem 3.6rem minmax(0, 1fr);
    height: 3.25rem;
  }

  .portal-app-divider,
  .portal-app-tab {
    display: none;
  }

  .portal-appmark {
    min-height: 3.25rem;
  }

  .portal-menu-toggle {
    align-items: center;
    align-self: stretch;
    background: #0c1720;
    border-left: 1px solid var(--border);
    border-radius: 0;
    border-right: 1px solid var(--border);
    color: var(--accent-strong);
    display: flex;
    flex-direction: column;
    font-size: 0.61rem;
    gap: 0.05rem;
    justify-content: center;
    min-height: 3.25rem;
    min-width: 3.6rem;
    padding: 0.25rem 0.4rem;
    text-transform: uppercase;
  }

  .portal-menu-toggle span:first-child {
    font-size: 1.15rem;
    line-height: 1;
  }

  .portal-menu-toggle[aria-expanded="true"] {
    background: #14334a;
    color: #fff;
  }

  .portal-app-tools {
    min-width: 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }

  .portal-app-tools a {
    flex: 0 0 auto;
    min-height: 3.25rem;
    padding-inline: 0.72rem;
    scroll-snap-align: start;
    white-space: nowrap;
  }

  .shell {
    display: block;
    min-height: calc(100vh - 3.25rem);
  }

  .sidebar {
    border-bottom: 0;
    border-right: 1px solid var(--border);
    bottom: 0;
    box-shadow: 1.4rem 0 3rem rgba(0, 0, 0, 0.48);
    height: auto;
    left: 0;
    max-height: none;
    max-width: 22rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 1rem max(1rem, env(safe-area-inset-right)) max(1.25rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
    pointer-events: none;
    position: fixed;
    top: 3.25rem;
    transform: translateX(-105%);
    transition: transform 180ms ease, visibility 180ms ease;
    visibility: hidden;
    width: min(88vw, 22rem);
    z-index: 75;
  }

  body[data-sidebar-open="true"] .sidebar {
    pointer-events: auto;
    transform: translateX(0);
    visibility: visible;
  }

  .portal-sidebar-backdrop {
    background: rgba(1, 7, 11, 0.72);
    border: 0;
    border-radius: 0;
    bottom: 0;
    cursor: default;
    display: block;
    left: 0;
    opacity: 0;
    padding: 0;
    pointer-events: none;
    position: fixed;
    right: 0;
    top: 3.25rem;
    transition: opacity 180ms ease;
    z-index: 70;
  }

  body[data-sidebar-open="true"] .portal-sidebar-backdrop {
    opacity: 1;
    pointer-events: auto;
  }

  .vault-actions a,
  .tree-link,
  .reader-settings button,
  .reader-settings select,
  .vault-search-control button {
    min-height: 2.75rem;
  }

  .tree-folder details > summary::before {
    align-items: center;
    display: flex;
    justify-content: center;
    min-height: 2.75rem;
    width: 1.5rem;
  }

  .tree-search,
  .reader-settings select,
  .vault-search-control input {
    font-size: 1rem;
  }

  .content {
    min-height: calc(100vh - 3.25rem);
    padding: clamp(0.7rem, 2.4vw, 1.2rem);
  }

  .content-inner,
  .note,
  .callout {
    max-width: 100%;
    min-width: 0;
  }

  .toolbar {
    align-items: center;
    display: grid;
    gap: 0.65rem;
    grid-template-columns: minmax(0, 1fr) auto;
    margin-bottom: 0.85rem;
  }

  .toolbar .muted {
    grid-column: 1 / -1;
  }

  .release-date {
    overflow-wrap: anywhere;
  }

  .toolbar form,
  .toolbar form button {
    min-height: 2.75rem;
  }

  .breadcrumbs {
    align-items: flex-start;
    font-size: 0.82rem;
    gap: 0.35rem;
    margin-bottom: 0.8rem;
    overflow-wrap: anywhere;
  }

  .note-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-bottom: 0.75rem;
  }

  .note-actions .button {
    align-items: center;
    display: flex;
    justify-content: center;
    min-height: 2.75rem;
    text-align: center;
  }

  .note img,
  .note svg,
  .canvas-page svg {
    height: auto;
    max-width: 100%;
  }

  .note pre {
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }

  .query-table-scroll,
  .markdown-table-scroll {
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    overflow-x: auto;
  }

  /* A table with a few columns wraps its cells to the panel; only a wide
     one (six columns or more) keeps its natural width and scrolls inside
     its own container. Every table used to be as wide as its longest line,
     so the money tables sat 625 px wide in a 305 px panel and the rarity
     table 739 px (website QA report, 11 September 2026). */
  .markdown-table-scroll > table.markdown-rendered-table {
    min-width: 100%;
    width: 100%;
  }

  .markdown-table-scroll > table.markdown-rendered-table th,
  .markdown-table-scroll > table.markdown-rendered-table td {
    overflow-wrap: anywhere;
    white-space: normal;
  }

  .markdown-table-scroll > table.markdown-rendered-table:has(thead th:nth-child(6)) {
    width: max-content;
  }

  .query-table {
    min-width: 36rem;
  }

  .query-table th:first-child,
  .query-table td:first-child {
    min-width: 11rem;
  }

  .pc-info-rail .query-table {
    min-width: 20rem;
  }

  .relation-columns,
  .callout-bs-quest-dashboard,
  .bs-wiki-layout-test .callout[data-callout="bs-shell"] > .callout-content,
  .bs-wiki-layout-test .callout[data-callout="bs-entity-shell"] > .callout-content,
  .note.bs-wiki-layout-test .callout-bs-shell,
  .note.bs-wiki-layout-test .callout-bs-entity-shell,
  .note.bs-wiki .callout-bs-shell,
  .note.bs-wiki .callout-bs-entity-shell,
  .pc-wiki-layout-test .callout[data-callout="pc-shell"] > .callout-content,
  .note.pc-wiki-layout-test .callout-pc-shell,
  .note.dnd-warframe-campaign-home {
    grid-template-columns: minmax(0, 1fr);
  }

  .bs-wiki-layout-test .callout[data-callout="bs-rail"],
  .note.bs-wiki-layout-test .callout-bs-rail,
  .note.bs-wiki .callout-bs-rail,
  .pc-wiki-layout-test .callout[data-callout="pc-rail"],
  .note.pc-wiki-layout-test .callout-pc-rail {
    margin-top: var(--bs-gap, 0.75rem);
    max-height: none;
    overflow: visible;
    position: static;
  }

  .note.dnd-warframe-campaign-home > .callout-wf-rail {
    grid-column: 1;
    position: static;
  }

  .bs-wiki-layout-test .bs-hero__title,
  .bs-wiki-layout-test .bs-entity-hero__title,
  .pc-wiki-layout-test .pc-hero__title {
    overflow-wrap: anywhere;
  }

  .callout-bs-main-nav > p > a,
  .callout-bs-category-grid > p > a,
  .callout-bs-category-grid > p > strong,
  .callout-bs-main-nav > .callout-content > p > a,
  .callout-bs-category-grid > .callout-content > p > a,
  .callout-bs-category-grid > .callout-content > p > strong,
  :is(.callout-pc-global-nav, .callout-pc-page-tabs) > p > a {
    min-height: 2.75rem;
  }

  .callout-bs-main-nav > p:not(.callout-title):not(.callout-lead),
  .callout-bs-main-nav > .callout-content > p {
    grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
  }

  .callout-bs-category-grid > p:not(.callout-title):not(.callout-lead),
  .callout-bs-category-grid > .callout-content > p {
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  }

  .callout-bs-grid-2,
  .callout-bs-grid-3,
  .callout-bs-grid-5 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  }
}

/* On a phone a query table fits its panel. Five money columns at a 7rem
   minimum each were 625 px of table in a 305 px panel (website QA report,
   11 September 2026). A table of six columns or more keeps the wide layout
   and scrolls inside its own box. */
@media screen and (max-width: 720px) {
  table.query-table,
  .pc-info-rail table.query-table {
    min-width: 0;
    width: 100%;
  }

  table.query-table th,
  table.query-table td,
  table.query-table th:first-child,
  table.query-table td:first-child {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: normal;
  }

  table.query-table:has(thead th:nth-child(6)) {
    min-width: 36rem;
  }

  /* A table of four or more columns is one card per row on a phone, each
     value under its column's name; the audit's phone screenshots showed
     seven-column quest rows crushed to a word a line (11 September 2026).
     Two- and three-column tables stay tables. */
  .note table.query-table:has(thead th:nth-child(4)),
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) {
    border-collapse: separate;
    display: block;
    min-width: 0;
    width: 100%;
  }

  .note table.query-table:has(thead th:nth-child(4)) thead,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) thead {
    display: none;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody {
    display: grid;
    gap: 0.6rem;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody tr,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody tr {
    border: 1px solid var(--border, #17394a);
    border-radius: 0.5rem;
    display: grid;
    gap: 0.15rem;
    padding: 0.55rem 0.7rem;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody tr[hidden],
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody tr[hidden] {
    display: none;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody td,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody td {
    border: 0 !important;
    display: grid;
    gap: 0.5rem;
    grid-template-columns: minmax(5.5rem, 38%) minmax(0, 1fr);
    min-width: 0;
    padding: 0.1rem 0 !important;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody td::before,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody td::before {
    color: var(--muted, #8ba2b2);
    content: attr(data-label);
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody td:first-child,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody td:first-child {
    font-weight: 700;
  }

  .note table.query-table:has(thead th:nth-child(4)) tbody td:empty,
  .note table.markdown-rendered-table:has(thead th:nth-child(4)) tbody td:empty {
    display: none;
  }

  /* A PC page stacks main then rail; on a phone the rail (status, stats,
     loadout) is what a player opens the page for, so it comes first. */
  .pc-wiki-layout-test .callout[data-callout="pc-shell"] > .callout-content,
  .note.pc-wiki-layout-test .callout-pc-shell {
    display: flex;
    flex-direction: column;
  }

  .pc-wiki-layout-test .callout[data-callout="pc-rail"],
  .note.pc-wiki-layout-test .callout-pc-rail {
    order: -1;
  }
}

@media (max-width: 520px) {
  .portal-appbar {
    grid-template-columns: 2.75rem 3.35rem minmax(0, 1fr);
  }

  .portal-menu-toggle {
    min-width: 3.35rem;
  }

  .portal-app-tools a {
    font-size: 0.64rem;
    padding-inline: 0.58rem;
  }

  .content {
    padding: 0.55rem;
  }

  .toolbar {
    align-items: stretch;
    grid-template-columns: 1fr;
  }

  .toolbar .muted,
  .toolbar form,
  .toolbar form button {
    grid-column: 1;
    width: 100%;
  }

  .note-actions,
  .callout-bs-category-grid > p:not(.callout-title):not(.callout-lead),
  .callout-bs-category-grid > .callout-content > p,
  .callout-bs-grid-2,
  .callout-bs-grid-3,
  .callout-bs-grid-5,
  .callout-bs-item-overview {
    grid-template-columns: minmax(0, 1fr);
  }

  .callout-bs-main-nav > p:not(.callout-title):not(.callout-lead),
  .callout-bs-main-nav > .callout-content > p {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  :is(.callout-pc-global-nav, .callout-pc-page-tabs) > p:not(.callout-title):not(.callout-lead) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  :is(.callout-pc-global-nav, .callout-pc-page-tabs) > .callout-content > p {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .note:not(.bs-wiki-layout-test):not(.bs-wiki):not(.pc-wiki-layout-test) {
    padding: 0.75rem;
  }

  .bs-wiki-layout-test .bs-hero,
  .bs-wiki-layout-test .bs-entity-hero,
  .pc-wiki-layout-test .pc-hero {
    min-height: 8.5rem;
    padding: 0.9rem;
  }

  .bs-wiki-layout-test .bs-hero__title,
  .bs-wiki-layout-test .bs-entity-hero__title,
  .pc-wiki-layout-test .pc-hero__title {
    font-size: clamp(1.7rem, 9vw, 2.25rem);
    line-height: 1.05;
  }

  .bs-wiki-layout-test .bs-hero__campaign,
  .bs-wiki-layout-test .bs-entity-hero__heading {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .query-table {
    min-width: 32rem;
  }

  .statblock-abilities {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (prefers-reduced-motion: reduce) {
  .sidebar,
  .portal-sidebar-backdrop {
    scroll-behavior: auto;
    transition: none;
  }
}

/* Empty data remains visible on every viewport so readers can still see the
   table headings and understand what each campaign section will contain. */

.query-caption {
  border: 0;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

.callout > .callout-content {
  min-width: 0;
}

.query-empty-row td {
  color: var(--text-muted, #8f9dad);
  font-style: italic;
  padding-block: 1rem;
  text-align: center;
  white-space: normal;
}

.note .portal-panel-empty-state {
  color: var(--text-muted, #8f9dad);
  display: block;
  font-style: italic;
  line-height: 1.45;
  margin: 0;
  overflow-wrap: anywhere;
  padding: 0.85rem;
}

.note.bs-home .bs-base-placeholder {
  display: block;
  line-height: 1.45;
  margin: 0.65rem;
  padding: 0.75rem 0.85rem;
}

/* Protected AI campaign search. These styles live with the runtime layer so
   the feature remains usable even when an older website asset pack is active. */
.ai-search-panel,
.ai-search-answer,
.ai-search-citations {
  background: var(--panel, #071620);
  border: 1px solid var(--border, #173a50);
  border-radius: 0.45rem;
  margin-bottom: 1rem;
  padding: clamp(0.9rem, 2.5vw, 1.25rem);
}

.ai-search-form {
  margin-block: 1rem 0.65rem;
}

.ai-search-privacy {
  font-size: 0.86rem;
  margin-bottom: 0;
}

.ai-search-answer h3 {
  margin-top: 0.25rem;
}

.ai-search-answer-text {
  color: var(--text, #d8e2ec);
  line-height: 1.65;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.ai-search-details {
  border-top: 1px solid var(--border, #173a50);
  margin-top: 1rem;
  padding-top: 0.8rem;
}

.ai-search-details summary {
  color: var(--accent-strong, #64d6ff);
  cursor: pointer;
  font-weight: 700;
}

.ai-search-sources {
  display: grid;
  gap: 0.75rem;
  list-style-position: inside;
  margin: 0;
  padding: 0;
}

.ai-search-source {
  background: rgba(3, 14, 22, 0.7);
  border: 1px solid var(--border, #173a50);
  border-radius: 0.35rem;
  padding: 0.8rem;
}

.ai-search-source > a {
  font-weight: 800;
}

.ai-search-source > span {
  color: var(--text-muted, #8f9dad);
  display: block;
  font-size: 0.78rem;
  overflow-wrap: anywhere;
}

.ai-search-source > p {
  margin-bottom: 0;
}

@media (max-width: 640px) {
  .ai-search-panel .full-search-control,
  .ai-search-form .full-search-control {
    display: grid;
    gap: 0.6rem;
    grid-template-columns: minmax(0, 1fr);
  }

  .ai-search-form input,
  .ai-search-form button {
    min-height: 3rem;
    width: 100%;
  }
}

/* Session-review filter links. The review is intentionally server-rendered so
   status and category browsing still works when scripts are blocked. */
.review-workspace .review-mode-tabs {
  display: grid;
  gap: 0.7rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 1rem;
}

.review-workspace .review-mode-tab {
  align-items: center;
  background: #151c29;
  border: 1px solid #303a4c;
  border-radius: 0.55rem;
  color: #dfe7f6;
  display: grid;
  gap: 0.7rem;
  grid-template-columns: auto minmax(0, 1fr) auto;
  padding: 0.75rem;
}

.review-workspace .review-mode-tab > span:nth-child(2) {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}

.review-workspace .review-mode-tab small {
  color: #99a8bf;
  overflow-wrap: anywhere;
}

.review-workspace .review-mode-tab > b {
  align-items: center;
  background: #0c121d;
  border: 1px solid #3b465c;
  border-radius: 999px;
  display: inline-flex;
  justify-content: center;
  min-height: 2rem;
  min-width: 2rem;
  padding-inline: 0.45rem;
}

.review-workspace .review-mode-icon {
  align-items: center;
  background: #252e44;
  border-radius: 0.4rem;
  color: #aebcff;
  display: inline-flex;
  font-weight: 900;
  justify-content: center;
  min-height: 2.4rem;
  min-width: 2.4rem;
}

.review-workspace .review-fact-statuses {
  display: grid;
  gap: 0.55rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 0.8rem;
}

.review-workspace .review-fact-status {
  align-items: center;
  background: #151c29;
  border: 1px solid #303a4c;
  border-radius: 0.42rem;
  color: #dfe7f6;
  display: flex;
  gap: 0.55rem;
  justify-content: center;
  padding: 0.6rem 0.75rem;
}

.review-workspace .review-fact-status strong {
  color: #fff;
  font-size: 1.05rem;
}

.review-workspace .review-filter-link {
  cursor: pointer;
  min-height: 2.75rem;
  text-decoration: none;
  transition: background-color 120ms ease, border-color 120ms ease,
    box-shadow 120ms ease, transform 120ms ease;
}

.review-workspace .review-filter-link[aria-current="page"] {
  background: #2a3150;
  border-color: #7d89ff;
  box-shadow: inset 0 -3px #7d89ff, 0 0 0 1px rgba(125, 137, 255, 0.2);
  color: #fff;
}

.review-workspace .review-filter-link[aria-current="page"] strong,
.review-workspace .review-filter-link[aria-current="page"] small,
.review-workspace .review-filter-link[aria-current="page"] span {
  color: #fff;
}

@media (hover: hover) {
  .review-workspace .review-filter-link:hover {
    background: #232a3c;
    border-color: #6876a0;
    color: #fff;
    transform: translateY(-1px);
  }
}

.review-workspace .review-filter-link:focus-visible,
.review-workspace .review-clear-filter:focus-visible {
  outline: 3px solid #9dc2ff;
  outline-offset: 2px;
}

.review-workspace .review-filter-summary {
  align-items: center;
  background: #121822;
  border: 1px solid #303847;
  border-radius: 0.42rem;
  display: flex;
  gap: 0.8rem;
  justify-content: space-between;
  margin-top: 0.7rem;
  min-height: 2.75rem;
  padding: 0.55rem 0.75rem;
}

.review-workspace .review-filter-summary p {
  color: #9eabc0;
  margin: 0;
}

.review-workspace .review-filter-summary strong {
  color: #fff;
}

.review-workspace .review-progress-summary {
  background: #121a25;
  border-left: 3px solid #7080ff;
  color: #aebbd0;
  line-height: 1.5;
  margin: 0 0 0.75rem;
  padding: 0.6rem 0.75rem;
}

.review-workspace .review-progress-summary strong {
  color: #f2f5fb;
}

.review-workspace .review-progress-summary.is-complete {
  border-left-color: #63d49f;
}

.review-workspace .review-main-grid {
  align-items: start;
}

.review-workspace .review-categories {
  grid-template-columns: repeat(auto-fit, minmax(7.25rem, 1fr));
}

.review-workspace .review-category-copy small,
.review-workspace .review-rail-campaign small,
.review-workspace .review-rail-section h2,
.review-workspace .review-file-state small,
.review-workspace .review-action-note {
  color: #8992a4;
  font-size: 0.72rem;
}

.review-workspace button {
  min-height: 2.75rem;
}

/* The decision on a fact or a name is the thing the reviewer touches most:
   larger and brighter than the page's other controls, so it stands out
   (Harry, 12 September 2026). The options inherit the colours. */
.review-workspace .review-group-decision select[data-rv-decision],
.review-workspace .review-group-decision select[data-family-decision],
.review-workspace .review-fact-decide select[data-rv-decision],
.review-workspace .review-fact-form select[data-rv-decision],
.review-workspace select[data-rv-decision],
.review-workspace select[data-family-decision] {
  background: #1b2848;
  border: 1px solid #7d9cf0;
  border-radius: 0.55rem;
  color: #f4f7ff;
  font-size: 1.05rem;
  font-weight: 600;
  min-height: 2.9rem;
  padding: 0.5rem 0.85rem;
}
.review-workspace .review-group-decision select[data-rv-decision] option,
.review-workspace .review-group-decision select[data-family-decision] option,
.review-workspace .review-fact-decide select[data-rv-decision] option,
.review-workspace select[data-rv-decision] option,
.review-workspace select[data-family-decision] option {
  background: #14203a;
  color: #f4f7ff;
  font-size: 1.05rem;
  padding: 0.35rem 0.5rem;
}
.review-workspace .review-group-decision select[data-rv-decision]:hover,
.review-workspace .review-group-decision select[data-family-decision]:hover,
.review-workspace .review-fact-decide select[data-rv-decision]:hover,
.review-workspace select[data-rv-decision]:hover,
.review-workspace select[data-family-decision]:hover {
  border-color: #b6c8ff;
  box-shadow: 0 0 0 3px rgba(125, 156, 240, 0.25);
}

.review-workspace select:focus-visible,
.review-workspace textarea:focus-visible,
.review-workspace input:focus-visible,
.review-workspace summary:focus-visible,
.review-workspace button:focus-visible {
  outline: 3px solid #9dc2ff;
  outline-offset: 2px;
}

.review-workspace .review-known-recommendation {
  align-items: center;
  background: linear-gradient(105deg, #152a24, #182438);
  border: 1px solid #3d7563;
  border-left: 4px solid #63d49f;
  display: grid;
  gap: 0.9rem;
  grid-template-columns: minmax(0, 1fr) minmax(12rem, auto);
  margin: 0.85rem 1rem 0;
  padding: 0.85rem;
}

.review-workspace .review-known-recommendation > div {
  min-width: 0;
}

.review-workspace .review-known-recommendation span {
  color: #8ce5bb;
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0.1em;
}

.review-workspace .review-known-recommendation h3 {
  color: #f2f7f4;
  margin: 0.18rem 0;
}

.review-workspace .review-known-recommendation p {
  color: #abc2b9;
  line-height: 1.45;
  margin: 0;
}

.review-workspace .review-known-recommendation button {
  background: #237653;
  border-color: #48a87e;
  white-space: normal;
}

.review-workspace .review-decision-grid {
  display: grid;
  gap: 0.75rem;
  grid-template-columns: minmax(0, 1fr);
  margin: 0.85rem 1rem 0;
}

.review-workspace .review-decision-grid .review-decision-block {
  margin: 0;
  min-width: 0;
}

.review-workspace .review-advanced-actions {
  background: #121821;
  border: 1px solid #303a4a;
  margin: 0.85rem 1rem 1rem;
}

.review-workspace .review-advanced-actions > summary,
.review-workspace .review-image-evidence > summary {
  cursor: pointer;
  display: grid;
  gap: 0.16rem;
  min-height: 2.75rem;
  padding: 0.7rem 0.8rem;
}

.review-workspace .review-advanced-actions > summary span {
  color: #e2e8f3;
  font-weight: 850;
}

.review-workspace .review-advanced-actions > summary small {
  color: #94a0b3;
}

.review-workspace .review-advanced-actions-body {
  border-top: 1px solid #303a4a;
  padding-bottom: 0.15rem;
}

.review-workspace .review-image-evidence {
  margin: 0.85rem 1rem 1rem;
  padding: 0;
}

.review-workspace .review-image-evidence > summary {
  color: #9fdfff;
  font-weight: 800;
}

.review-workspace .review-image-evidence-body {
  border-top: 1px solid rgba(93, 191, 237, 0.24);
  padding: 0.85rem;
}

@media (min-width: 1200px) {
  .review-workspace .review-decision-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1051px) {
  .review-workspace .review-summary {
    grid-template-columns: repeat(5, minmax(6rem, 1fr)) minmax(11rem, auto);
  }

  .review-workspace .review-side-rail {
    align-self: start;
    height: calc(100vh - 3.15rem);
    overflow: auto;
    position: sticky;
    top: 3.15rem;
  }
}

@media (min-width: 901px) {
  .review-workspace .review-browse-tools .review-queue {
    align-self: start;
    max-height: 24rem;
    position: static;
  }

  .review-workspace .review-browse-tools .review-panel-heading {
    background: #191d26;
    position: static;
    z-index: 2;
  }
}

.review-workspace .review-clear-filter {
  color: #91b7ff;
  font-weight: 800;
  white-space: nowrap;
}

.review-workspace .review-read-only-note {
  background: #17231f;
  border: 1px solid #315448;
  border-left: 3px solid #63d49f;
  border-radius: 0.4rem;
  color: #b9ddce;
  margin: 0.8rem 1rem;
  padding: 0.7rem 0.8rem;
}

/* Related spellings are navigation hints only. Native details keep the queue
   keyboard-accessible and every spelling retains its ordinary review link. */
.review-workspace .review-variant-group {
  border-bottom: 1px solid #2b3444;
}

.review-workspace .review-variant-group > summary {
  cursor: pointer;
  display: grid;
  gap: 0.18rem;
  list-style-position: inside;
  min-height: 2.75rem;
  padding: 0.65rem 0.7rem;
}

.review-workspace .review-variant-group > summary span {
  color: #dce6ff;
  font-weight: 800;
}

.review-workspace .review-variant-group > summary small {
  color: #93a1b8;
  overflow-wrap: anywhere;
}

.review-workspace .review-variant-assessment {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
}

.review-workspace .review-variant-assessment > span {
  border: 1px solid #46536b;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
  line-height: 1.2;
  max-width: 100%;
  overflow-wrap: anywhere;
  padding: 0.22rem 0.45rem;
}

.review-workspace .review-relationship-band--campaign_supported,
.review-workspace .review-family-category--campaign_index {
  background: #15372d;
  border-color: #34775f;
  color: #9cf2cb;
}

.review-workspace .review-relationship-band--strong,
.review-workspace .review-family-category--strong {
  background: #202943;
  border-color: #5668a6;
  color: #c5d0ff;
}

.review-workspace .review-relationship-band--campaign_target_only,
.review-workspace .review-relationship-band--possible,
.review-workspace .review-family-category--mixed,
.review-workspace .review-family-category--limited,
.review-workspace .review-family-category--unclear {
  background: #3b3118;
  border-color: #7e682d;
  color: #ffe09a;
}

.review-workspace .review-variant-group > nav {
  border-left: 2px solid #5969d8;
  display: grid;
  margin: 0 0.5rem 0.65rem;
  min-width: 0;
}

.review-workspace .review-variant-group .review-queue-item.is-unconfirmed small {
  color: #e7bd62;
}

.review-workspace .review-variant-group .review-queue-item.is-strong-relation small {
  color: #9fb5ff;
}

.review-workspace .review-variant-group .review-queue-item.is-group-anchor small {
  color: #b7c4d9;
}

.review-workspace .review-related-variants {
  background: #111923;
  border: 1px solid #34415a;
  border-left: 3px solid #7d89ff;
  border-radius: 0.48rem;
  margin: 0.85rem 1rem;
  min-width: 0;
  padding: 0.85rem;
}

.review-workspace .review-related-variants h3,
.review-workspace .review-related-variants p {
  margin: 0;
}

.review-workspace .review-related-variants p {
  color: #a9b5c9;
  line-height: 1.45;
  margin-top: 0.4rem;
}

.review-workspace .review-related-variants ul {
  display: grid;
  gap: 0.45rem;
  list-style: none;
  margin: 0.7rem 0 0;
  padding: 0;
}

.review-workspace .review-related-variants a {
  align-items: center;
  border: 1px solid #34415a;
  border-radius: 0.4rem;
  color: #a9c8ff;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.7rem;
  justify-content: space-between;
  min-height: 2.75rem;
  overflow-wrap: anywhere;
  padding: 0.55rem 0.7rem;
  text-decoration: none;
}

.review-workspace .review-related-variants a span {
  color: #93a1b8;
  font-size: 0.78rem;
}

.review-workspace .review-related-variant-link {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, auto);
}

.review-workspace .review-related-variant-link strong,
.review-workspace .review-filter-clearing-note {
  grid-column: 1 / -1;
}

.review-workspace .review-filter-clearing-note {
  color: #e7bd62;
  font-size: 0.72rem;
}

.review-workspace .review-related-variants a:focus-visible,
.review-workspace .review-variant-group > summary:focus-visible {
  outline: 3px solid #9dc2ff;
  outline-offset: 2px;
}

.review-workspace .review-family-decision {
  background: #0d1720;
  border: 1px solid #2f6171;
  border-radius: 0.48rem;
  margin-top: 0.85rem;
  padding: 0.8rem;
}

.review-workspace .review-family-decision h4 {
  color: #69d9f5;
  margin: 0;
}

.review-workspace .review-family-form {
  border-top: 1px solid #26394a;
  display: grid;
  gap: 0.65rem;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
}

.review-workspace .review-family-form label,
.review-workspace .review-family-form button,
.review-workspace .review-family-form fieldset {
  min-width: 0;
}

.review-workspace .review-family-members {
  border: 0;
  display: grid;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
}

.review-workspace .review-family-members legend {
  color: #dce6ff;
  font-weight: 800;
  margin-bottom: 0.45rem;
}

.review-workspace .review-family-select-tools {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 0.2rem;
}

.review-workspace .review-family-select-tools button {
  background: #13263a;
  border: 1px solid #3b6683;
  color: #cceeff;
  min-height: 2.75rem;
  padding: 0.5rem 0.75rem;
}

.review-workspace .review-family-select-tools output {
  color: #8fdff1;
  font-size: 0.82rem;
  font-weight: 800;
  margin-left: auto;
}

.review-workspace .review-family-member {
  align-items: center;
  background: #0a141e;
  border: 1px solid #2b4355;
  border-radius: 0.4rem;
  cursor: pointer;
  display: grid;
  gap: 0.65rem;
  grid-template-columns: auto minmax(0, 1fr);
  min-height: 3rem;
  padding: 0.55rem 0.65rem;
}

.review-workspace .review-family-member:has(input:checked) {
  background: #0c2a36;
  border-color: #20b9dc;
}

.review-workspace .review-family-member--possible {
  border-left: 3px solid #b99745;
}

.review-workspace .review-family-member input[type="checkbox"] {
  accent-color: #16c5e9;
  block-size: 1.25rem;
  inline-size: 1.25rem;
  margin: 0;
}

.review-workspace .review-family-member span,
.review-workspace .review-family-member small {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

.review-workspace .review-family-member small {
  color: #9aabc0;
  margin-top: 0.15rem;
}

.review-workspace .review-family-minimum,
.review-workspace .review-family-aftercare {
  color: #a9b5c9;
  font-size: 0.82rem;
  margin: 0;
}

.review-workspace .review-family-minimum.is-valid {
  color: #88dcb8;
}

.review-workspace .review-family-shared-action {
  background: #0a141e;
  border: 1px solid #2b4355;
  border-radius: 0.45rem;
  display: grid;
  gap: 0.6rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: 0.7rem;
}

.review-workspace .review-family-shared-action h5,
.review-workspace .review-family-shared-action button {
  grid-column: 1 / -1;
}

.review-workspace .review-family-shared-action h5 {
  color: #dce6ff;
  font-size: 0.94rem;
  margin: 0;
}

.review-workspace .review-family-shared-action button:disabled {
  cursor: not-allowed;
  filter: grayscale(0.65);
  opacity: 0.55;
}

.review-workspace .review-family-note {
  display: grid;
  gap: 0.35rem;
}

/* Extractor explainability stays readable alongside the transcript evidence.
   Scores are evidence points, not probabilities, so native meters compare the
   candidate's category signals without presenting a false percentage. */
.review-workspace .review-explainability {
  display: grid;
  gap: 0.8rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.85rem 1rem;
  min-width: 0;
}

.review-workspace .review-explainability-card {
  background: #111923;
  border: 1px solid #303b4d;
  border-radius: 0.48rem;
  min-width: 0;
  overflow-wrap: anywhere;
  padding: 0.85rem;
}

.review-workspace .review-explainability-heading {
  align-items: flex-start;
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  justify-content: space-between;
}

.review-workspace .review-explainability-heading h3,
.review-workspace .review-category-summary,
.review-workspace .review-explainability-empty {
  margin: 0;
}

.review-workspace .review-evidence-strength,
.review-workspace .review-category-selected {
  align-items: center;
  border: 1px solid #49556d;
  border-radius: 999px;
  display: inline-flex;
  flex-wrap: wrap;
  font-size: 0.78rem;
  gap: 0.35rem;
  line-height: 1.2;
  max-width: 100%;
  padding: 0.28rem 0.55rem;
}

.review-workspace .review-evidence-strength--strong {
  background: #15372d;
  border-color: #34775f;
  color: #9cf2cb;
}

.review-workspace .review-evidence-strength--mixed {
  background: #3b3118;
  border-color: #7e682d;
  color: #ffe09a;
}

.review-workspace .review-evidence-strength--limited {
  background: #3b2226;
  border-color: #7e404a;
  color: #ffb0bb;
}

.review-workspace .review-category-selected {
  background: #202943;
  color: #b9c8ff;
}

.review-workspace .review-evidence-reasons,
.review-workspace .review-category-scores {
  margin: 0.7rem 0 0;
  padding-inline-start: 1.15rem;
}

.review-workspace .review-evidence-reasons li + li,
.review-workspace .review-category-score + .review-category-score {
  margin-top: 0.48rem;
}

.review-workspace .review-category-summary,
.review-workspace .review-explainability-empty {
  color: #a9b5c9;
  line-height: 1.45;
  margin-top: 0.65rem;
}

.review-workspace .review-category-score {
  display: grid;
  gap: 0.25rem 0.6rem;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
}

.review-workspace .review-category-score > span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.review-workspace .review-category-score > strong {
  white-space: nowrap;
}

.review-workspace .review-category-score meter {
  grid-column: 1 / -1;
  height: 0.65rem;
  width: 100%;
}

.review-workspace #review-facts {
  scroll-margin-top: 1rem;
}

.review-workspace .review-spell-timeline {
  background: #111a2b;
  border: 1px solid #314261;
  border-radius: 0.85rem;
  margin: 0.9rem 1rem;
  padding: 0.9rem;
}

.review-workspace .review-spell-timeline > h3,
.review-workspace .review-spell-timeline > p {
  margin: 0;
}

.review-workspace .review-spell-timeline > p {
  margin-top: 0.35rem;
}

.review-workspace .review-spell-timeline-list {
  display: grid;
  gap: 0.7rem;
  list-style: none;
  margin: 0.8rem 0 0;
  padding: 0;
}

.review-workspace .review-spell-timeline-item {
  background: #172238;
  border: 1px solid #354969;
  border-radius: 0.7rem;
  min-width: 0;
  padding: 0.75rem;
}

.review-workspace .review-spell-timeline-heading {
  align-items: flex-start;
  display: flex;
  gap: 0.6rem;
  justify-content: space-between;
}

.review-workspace .review-spell-timeline-heading strong {
  overflow-wrap: anywhere;
}

.review-workspace .review-spell-timeline-heading span {
  background: #203354;
  border-radius: 999px;
  color: #b9d8ff;
  flex: 0 0 auto;
  font-size: 0.78rem;
  padding: 0.25rem 0.55rem;
}

.review-workspace .review-spell-timeline-facts {
  display: grid;
  gap: 0.4rem 0.75rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.7rem 0 0;
}

.review-workspace .review-spell-timeline-facts > div {
  min-width: 0;
}

.review-workspace .review-spell-timeline-facts dt {
  color: #91a1ba;
  font-size: 0.75rem;
  text-transform: uppercase;
}

.review-workspace .review-spell-timeline-facts dd {
  margin: 0.12rem 0 0;
  overflow-wrap: anywhere;
}

.review-workspace .review-spell-timeline-quotes {
  display: grid;
  gap: 0.6rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 0.75rem;
}

.review-workspace .review-spell-timeline-quotes > div {
  min-width: 0;
}

.review-workspace .review-spell-timeline-quotes blockquote {
  background: #10192a;
  border-left: 3px solid #4b72ad;
  margin: 0.35rem 0 0;
  max-height: 10rem;
  overflow: auto;
  overflow-wrap: anywhere;
  padding: 0.55rem 0.65rem;
  white-space: pre-wrap;
}

@media (max-width: 720px) {
  .base-directory-filters {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 0.45rem;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
  }

  .base-directory-filter {
    flex: 0 0 auto;
    scroll-snap-align: start;
  }
  .review-workspace .review-filter-summary {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-workspace .review-known-recommendation {
    grid-template-columns: minmax(0, 1fr);
    margin-inline: 0.65rem;
  }

  .review-workspace .review-known-recommendation button {
    width: 100%;
  }

  .review-workspace .review-decision-grid,
  .review-workspace .review-advanced-actions,
  .review-workspace .review-image-evidence {
    margin-inline: 0.65rem;
  }

  .review-workspace .review-mode-tabs {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-fact-statuses {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-clear-filter {
    align-items: center;
    display: inline-flex;
    min-height: 2.75rem;
  }

  .review-workspace .review-read-only-note {
    margin-inline: 0.65rem;
  }

  .review-workspace .review-related-variants {
    margin-inline: 0.65rem;
  }

  .review-workspace .review-related-variants a {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-workspace .review-related-variant-link {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-family-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-family-shared-action {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-family-select-tools output {
    flex-basis: 100%;
    margin-left: 0;
  }

  .review-workspace .review-explainability {
    grid-template-columns: minmax(0, 1fr);
    margin-inline: 0.65rem;
  }

  .review-workspace .review-spell-timeline {
    margin-inline: 0.65rem;
  }

  .review-workspace .review-spell-timeline-heading {
    flex-direction: column;
  }

  .review-workspace .review-spell-timeline-facts {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-spell-timeline-quotes {
    grid-template-columns: minmax(0, 1fr);
  }

  /* The family row's actions go column here (portal.css), where the tag
     picker's flex-basis of 320px turns into a 320px HEIGHT for a closed
     details, and the desktop flex-end pushes every control to the right
     edge. Three classes on purpose: the desktop rule sits later in this
     file at two, and same-specificity later wins. */
  .review-workspace .review-groups .review-group-actions {
    align-items: stretch;
  }

  .review-workspace .review-groups .review-group-actions > .review-tag-picker {
    flex-basis: auto;
  }

  .review-workspace .review-groups .review-group-actions > button[type="submit"] {
    align-self: stretch;
  }

  .review-workspace .rv-thead { display: none; }
  .review-workspace .rv-table, .review-workspace .rv-table tbody, .review-workspace .rv-table tr, .review-workspace .rv-table td { display: block; width: auto; }
  .review-workspace .rv-table .rv-pick { padding-left: 12px; }
  .review-workspace .rv-table .rv-times, .review-workspace .rv-table .rv-match { display: inline-block; text-align: left; margin: 4px 10px 0 0; }
  .review-workspace .rv-table .rv-move { text-align: left; }
  /* The desktop column widths are percentages; stacked, a 27% quote cell
     wrapped one word per line on a phone. */
  .review-workspace .rv-table .rv-pick, .review-workspace .rv-table .rv-claim,
  .review-workspace .rv-table .rv-kind, .review-workspace .rv-table .rv-move { width: auto; white-space: normal; }
  .review-workspace .rv-gtools { margin-left: 0; width: 100%; }
  .review-workspace .rv-landing .rv-sweep { margin-left: 0; }
  .review-workspace .rv-facts, .review-workspace .rv-facts tbody, .review-workspace .rv-facts tr, .review-workspace .rv-facts td { display: block; }
  .review-workspace .rv-facts thead { display: none; }
}

/* Spell & Fact Review ------------------------------------------------------
   Screenshot-inspired full review desk. The page keeps every server-rendered
   safety form and works without JavaScript; compact panels only reorganise
   the existing evidence and decisions. */
.review-workspace {
  --review-cyan: #14cdf5;
  --review-cyan-soft: #72e8ff;
  --review-cyan-dark: #073447;
  --review-gold: #f2bd22;
  --review-panel: #07131c;
  --review-panel-raised: #0a1822;
  --review-line: #173144;
  background:
    radial-gradient(circle at 76% 0, rgba(18, 117, 151, 0.13), transparent 34rem),
    linear-gradient(145deg, #030a10, #071019 58%, #040a10);
  color: #d8e4ec;
}

.review-workspace .review-appbar {
  background: rgba(3, 10, 15, 0.97);
  border-bottom-color: #153142;
  min-height: 3rem;
}

.review-workspace .portal-appmark,
.review-workspace .review-rail-mark {
  background: linear-gradient(145deg, #06aeda, #18d2f5);
  border-radius: 0.42rem;
  box-shadow: 0 0 1.35rem rgba(20, 205, 245, 0.22);
  color: #001017;
}

.review-workspace .review-wiki-link,
.review-workspace .review-eyebrow {
  color: var(--review-cyan-soft) !important;
}

.review-workspace .review-layout {
  display: grid;
  /* Keep the session-file rail useful without taking reading width away from
     transcript evidence. This is intentionally compact at desktop zooms: the
     review detail remains the primary workspace. */
  grid-template-columns: 12rem minmax(0, 1fr);
  margin: 0;
  max-width: none;
  min-height: calc(100vh - 3rem);
  width: 100%;
}

.review-workspace .review-side-rail {
  background: rgba(8, 18, 27, 0.92);
  border-right: 1px solid var(--review-line);
  display: block;
  height: calc(100vh - 3rem);
  overflow: auto;
  padding: 0.85rem 0.65rem;
  position: sticky;
  top: 3rem;
}

.review-workspace .review-rail-campaign {
  border-bottom-color: var(--review-line);
  padding-bottom: 0.8rem;
}

.review-workspace .review-rail-mark {
  height: 2.2rem;
  width: 2.2rem;
}

.review-workspace .review-rail-section {
  border-bottom-color: var(--review-line);
  padding: 0.85rem 0.15rem;
}

.review-workspace .review-file-state {
  border: 1px solid transparent;
  min-height: 3rem;
  padding: 0.5rem;
}

.review-workspace .review-file-state.is-active {
  background: linear-gradient(90deg, rgba(7, 69, 88, 0.65), rgba(9, 28, 40, 0.74));
  border-color: #176078;
  box-shadow: inset 2px 0 var(--review-cyan);
  color: var(--review-cyan-soft);
}

.review-workspace .review-page {
  margin: 0;
  max-width: none;
  min-width: 0;
  padding: clamp(0.55rem, 1vw, 0.9rem);
  width: 100%;
}

.review-workspace .review-session-card,
.review-workspace .review-review-grid,
.review-workspace .review-add-missing,
.review-workspace .review-complete-panel,
.review-workspace .review-lock-form {
  margin-left: 0;
  margin-right: 0;
  max-width: none;
  width: 100%;
}

.review-workspace .review-session-card {
  background: linear-gradient(105deg, rgba(7, 20, 29, 0.98), rgba(6, 15, 23, 0.98));
  border-color: var(--review-line);
  border-left: 2px solid var(--review-cyan);
  box-shadow: 0 0.7rem 2.2rem rgba(0, 0, 0, 0.18);
  margin-bottom: 0.55rem;
  padding: 0.75rem 0.85rem;
}

.review-workspace .review-session-heading h1 {
  color: #f1f8fb;
  font-size: 1.08rem;
}

.review-workspace .review-safe-note {
  background: #06121a;
  border-color: var(--review-line);
}

.review-workspace .review-release-gate {
  border-color: #284055;
  font-size: 0.74rem;
  margin: 0.55rem 0;
  padding: 0.5rem 0.65rem;
}

.review-workspace .review-dashboard-summary {
  background: transparent;
  border: 0;
  display: grid;
  gap: 0.38rem;
  grid-template-columns: repeat(7, minmax(6.4rem, 1fr)) minmax(10.5rem, auto);
  margin: 0.65rem 0 0.55rem;
  padding: 0;
}

.review-workspace .review-dashboard-stat {
  background: #0b1a24;
  border-color: #1a3242;
  border-radius: 0.34rem;
  display: grid;
  gap: 0.25rem;
  grid-template-columns: auto auto minmax(0, 1fr);
  min-height: 2.6rem;
  padding: 0.42rem 0.5rem;
}

.review-workspace .review-dashboard-stat strong {
  color: var(--review-cyan-soft);
  font-size: 0.92rem;
}

.review-workspace .review-dashboard-stat > span:last-child {
  color: #a8b8c4;
  font-size: 0.67rem;
  overflow-wrap: anywhere;
}

.review-workspace .review-dashboard-stat .review-stat-icon {
  background: #0b3b4d;
  color: var(--review-cyan);
  height: 1.35rem;
  width: 1.35rem;
}

.review-workspace .review-dashboard-stat.is-warning .review-stat-icon {
  background: #4b3b05;
  color: #ffd843;
}

.review-workspace .review-dashboard-stat[aria-current="page"] {
  background: #0c3343;
  border-color: var(--review-cyan);
  box-shadow: inset 0 -2px var(--review-cyan);
}

.review-workspace .review-dashboard-summary .review-summary-actions,
.review-workspace .review-dashboard-summary .review-inline-form,
.review-workspace .review-dashboard-summary button {
  height: 100%;
  min-height: 2.6rem;
  width: 100%;
}

.review-workspace .review-dashboard-summary button {
  background: linear-gradient(180deg, #0fc4ed, #0689b1);
  border-color: #45daf9;
  color: #001219;
}

/* ---- Ported from the signed-off mockup so the two read as one page ---- */

/* One column when the panel is a table: it carries its own list. */
.review-workspace .review-review-grid.is-single-column {
  display: block;
}

/* Compact decision controls so a row stays a row. */
.review-workspace .review-fact-decide form {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
}

.review-workspace .review-fact-decide button {
  font-size: 0.78rem;
  min-width: 8.5rem;
  padding: 0.3rem 0.7rem;
  width: 100%;
}

.review-workspace .review-fact-decide .review-decision-block {
  display: none;
}

.review-workspace .review-fact-claim .review-fact-question {
  color: #8fa3bd;
  font-size: 0.8rem;
  margin: 0.35rem 0 0;
}

/* The family table's column plan. portal.css sums pick/heard/conf/tier/kind
   to exactly 100% under table-layout: fixed, so the evidence column added
   for "What was said" had no width at all and spilled over the kind
   control. Six columns, still 100%. */
.review-workspace .review-group-pick { width: 24%; }
.review-workspace .review-group-heard,
.review-workspace .review-group-conf { width: 6%; }
.review-workspace .review-group-tier { width: 10%; }
.review-workspace .review-group-claim { width: 19%; white-space: normal; }
.review-workspace .review-group-kind { width: 21%; }
.review-workspace .review-group-move { width: 14%; }

/* The per-spelling "Move..." select, and the group head's Select all /
   Clear, both from the mockup. */
.review-workspace .review-group-move select {
  background: rgba(5, 13, 19, 0.85);
  border: 1px solid rgba(50, 101, 129, 0.45);
  border-radius: 0.4rem;
  color: #dbe7f3;
  font: 600 0.72rem/1.3 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  max-width: 100%;
  padding: 0.3rem 0.4rem;
}

.review-workspace .review-group-tools {
  align-items: center;
  display: inline-flex;
  gap: 0.4rem;
}

.review-workspace .review-group-tools button {
  background: transparent;
  border: 1px solid rgba(159, 220, 247, 0.35);
  border-radius: 999px;
  color: #9fdcf7;
  cursor: pointer;
  font: 700 0.62rem/1.4 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  letter-spacing: 0.06em;
  padding: 0.15rem 0.6rem;
  text-transform: uppercase;
}

.review-workspace .review-group-tools output {
  color: rgb(143, 163, 189);
  font: 600 0.66rem/1.4 var(--review-sans, "Segoe UI", system-ui, sans-serif);
}

.review-workspace .review-group-claim .review-fact-ev > summary {
  margin-top: 0;
}

/* The phone rules for the family row's actions live in the first 720px
   block above: the tests read that stylesheet by block position. */

/* The row's link target: the matcher's offers pre-ticked, and the vault
   search for when the best guess is wrong. A full line of the actions row. */
.review-workspace .review-group-link {
  flex: 1 1 100%;
  min-width: 0;
}

.review-workspace .review-group-link > summary {
  color: rgb(143, 163, 189);
  cursor: pointer;
  font: 700 0.62rem/1.4 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.review-workspace .review-group-link > summary b {
  color: #dbe7f3;
}

.review-workspace .review-group-link[open] > summary {
  margin-bottom: 0.45rem;
}

/* The group row's decision control, ported from the mockup's select. */
.review-workspace .review-group-actions {
  align-items: flex-end;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 0.9rem;
  padding: 0.6rem 0.75rem 0.7rem;
}

.review-workspace .review-group-decision,
.review-workspace .review-group-destination,
.review-workspace .review-group-canonical {
  color: #8fa3bd;
  display: flex;
  flex-direction: column;
  font: 700 0.62rem/1.4 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  gap: 0.25rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.review-workspace .review-group-decision select,
.review-workspace .review-group-destination select,
.review-workspace .review-group-canonical input {
  background: rgba(5, 13, 19, 0.85);
  border: 1px solid #58b9e6;
  border-radius: 5px;
  color: var(--review-text, #dce8f0);
  cursor: pointer;
  font: 400 0.86rem/1.3 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  letter-spacing: 0;
  min-width: 15rem;
  padding: 8px 10px;
  text-transform: none;
}

.review-workspace .review-group-actions > button[type="submit"] {
  align-self: flex-end;
  background: linear-gradient(90deg, #2a86b4, #6a5acd);
  border: 1px solid rgba(159, 220, 247, 0.5);
  border-radius: 6px;
  color: #04121c;
  font-size: 0.85rem;
  font-weight: 700;
  padding: 9px 16px;
  white-space: nowrap;
}

/* Facts as a dense table, ported from the mockup. */
.review-workspace .review-table-scroll {
  overflow-x: auto;
}

.review-workspace .review-fact-table {
  border-collapse: collapse;
  width: 100%;
}

.review-workspace .review-fact-table thead th {
  background: linear-gradient(180deg, #17486b, #0f3550);
  border-bottom: 1px solid rgba(222, 178, 76, 0.55);
  color: #dcebf5;
  font: 700 0.72rem/1 Georgia, "Times New Roman", serif;
  letter-spacing: 0.04em;
  padding: 9px 12px;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}

.review-workspace .review-fact-table tbody td {
  border-bottom: 1px solid rgba(50, 101, 129, 0.25);
  padding: 13px 12px;
  vertical-align: top;
}

.review-workspace .review-fact-row:hover {
  background: rgba(88, 185, 230, 0.04);
}

.review-workspace .review-fact-row.is-settled {
  background: rgba(111, 189, 123, 0.05);
}

.review-workspace .review-fact-id {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(50, 101, 129, 0.45);
  border-radius: 3px;
  font: 0.78rem ui-monospace, Consolas, monospace;
  padding: 2px 6px;
  white-space: nowrap;
}

.review-workspace .review-fact-conf {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  text-align: right;
  white-space: nowrap;
}

.review-workspace .review-fact-conf.is-high { color: #6fbd7b; }
.review-workspace .review-fact-conf.is-mid { color: #d3aa51; }
.review-workspace .review-fact-conf.is-low { color: #da6c6c; }
/* The verifier could not settle it: a word, not a number. */
.review-workspace .review-fact-conf.is-unverified,
.review-workspace td.rv-conf.is-unverified {
  color: #8f97ab;
  font-weight: 600;
  font-size: 0.82em;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
/* Linking: the existing page decides the family, so the section track and
   the main-tag step stay out of the way. */
/* Linking keeps the section track out of the way, but the main tag stays
   pickable: a name linked to a loot page may still carry Bestiary/Robot
   (Harry, 4 September). */
.review-workspace [data-rv-console-link] .rv-track { display: none !important; }

.review-workspace .review-fact-when {
  color: #8fa3bd;
  font-size: 0.84rem;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.review-workspace .review-fact-claim {
  max-width: 520px;
}

.review-workspace .review-fact-statement {
  font-size: 0.93rem;
}

.review-workspace .review-fact-ev > summary,
.review-workspace .review-fact-more > summary {
  align-items: center;
  color: #58b9e6;
  cursor: pointer;
  display: inline-flex;
  font-size: 0.8rem;
  gap: 6px;
  list-style: none;
  margin-top: 8px;
}

.review-workspace .review-fact-ev > summary::-webkit-details-marker,
.review-workspace .review-fact-more > summary::-webkit-details-marker {
  display: none;
}

.review-workspace .review-fact-ev > summary::before,
.review-workspace .review-fact-more > summary::before {
  content: "\25B8";
  font-size: 0.72rem;
  transition: transform 120ms;
}

.review-workspace .review-fact-ev[open] > summary::before,
.review-workspace .review-fact-more[open] > summary::before {
  transform: rotate(90deg);
}

@media (prefers-reduced-motion: reduce) {
  .review-workspace .review-fact-ev > summary::before,
  .review-workspace .review-fact-more > summary::before {
    transition: none;
  }
}

.review-workspace .review-fact-ev-body {
  background: #061019;
  border: 1px solid rgba(50, 101, 129, 0.3);
  border-radius: 4px;
  font-size: 0.82rem;
  margin-top: 9px;
  padding: 10px 12px;
}

.review-workspace .review-fact-ev-body blockquote {
  border-left: 2px solid #58b9e6;
  margin: 0;
  padding-left: 9px;
}

.review-workspace .review-fact-src {
  color: #8fa3bd;
  font: 0.74rem ui-monospace, Consolas, monospace;
  margin-top: 7px;
}

.review-workspace .review-fact-decide {
  white-space: nowrap;
}

.review-workspace .review-fact-status {
  color: #8fa3bd;
  display: block;
  font-size: 0.82rem;
  line-height: 1.4;
  max-width: 280px;
  min-width: 9rem;
  overflow-wrap: anywhere;
}

/* The detail row only exists when its disclosure is open. */
.review-workspace .review-fact-flow > td {
  border-bottom: 1px solid rgba(50, 101, 129, 0.25);
  padding: 0 12px 12px;
}

.review-workspace .review-fact-more-body {
  background: linear-gradient(180deg, rgba(20, 32, 61, 0.55), rgba(5, 7, 15, 0.5));
  border-left: 3px solid #8f7bff;
  margin-top: 9px;
  padding: 13px 16px;
}

@media (max-width: 900px) {
  .review-workspace .review-fact-table thead {
    display: none;
  }

  .review-workspace .review-fact-table tbody td {
    display: block;
    padding: 4px 12px;
  }

  .review-workspace .review-fact-row > td:first-child {
    padding-top: 12px;
  }

  .review-workspace .review-fact-conf {
    text-align: left;
  }
}


.review-workspace .review-session-card {
  border-radius: 6px;
  padding: 13px 18px;
}

.review-workspace .review-session-heading {
  align-items: flex-end;
  display: flex;
  flex-wrap: wrap;
  gap: 26px;
}

.review-workspace .review-session-heading > div:first-child {
  flex: 1 1 300px;
}

.review-workspace .review-eyebrow {
  color: #58b9e6;
  font: 700 0.64rem/1 var(--review-sans, "Segoe UI", system-ui, sans-serif);
  letter-spacing: 0.16em;
  margin: 0 0 5px;
  text-transform: uppercase;
}

.review-workspace .review-session-heading h1 {
  font: 400 1.75rem/1.1 Georgia, "Times New Roman", serif;
  margin: 0 0 3px;
}

.review-workspace .review-state-line {
  color: #8fa3bd;
  font-size: 0.82rem;
  margin: 0;
}

/* The session files the side rail used to hold. */
.review-workspace .review-source-files {
  color: #8fa3bd;
  display: flex;
  flex-wrap: wrap;
  font-size: 0.75rem;
  gap: 0.25rem 1.1rem;
  margin: 0.5rem 0 0;
}

.review-workspace .review-source-files span {
  align-items: center;
  display: inline-flex;
  gap: 0.35rem;
}

.review-workspace .review-source-files .is-active {
  color: var(--review-text, #dce8f0);
}

.review-workspace .review-source-files em {
  font-style: normal;
  opacity: 0.75;
}

/* Pill tabs sitting on top of the panel. */
.review-workspace .review-mode-tabs {
  display: flex;
  gap: 6px;
  margin: 12px 0 0;
}

.review-workspace .review-mode-tab {
  align-items: center;
  background: rgba(5, 13, 19, 0.6);
  border: 1px solid rgba(50, 101, 129, 0.45);
  border-bottom: 0;
  border-radius: 5px 5px 0 0;
  color: #8fa3bd;
  display: inline-flex;
  font-size: 0.86rem;
  gap: 0.5rem;
  padding: 8px 18px;
  text-decoration: none;
}

.review-workspace .review-mode-tab.is-active {
  background: linear-gradient(90deg, #1f6d95, #4a3f8f);
  border-color: rgba(143, 123, 255, 0.4);
  color: #fff;
  font-weight: 600;
}

.review-workspace .review-mode-tab small {
  display: none;
}

.review-workspace .review-mode-tab .review-mode-icon {
  display: none;
}

/* The filter strip belongs to the panel it filters. */
.review-workspace .review-filters {
  background: rgba(5, 13, 19, 0.55);
  border: 1px solid rgba(50, 101, 129, 0.45);
  border-bottom: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  padding: 10px 12px;
}

/* The signed-off design leads with one progress bar and compact chips.
   Values ported from the mockup so the two read as the same page. */
.review-workspace .review-progress-track {
  flex: 1 1 300px;
  min-width: 240px;
}

.review-workspace .review-summary-actions {
  flex: 0 0 auto;
}

.review-workspace .review-progress-bar {
  background: rgba(255, 255, 255, 0.07);
  border-radius: 4px;
  height: 8px;
  overflow: hidden;
}

.review-workspace .review-progress-bar i {
  background: #6fbd7b;
  display: block;
  height: 100%;
  transition: width 200ms ease;
}

@media (prefers-reduced-motion: reduce) {
  .review-workspace .review-progress-bar i {
    transition: none;
  }
}

.review-workspace .review-progress-legend {
  color: #8fa3bd;
  display: flex;
  font-size: 0.77rem;
  font-variant-numeric: tabular-nums;
  gap: 1rem;
  margin: 0.44rem 0 0;
}

.review-workspace .review-progress-legend b {
  color: var(--review-text, #dce8f0);
}

.review-workspace .review-chips {
  align-items: center;
  display: flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
}

.review-workspace .review-chips + .review-chips {
  margin-left: 0.85rem;
}

.review-workspace .review-chip-label {
  color: #8fa3bd;
  font-size: 0.66rem;
  letter-spacing: 0.14em;
  margin-right: 0.15rem;
  text-transform: uppercase;
}

.review-workspace .review-chip {
  align-items: center;
  background: #071620;
  border: 1px solid #163446;
  border-radius: 999px;
  color: inherit;
  display: inline-flex;
  font-size: 0.76rem;
  gap: 0.3rem;
  padding: 0.24rem 0.62rem;
  text-decoration: none;
}

.review-workspace .review-chip:hover {
  border-color: #2a86b4;
}

.review-workspace .review-chip.is-active {
  background: linear-gradient(180deg, #0fc4ed, #0689b1);
  border-color: #45daf9;
  color: #001219;
}

.review-workspace .review-chip b {
  font-variant-numeric: tabular-nums;
  opacity: 0.75;
}

.review-workspace .review-chip .review-category-icon {
  font-size: 0.8em;
}

.review-workspace .review-dashboard .review-categories {
  border-top-color: var(--review-line);
}



.review-workspace .review-dashboard .review-category[aria-current="page"] {
  background: #0a3343;
  border-color: var(--review-cyan);
  box-shadow: inset 0 -2px var(--review-cyan);
}

.review-workspace .review-review-grid {
  align-items: start;
  display: grid;
  gap: 0.55rem;
  /* Give the review queue 150px more room for long names while leaving the
     evidence stage fluid. The <=900px layout still stacks this column. */
  grid-template-columns: minmax(calc(14.5rem + 150px), calc(16rem + 150px)) minmax(0, 1fr);
  min-width: 0;
}

.review-workspace .review-queue-shell {
  align-self: start;
  background: rgba(6, 16, 24, 0.96);
  border: 1px solid var(--review-line);
  border-radius: 0.35rem;
  max-height: calc(100vh - 4.1rem);
  min-width: 0;
  overflow: auto;
  position: sticky;
  top: 3.55rem;
}

.review-workspace .review-queue-shell .review-mode-tabs {
  border-bottom: 1px solid var(--review-line);
  gap: 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}

.review-workspace .review-queue-shell .review-mode-tab {
  background: #081721;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  gap: 0.38rem;
  grid-template-columns: minmax(0, 1fr) auto;
  min-height: 2.75rem;
  padding: 0.5rem 0.6rem;
}

.review-workspace .review-queue-shell .review-mode-icon,
.review-workspace .review-queue-shell .review-mode-tab small {
  display: none;
}

.review-workspace .review-queue-shell .review-mode-tab[aria-current="page"] {
  background: #092330;
  border-bottom-color: var(--review-cyan);
  box-shadow: none;
}

.review-workspace .review-queue-shell .review-mode-tab strong {
  color: #cbeef7;
  font-size: 0.72rem;
}

.review-workspace .review-queue-shell .review-mode-tab > b {
  background: #0a3b4d;
  border: 0;
  color: var(--review-cyan-soft);
  min-height: 1.35rem;
  min-width: 1.35rem;
}

.review-workspace .review-queue-shell .review-filter-summary {
  background: #07131c;
  border: 0;
  border-bottom: 1px solid var(--review-line);
  border-radius: 0;
  font-size: 0.68rem;
  margin: 0;
  min-height: 2.35rem;
  padding: 0.4rem 0.55rem;
}

.review-workspace .review-queue-shell .review-fact-statuses {
  gap: 0.28rem;
  margin: 0;
  padding: 0.45rem;
}

.review-workspace .review-queue-shell .review-fact-status {
  min-height: 2.4rem;
  padding: 0.4rem;
}

.review-workspace .review-queue {
  background: transparent;
  border: 0;
  border-radius: 0;
  display: block;
  max-height: none;
  overflow: visible;
  padding: 0.42rem;
  position: static;
}

.review-workspace .review-queue .review-panel-heading {
  background: transparent;
  color: #d6e8ef;
  min-height: 2.2rem;
  padding: 0.4rem 0.45rem;
  position: static;
}

.review-workspace .review-queue .review-queue-item {
  border-bottom: 1px solid #112a39;
  border-left: 2px solid transparent;
  border-radius: 0.22rem;
  margin: 0;
  min-height: 3.25rem;
  padding: 0.58rem 0.62rem;
}

.review-workspace .review-queue .review-queue-item.is-active {
  background: linear-gradient(90deg, #0b3343, #081c27);
  border-left-color: var(--review-cyan);
}

.review-workspace .review-fact-queue-item strong {
  display: -webkit-box;
  font-size: 0.76rem;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.review-workspace .review-primary-stage,
.review-workspace .review-guided-stage {
  margin: 0;
  max-width: none;
  min-width: 0;
  width: 100%;
}

.review-workspace .review-card,
.review-workspace .review-fact-section {
  background: rgba(6, 16, 24, 0.98);
  border-color: var(--review-line);
  border-left: 2px solid var(--review-gold);
  border-radius: 0.35rem;
  margin: 0;
  max-width: none;
  min-width: 0;
  padding: 0;
  width: 100%;
}

.review-workspace .review-fact-section {
  border-left-color: var(--review-cyan);
}

.review-workspace .review-candidate-overview {
  display: grid;
  grid-template-columns: minmax(17rem, 0.72fr) minmax(24rem, 1.28fr);
  min-width: 0;
}

.review-workspace .review-candidate-summary {
  border-right: 1px solid var(--review-line);
  min-width: 0;
}

.review-workspace .review-card-title {
  background: #081822;
  border-bottom-color: var(--review-line);
  min-height: 3.25rem;
  padding: 0.65rem 0.75rem;
}

.review-workspace .review-card-title h2 {
  color: #f0f7fa;
  font-size: 1.05rem;
}

.review-workspace .review-status {
  background: #3e3204;
  border-color: #8a6c08;
  color: #ffd543;
}

.review-workspace .review-candidate-summary .review-evidence-grid {
  display: block;
  padding: 0.55rem 0.75rem;
}

.review-workspace .review-candidate-summary .review-facts div {
  border-bottom-color: #132c3b;
  grid-template-columns: 6.8rem minmax(0, 1fr);
  padding: 0.5rem 0.15rem;
}

.review-workspace .review-candidate-summary .review-facts dd small {
  color: #91a6b5;
  display: block;
  font-size: 0.68rem;
  line-height: 1.35;
  margin-top: 0.2rem;
}

.review-workspace .review-candidate-summary .review-facts dd a {
  color: var(--review-cyan);
  font-weight: 700;
}

.review-workspace .review-candidate-overview > .review-guided-evidence {
  background: #050f17;
  border: 0;
  border-radius: 0;
  margin: 0;
  min-width: 0;
  padding: 0.7rem;
}

.review-workspace .review-candidate-overview .review-guided-reason {
  font-size: 0.75rem;
  margin-bottom: 0.55rem;
  padding: 0.45rem 0.55rem;
}

.review-workspace .review-candidate-overview .review-guided-evidence blockquote {
  background: #0a1821;
  border-left-color: var(--review-cyan);
  font-family: ui-monospace, Consolas, monospace;
  font-size: 0.72rem;
  max-height: 6.2rem;
  overflow: auto;
  padding: 0.5rem 0.6rem;
}

.review-workspace .review-audio-evidence,
.review-workspace .review-image-evidence {
  background: #06141d;
  border: 1px solid var(--review-line);
  border-radius: 0;
  margin: 0;
  padding: 0;
}

.review-workspace .review-audio-evidence > summary,
.review-workspace .review-image-evidence > summary {
  align-items: center;
  color: #cbeaf3;
  cursor: pointer;
  display: flex;
  font-size: 0.76rem;
  font-weight: 800;
  justify-content: space-between;
  min-height: 2.55rem;
  padding: 0.5rem 0.75rem;
}

.review-workspace .review-audio-evidence > summary small {
  color: #8399a7;
  font-weight: 500;
}

.review-workspace .review-audio-evidence-body,
.review-workspace .review-image-evidence-body {
  border-top: 1px solid var(--review-line);
  color: #98aab5;
  font-size: 0.74rem;
  padding: 0.7rem 0.8rem;
}

.review-workspace .review-audio-evidence-body > p {
  margin: 0 0 0.55rem;
}

.review-workspace .review-audio-evidence-body > audio,
.review-workspace .review-audio-clip audio {
  display: block;
  height: 2.25rem;
  max-width: 100%;
  width: 100%;
}

.review-workspace .review-audio-clips {
  display: grid;
  gap: 0.55rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.review-workspace .review-audio-clip {
  align-items: center;
  background: #081923;
  border: 1px solid #16394a;
  display: grid;
  gap: 0.65rem;
  grid-template-columns: minmax(8rem, 0.28fr) minmax(13rem, 1fr);
  padding: 0.55rem;
}

.review-workspace .review-audio-clip > div {
  display: grid;
  gap: 0.12rem;
}

.review-workspace .review-audio-clip strong {
  color: #d6eef5;
}

.review-workspace .review-audio-clip small {
  color: #8ca6b4;
  font-family: ui-monospace, Consolas, monospace;
}

@media (max-width: 680px) {
  .review-workspace .review-audio-clip {
    grid-template-columns: minmax(0, 1fr);
  }
}

.review-workspace .review-decision-dock {
  background: #06131b;
  border: 1px solid #13728a;
  border-radius: 0.35rem;
  margin: 0.55rem;
  overflow: hidden;
}

.review-workspace .review-decision-dock > h3 {
  color: #dbeaf0;
  font-size: 0.78rem;
  margin: 0;
  padding: 0.52rem 0.7rem;
}

.review-workspace .review-decision-tabs {
  display: grid;
  gap: 0.4rem;
  grid-template-columns: repeat(6, minmax(6.8rem, 1fr));
  padding: 0 0.55rem 0.55rem;
}

.review-workspace .review-decision-tabs > form {
  display: flex;
  min-width: 0;
}

.review-workspace .review-decision-tab {
  align-items: center;
  background: #0b2230;
  border: 1px solid #173d50;
  border-radius: 0.25rem;
  color: #d7e5eb;
  display: flex;
  font-size: 0.74rem;
  font-weight: 800;
  justify-content: center;
  min-height: 2.55rem;
  min-width: 0;
  padding: 0.45rem 0.55rem;
  text-align: center;
  text-decoration: none;
  white-space: normal;
  width: 100%;
}

.review-workspace .review-decision-tab.is-active,
.review-workspace .review-ai-pick {
  background: linear-gradient(180deg, #0ebee6, #067da4);
  border-color: #42d9f7;
  color: #00151d;
}

.review-workspace .review-decision-tab.is-disabled {
  cursor: not-allowed;
  opacity: 0.42;
}

.review-workspace .review-decision-panel {
  border-top: 1px solid #13728a;
  padding: 0.55rem;
}

.review-workspace .review-new-destination {
  border-bottom: 1px solid #13728a;
  padding: 0.15rem 0.15rem 0.7rem;
  scroll-margin-top: 1rem;
}

.review-workspace .review-new-destination:target {
  background: #08202b;
  box-shadow: inset 0 0 0 2px #2ac9ed;
  padding: 0.55rem;
}

.review-workspace .review-new-destination-form {
  align-items: end;
  background: #0b1922;
  border: 1px solid #285266;
  border-radius: 0.35rem;
  display: grid;
  gap: 0.65rem;
  grid-template-columns: minmax(13rem, 1fr) minmax(14rem, 0.8fr) minmax(9rem, auto);
  padding: 0.75rem;
}

.review-workspace .review-new-destination-copy h3,
.review-workspace .review-new-destination-copy p {
  margin: 0;
}

.review-workspace .review-new-destination-copy p,
.review-workspace .review-new-destination-form > small {
  color: #93aab5;
}

.review-workspace .review-new-destination-form label {
  color: #c4dce5;
  display: grid;
  font-size: 0.74rem;
  font-weight: 800;
  gap: 0.3rem;
}

.review-workspace .review-new-destination-form select,
.review-workspace .review-new-destination-form button {
  min-height: 2.55rem;
}

.review-workspace .review-new-destination-form > small {
  grid-column: 1 / -1;
  line-height: 1.4;
}

.review-workspace .review-new-link {
  align-items: center;
  border: 1px solid #43926a;
  border-radius: 0.3rem;
  color: #e1f6e9;
  display: inline-flex;
  font-size: 0.74rem;
  font-weight: 800;
  justify-content: center;
  min-height: 2.55rem;
  padding: 0.45rem 0.7rem;
  text-align: center;
  text-decoration: none;
}

.review-workspace .review-accept-as-is {
  align-items: center;
  background: #08231d;
  border: 1px solid #287c65;
  border-left: 3px solid #51c79e;
  border-radius: 0.3rem;
  display: grid;
  gap: 0.75rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin: 0 0 0.65rem;
  padding: 0.7rem;
}

.review-workspace .review-accept-as-is h3 {
  color: #dff9ef;
  font-size: 0.88rem;
  margin: 0 0 0.18rem;
}

.review-workspace .review-accept-as-is p {
  color: #9fc6b8;
  font-size: 0.72rem;
  line-height: 1.45;
  margin: 0;
}

.review-workspace .review-accept-as-is button {
  background: #17694f;
  border-color: #5ad0a5;
  color: #f0fff9;
  min-height: 2.75rem;
  min-width: 13rem;
}

.review-workspace .review-accept-as-is button:is(:hover, :focus-visible) {
  background: #218464;
  border-color: #8aebc6;
}

.review-workspace .review-change-decision {
  align-items: center;
  background: #0a1c2a;
  border: 1px solid #246884;
  border-left: 3px solid #35bee8;
  border-radius: 0.35rem;
  display: grid;
  gap: 0.75rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin: 0.7rem;
  padding: 0.7rem;
}

.review-workspace .review-change-decision h3 {
  color: #e5f8ff;
  font-size: 0.88rem;
  margin: 0 0 0.18rem;
}

.review-workspace .review-change-decision p {
  color: #9bbccc;
  font-size: 0.72rem;
  line-height: 1.45;
  margin: 0;
}

.review-workspace .review-change-decision button {
  background: #0b6688;
  border-color: #49cef4;
  color: #f2fcff;
  min-height: 2.75rem;
  min-width: 12rem;
}

.review-workspace .review-change-decision button:is(:hover, :focus-visible) {
  background: #0f82a9;
  border-color: #86e6ff;
}

.review-workspace .review-decision-panel .review-decision-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}

.review-workspace .review-decision-panel .review-compact-actions,
.review-workspace .review-decision-panel .review-occurrences {
  margin-left: 0;
  margin-right: 0;
}

.review-workspace .review-decision-safety {
  color: #89a2ae;
  font-size: 0.7rem;
  margin: 0;
  padding: 0 0.7rem 0.55rem;
  text-align: center;
}

.review-workspace .review-ai-recommendation {
  background: linear-gradient(105deg, #062936, #08202d);
  border: 1px solid #168cab;
  border-left: 3px solid var(--review-cyan);
  border-radius: 0.3rem;
  margin: 0 0.55rem 0.55rem;
  padding: 0.7rem;
}

.review-workspace .review-ai-heading {
  display: grid;
  gap: 0.12rem;
}

.review-workspace .review-ai-heading span {
  color: var(--review-cyan);
  font-size: 0.62rem;
  font-weight: 900;
  letter-spacing: 0.12em;
}

.review-workspace .review-ai-heading strong {
  color: #f0fbff;
}

.review-workspace .review-ai-recommendation > p,
.review-workspace .review-ai-recommendation > small {
  color: #a9c0ca;
  display: block;
  font-size: 0.73rem;
  margin: 0.35rem 0 0;
}

.review-workspace .review-ai-strength {
  color: #8bdff2 !important;
  font-weight: 800;
}

.review-workspace .review-ai-confirm {
  align-items: end;
  display: grid;
  gap: 0.55rem;
  grid-template-columns: minmax(0, 1fr) auto;
  margin-top: 0.55rem;
}

.review-workspace .review-ai-new-destination {
  color: #c4dce5;
  display: grid;
  font-size: 0.74rem;
  font-weight: 800;
  gap: 0.3rem;
}

.review-workspace .review-ai-new-destination select {
  min-height: 2.55rem;
}

.review-workspace .review-learning-shadow {
  border-top: 1px solid #175064;
  color: #a8c0ca;
  font-size: 0.72rem;
  margin-top: 0.65rem;
  padding-top: 0.5rem;
}

.review-workspace .review-learning-shadow summary {
  color: #8fd9e9;
  cursor: pointer;
  font-weight: 800;
}

.review-workspace .review-known-recommendation {
  margin: 0.55rem;
}

.review-workspace .review-more-evidence,
.review-workspace .review-more-options {
  border-radius: 0;
  margin: 0;
  max-width: none;
}

.review-workspace .review-more-options:last-child {
  border-bottom: 0;
}

@media (max-width: 1260px) {
  .review-workspace .review-dashboard-summary {
    grid-template-columns: repeat(4, minmax(6.4rem, 1fr));
  }

  .review-workspace .review-dashboard-summary .review-summary-actions {
    grid-column: span 2;
  }

  .review-workspace .review-decision-tabs {
    grid-template-columns: repeat(3, minmax(7rem, 1fr));
  }
}

@media (max-width: 1050px) {
  .review-workspace .review-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-side-rail {
    display: none;
  }
}

@media (max-width: 900px) {
  .review-workspace .review-review-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-queue-shell {
    max-height: none;
    overflow: visible;
    position: static;
  }

  .review-workspace .review-queue {
    display: flex;
    gap: 0.3rem;
    overflow-x: auto;
  }

  .review-workspace .review-queue .review-panel-heading {
    flex: 0 0 7rem;
  }

  .review-workspace .review-queue .review-queue-item {
    flex: 0 0 min(13rem, 72vw);
  }

  .review-workspace .review-candidate-overview {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-candidate-summary {
    border-bottom: 1px solid var(--review-line);
    border-right: 0;
  }
}

/* Checker save-and-next feedback. These styles only activate for the
   server-marked review workspace, so ordinary portal forms keep their native
   submit and navigation behaviour. */
.review-workspace .review-live {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

.review-workspace .review-undo,
.review-workspace .review-save-recovery {
  align-items: center;
  background: #092532;
  border: 1px solid #2ca9ca;
  box-shadow: 0 0.45rem 1.2rem rgba(0, 0, 0, 0.28);
  color: #dff8ff;
  display: flex;
  gap: 0.75rem;
  justify-content: space-between;
  margin: 0.75rem 0 0;
  padding: 0.65rem 0.8rem;
  position: sticky;
  top: 3.45rem;
  z-index: 12;
}

.review-workspace .review-undo form {
  flex: 0 0 auto;
  margin: 0;
}

.review-workspace .review-undo {
  bottom: 1rem;
  left: auto;
  margin: 0;
  max-width: min(34rem, calc(100vw - 2rem));
  position: fixed;
  right: 1rem;
  top: auto;
  width: max-content;
}

.review-workspace .review-undo button,
.review-workspace .review-save-recovery button {
  margin: 0;
  min-height: 2.75rem;
  white-space: nowrap;
}

.review-workspace .review-save-recovery {
  background: #321e0b;
  border-color: #dc9b3e;
  color: #fff0d1;
  position: relative;
  top: auto;
}

.review-workspace [data-review-refresh-root].is-review-saving {
  cursor: progress;
}

.review-workspace [data-review-refresh-root].is-review-saving
  .review-primary-stage {
  opacity: 0.72;
  transition: opacity 140ms ease;
}

.review-workspace form[data-review-async-action][aria-busy="true"]
  button[type="submit"] {
  cursor: progress;
}

.review-workspace form[data-review-async-action][aria-busy="true"]
  button[type="submit"]::after {
  animation: review-saving-spin 700ms linear infinite;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-radius: 50%;
  border-top-color: #ffffff;
  content: "";
  display: inline-block;
  height: 0.8rem;
  margin-left: 0.45rem;
  vertical-align: -0.1rem;
  width: 0.8rem;
}

.review-workspace .review-save-indeterminate
  form[data-review-async-action] {
  opacity: 0.62;
}

@keyframes review-saving-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (max-width: 540px) {
  .review-workspace .review-undo,
  .review-workspace .review-save-recovery {
    align-items: stretch;
    flex-direction: column;
    top: 3.15rem;
  }

  .review-workspace .review-undo {
    bottom: 0.75rem;
    left: 0.75rem;
    max-width: none;
    right: 0.75rem;
    top: auto;
    width: auto;
  }

  .review-workspace .review-save-recovery {
    top: auto;
  }

  .review-workspace .review-undo button,
  .review-workspace .review-undo form,
  .review-workspace .review-save-recovery button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .review-workspace [data-review-refresh-root].is-review-saving
    .review-primary-stage {
    transition: none;
  }

  .review-workspace form[data-review-async-action][aria-busy="true"]
    button[type="submit"]::after {
    animation: none;
  }
}

/* Checker answer wizard ----------------------------------------------------
   The question is the visual end of each evidence card. One explicit path is
   shown at a time; the underlying ordinary forms remain usable when script is
   unavailable. Campaign matches use radio cards so name, type and destination
   stay visible before a reviewer commits the choice. */
.review-workspace .review-decision-wizard,
.review-workspace .review-family-action-wizard {
  background: #06151e;
  border: 1px solid #1a6179;
  border-top: 3px solid #27bde2;
  box-shadow: 0 -0.35rem 1.1rem rgba(0, 0, 0, 0.22);
  margin: 0.65rem 0 0;
  padding: clamp(0.7rem, 1.2vw, 1rem);
}

.review-workspace .review-decision-wizard > h3,
.review-workspace .review-family-action-wizard > h5,
.review-workspace .review-wizard-question {
  color: #e8f8fc;
  font-size: clamp(0.95rem, 1.4vw, 1.16rem);
  margin: 0 0 0.25rem;
}

.review-workspace .review-decision-wizard > p,
.review-workspace .review-family-action-wizard > p,
.review-workspace .review-wizard-help {
  color: #98b2be;
  font-size: 0.76rem;
  line-height: 1.5;
  margin: 0 0 0.7rem;
}

.review-workspace .review-wizard-choices {
  border: 0;
  display: grid;
  gap: 0.5rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0;
  min-width: 0;
  padding: 0;
}

.review-workspace .review-wizard-choices > legend {
  color: #bcd3dc;
  font-size: 0.72rem;
  font-weight: 850;
  margin-bottom: 0.45rem;
  padding: 0;
}

.review-workspace .review-wizard-choice {
  align-items: start;
  background: #0a202c;
  border: 1px solid #245066;
  border-radius: 0.35rem;
  color: #d9e8ed;
  cursor: pointer;
  display: grid;
  gap: 0.58rem;
  grid-template-columns: auto minmax(0, 1fr);
  min-height: 4.4rem;
  padding: 0.7rem;
  transition: background-color 140ms ease, border-color 140ms ease,
    box-shadow 140ms ease;
}

.review-workspace .review-wizard-choice:is(:hover, :focus-within),
.review-workspace .review-wizard-choice.is-selected,
.review-workspace .review-wizard-choice:has(input:checked) {
  background: #0b3040;
  border-color: #45c9e9;
  box-shadow: inset 3px 0 0 #27bde2;
}

.review-workspace .review-wizard-choice input[type="radio"],
.review-workspace .review-entity-result input[type="radio"] {
  accent-color: #21bfe8;
  height: 1.05rem;
  margin: 0.08rem 0 0;
  width: 1.05rem;
}

.review-workspace .review-wizard-choice-copy {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}

.review-workspace .review-wizard-choice-copy strong {
  color: #effbff;
  font-size: 0.8rem;
}

.review-workspace .review-wizard-choice-copy small,
.review-workspace .review-wizard-choice-effect {
  color: #95aeba;
  font-size: 0.68rem;
  line-height: 1.42;
}

.review-workspace .review-wizard-panel {
  background: #081923;
  border: 1px solid #24566b;
  border-radius: 0.35rem;
  margin-top: 0.65rem;
  min-width: 0;
  padding: clamp(0.7rem, 1.1vw, 0.9rem);
}

.review-workspace .review-wizard-panel[hidden] {
  display: none !important;
}

.review-workspace .review-wizard-panel > :first-child {
  margin-top: 0;
}

.review-workspace .review-wizard-panel > :last-child {
  margin-bottom: 0;
}

.review-workspace .review-wizard-panel h4 {
  color: #e1f3f8;
  font-size: 0.9rem;
  margin: 0 0 0.35rem;
}

.review-workspace .review-wizard-panel label:not(.review-entity-result),
.review-workspace .review-entity-search-label {
  color: #c6dce4;
  display: grid;
  font-size: 0.74rem;
  font-weight: 800;
  gap: 0.3rem;
}

.review-workspace .review-wizard-panel input:is([type="text"], [type="search"]),
.review-workspace .review-wizard-panel select,
.review-workspace .review-wizard-panel textarea,
.review-workspace input[data-review-match-search],
.review-workspace input[data-review-entity-search] {
  background: #041018;
  border: 1px solid #315f73;
  border-radius: 0.28rem;
  box-sizing: border-box;
  color: #edf9fc;
  min-height: 2.75rem;
  padding: 0.58rem 0.7rem;
  width: 100%;
}

.review-workspace .review-wizard-panel input:is([type="text"], [type="search"]):focus,
.review-workspace .review-wizard-panel select:focus,
.review-workspace .review-wizard-panel textarea:focus,
.review-workspace input[data-review-match-search]:focus,
.review-workspace input[data-review-entity-search]:focus {
  border-color: #56d7f4;
  box-shadow: 0 0 0 2px rgba(39, 189, 226, 0.18);
  outline: 0;
}

.review-workspace .review-wizard-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: flex-end;
  margin-top: 0.7rem;
}

.review-workspace .review-wizard-actions button {
  min-height: 2.75rem;
}

.review-workspace .review-wizard-advanced {
  border-top: 1px solid #1c4253;
  margin-top: 0.75rem;
  padding-top: 0.65rem;
}

.review-workspace .review-wizard-advanced > summary {
  color: #91ccdc;
  cursor: pointer;
  font-size: 0.74rem;
  font-weight: 800;
  min-height: 2.75rem;
  padding: 0.75rem 0.25rem;
}

.review-workspace .review-wizard-progress {
  align-items: center;
  border-top: 1px solid #173a49;
  color: #91a9b4;
  display: flex;
  font-size: 0.7rem;
  gap: 0.65rem;
  justify-content: space-between;
  margin-top: 0.75rem;
  padding-top: 0.65rem;
}

/* The former Correct/Alias/New strip looked interactive but mostly contained
   same-page anchors. It must not reappear when the semantic wizard is present. */
.review-workspace .review-decision-dock.review-decision-wizard
  .review-decision-tabs,
.review-workspace .review-decision-dock:has(> .review-decision-wizard)
  .review-decision-tabs {
  display: none;
}

.review-workspace .review-entity-search,
.review-workspace [data-review-match-picker] {
  min-width: 0;
}

.review-workspace .review-entity-search-results,
.review-workspace [data-review-match-results],
.review-workspace [data-review-entity-results] {
  display: grid;
  gap: 0.45rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 0.55rem;
  max-height: min(23rem, 48vh);
  min-width: 0;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 0.12rem;
}

.review-workspace .review-entity-result {
  align-items: start;
  background: #071822;
  border: 1px solid #254b5e;
  border-radius: 0.3rem;
  cursor: pointer;
  display: grid;
  gap: 0.6rem;
  grid-template-columns: auto minmax(0, 1fr);
  min-height: 4.8rem;
  min-width: 0;
  padding: 0.65rem;
}

.review-workspace .review-entity-result[hidden] {
  display: none !important;
}

.review-workspace .review-entity-result:is(:hover, :focus-within),
.review-workspace .review-entity-result.is-selected,
.review-workspace .review-entity-result:has(input:checked) {
  background: #0a2b39;
  border-color: #48cce9;
  box-shadow: inset 3px 0 0 #27bde2;
}

.review-workspace .review-entity-result-copy {
  display: grid;
  gap: 0.18rem;
  min-width: 0;
}

.review-workspace .review-entity-result-copy strong {
  color: #eefbff;
  font-size: 0.82rem;
  overflow-wrap: anywhere;
}

.review-workspace .review-entity-result-meta {
  color: #62d3ec;
  font-size: 0.65rem;
  font-weight: 850;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.review-workspace .review-entity-result-path,
.review-workspace .review-entity-result-reason {
  color: #8fa8b4;
  display: block;
  font-size: 0.67rem;
  line-height: 1.38;
  overflow-wrap: anywhere;
}

.review-workspace .review-entity-result-reason {
  color: #79baca;
}

.review-workspace .review-entity-search-status,
.review-workspace .review-entity-search-empty {
  color: #91aab5;
  font-size: 0.7rem;
  line-height: 1.45;
  margin: 0.42rem 0 0;
}

.review-workspace .review-entity-search-empty {
  border: 1px dashed #31566a;
  grid-column: 1 / -1;
  padding: 0.7rem;
}

.review-workspace .is-searching input[data-review-match-search],
.review-workspace .is-searching input[data-review-entity-search] {
  border-color: #38bddc;
}

.review-workspace [data-review-match-results][aria-busy="true"],
.review-workspace [data-review-entity-results][aria-busy="true"] {
  opacity: 0.72;
}

.review-workspace .review-family-decision {
  border-top-color: #27bde2;
  box-shadow: 0 0.35rem 1rem rgba(0, 0, 0, 0.2);
  margin-bottom: 0.7rem;
}

.review-workspace .review-family-shared-action
  :is(.review-entity-search-results, [data-review-match-results], [data-review-entity-results]) {
  grid-column: 1 / -1;
  width: 100%;
}

@media (max-width: 860px) {
  .review-workspace .review-wizard-choices {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-workspace .review-entity-search-results,
  .review-workspace [data-review-match-results],
  .review-workspace [data-review-entity-results] {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 540px) {
  .review-workspace .review-decision-wizard,
  .review-workspace .review-family-action-wizard {
    margin-inline: -0.1rem;
    padding: 0.62rem;
  }

  .review-workspace .review-wizard-choices {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-wizard-choice {
    min-height: 3.8rem;
  }

  .review-workspace .review-wizard-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-wizard-actions button,
  .review-workspace .review-wizard-panel form > button {
    width: 100%;
  }

  .review-workspace .review-wizard-progress {
    align-items: start;
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  .review-workspace .review-wizard-choice {
    transition: none;
  }
}

@media (max-width: 720px) {
  .review-workspace .review-page {
    padding: 0.42rem;
  }

  .review-workspace .review-dashboard-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-workspace .review-dashboard-summary .review-summary-actions {
    grid-column: 1 / -1;
  }

  .review-workspace .review-decision-tabs,
  .review-workspace .review-decision-panel .review-decision-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .review-workspace .review-decision-panel .review-compact-actions,
  .review-workspace .review-decision-panel .review-occurrence {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-new-destination-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-ai-confirm {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-new-destination-form > small {
    grid-column: auto;
  }

  .review-workspace .review-accept-as-is {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-accept-as-is button {
    min-width: 0;
    width: 100%;
  }

  .review-workspace .review-change-decision {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-change-decision button {
    min-width: 0;
    width: 100%;
  }
}

@media (max-width: 420px) {
  .review-workspace .review-decision-tabs {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Guided session review -----------------------------------------------------
   The default view is one decision at a time. Browsing, diagnostics, and the
   longer correction forms remain available as disclosures without competing
   with the recommended action. Every selector is review-scoped so the public
   campaign wiki keeps its own dashboard layout. */
.review-workspace .review-layout {
  display: block;
  grid-template-columns: minmax(0, 1fr);
  margin-inline: 0;
  max-width: none;
  min-height: calc(100vh - 3.15rem);
  min-width: 0;
  width: 100%;
}

.review-workspace .review-side-rail {
  display: none;
}

.review-workspace .review-page {
  box-sizing: border-box;
  margin-inline: 0;
  max-width: none;
  min-width: 0;
  padding: clamp(0.7rem, 1.4vw, 1.2rem);
  width: 100%;
}

.review-workspace .review-guided-shell,
.review-workspace .review-guided-task,
.review-workspace .review-stage,
.review-workspace .review-fact-section,
.review-workspace .review-add-missing,
.review-workspace .review-complete-panel,
.review-workspace .review-lock-form {
  box-sizing: border-box;
  margin-left: auto;
  margin-right: auto;
  max-width: 74rem;
  width: 100%;
}

.review-workspace .review-main-grid {
  display: block;
  grid-template-columns: minmax(0, 1fr);
}

.review-workspace .review-session-card {
  margin: 0 auto 0.65rem;
  max-width: 74rem;
  padding: 0.75rem 0.85rem;
}

.review-workspace .review-guided-progress {
  align-items: stretch;
  background: #151a23;
  border: 1px solid #303a4a;
  border-radius: 0.55rem;
  box-sizing: border-box;
  display: grid;
  gap: 0.35rem;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr);
  margin: 0 auto 0.65rem;
  max-width: 74rem;
  padding: 0.35rem;
  width: 100%;
}

.review-workspace .review-progress-step {
  align-items: center;
  border: 1px solid transparent;
  border-radius: 0.45rem;
  box-sizing: border-box;
  color: #aeb8c8;
  display: grid;
  gap: 0.55rem;
  grid-template-columns: auto minmax(0, 1fr);
  min-height: 2.75rem;
  min-width: 0;
  padding: 0.45rem 0.55rem;
  text-decoration: none;
}

.review-workspace .review-progress-step > span:last-child {
  display: grid;
  min-width: 0;
}

.review-workspace .review-progress-step strong {
  color: #d6deea;
  font-size: 0.78rem;
  overflow-wrap: anywhere;
}

.review-workspace .review-progress-step small {
  color: #8e9bad;
  font-size: 0.68rem;
}

.review-workspace .review-progress-number {
  align-items: center;
  background: #262f3d;
  border: 1px solid #3d495d;
  border-radius: 50%;
  color: #b8c4d7;
  display: inline-flex;
  font-size: 0.72rem;
  font-weight: 900;
  height: 1.8rem;
  justify-content: center;
  width: 1.8rem;
}

.review-workspace .review-progress-step.is-current {
  background: #222b43;
  border-color: #6878da;
  box-shadow: inset 0 -2px #7485ff;
  color: #fff;
}

.review-workspace .review-progress-step.is-current strong,
.review-workspace .review-progress-step.is-current small {
  color: #fff;
}

.review-workspace .review-progress-step.is-current .review-progress-number {
  background: #5268db;
  border-color: #8e9cff;
  color: #fff;
}

.review-workspace .review-progress-arrow {
  align-items: center;
  color: #667287;
  display: flex;
  justify-content: center;
  padding-inline: 0.1rem;
}

@media (hover: hover) {
  .review-workspace .review-progress-step:not(.is-current):hover {
    background: #1e2634;
    border-color: #46546b;
  }
}

.review-workspace .review-session-heading {
  align-items: center;
  gap: 0.65rem;
}

.review-workspace .review-session-heading h1 {
  font-size: 1.12rem;
}

.review-workspace .review-eyebrow {
  font-size: 0.62rem;
  margin: 0;
}

.review-workspace .review-safe-note {
  padding: 0.45rem 0.65rem;
}

.review-workspace .review-mode-tabs {
  gap: 0.5rem;
  margin-top: 0.65rem;
}

.review-workspace .review-mode-tab {
  min-height: 2.75rem;
  padding: 0.5rem 0.6rem;
}

.review-workspace .review-mode-icon {
  min-height: 2rem;
  min-width: 2rem;
}

.review-workspace .review-summary {
  gap: 0.42rem;
  margin: 0.6rem 0 0.45rem;
}

.review-workspace .review-stat {
  min-height: 2.75rem;
  padding: 0.45rem 0.58rem;
}

.review-workspace .review-progress-summary {
  margin-bottom: 0.55rem;
  padding: 0.5rem 0.65rem;
}

.review-workspace .review-guided-heading {
  align-items: flex-start;
  display: flex;
  gap: 0.75rem;
  justify-content: space-between;
  margin-bottom: 0.75rem;
}

.review-workspace .review-guided-heading h2,
.review-workspace .review-guided-heading p {
  margin-bottom: 0;
  margin-top: 0;
}

.review-workspace .review-guided-step {
  color: #91a5c3;
  font-size: 0.75rem;
  font-weight: 800;
  white-space: nowrap;
}

.review-workspace .review-guided-stage {
  margin-inline: auto;
  max-width: 74rem;
  min-width: 0;
  width: 100%;
}

.review-workspace .review-guided-main-grid {
  align-items: start;
  display: grid;
  gap: 0.8rem;
  grid-template-areas: "up-next stage";
  grid-template-columns: minmax(13rem, 16rem) minmax(0, 1fr);
  margin-inline: auto;
  max-width: 92rem;
  min-width: 0;
  width: 100%;
}

.review-workspace .review-guided-main-grid > .review-guided-stage {
  grid-area: stage;
  margin-inline: 0;
}

.review-workspace .review-up-next {
  align-self: start;
  background: #171c25;
  border: 1px solid #303a4a;
  border-radius: 0.5rem;
  box-sizing: border-box;
  grid-area: up-next;
  height: auto;
  max-height: calc(100vh - 4.5rem);
  min-width: 0;
  overflow: auto;
  padding: 0.45rem;
  position: sticky;
  top: 3.75rem;
  width: 100%;
}

.review-workspace .review-up-next-heading {
  align-items: center;
  color: #dce4f1;
  display: flex;
  font-size: 0.76rem;
  font-weight: 850;
  justify-content: space-between;
  letter-spacing: 0.04em;
  min-height: 2.25rem;
  padding: 0.35rem 0.45rem 0.5rem;
  text-transform: uppercase;
}

.review-workspace .review-up-next-heading strong {
  align-items: center;
  background: #26334d;
  border-radius: 999px;
  color: #a9c6ff;
  display: inline-flex;
  justify-content: center;
  min-height: 1.65rem;
  min-width: 1.65rem;
  padding-inline: 0.4rem;
}

.review-workspace .review-up-next-list {
  display: grid;
  gap: 0.25rem;
  min-width: 0;
}

.review-workspace .review-up-next .review-queue-item {
  box-sizing: border-box;
  font-size: 0.82rem;
  margin: 0;
  min-height: 2.75rem;
  min-width: 0;
  padding: 0.55rem 0.65rem;
}

.review-workspace .review-up-next .review-queue-item small {
  font-size: 0.73rem;
  line-height: 1.35;
}

.review-workspace .review-up-next-browse {
  align-items: center;
  border-top: 1px solid #303a4a;
  color: #9fc2ff;
  display: flex;
  font-size: 0.75rem;
  font-weight: 800;
  justify-content: center;
  margin-top: 0.4rem;
  min-height: 2.75rem;
  padding: 0.45rem 0.55rem;
  text-align: center;
  text-decoration: none;
}

.review-workspace .review-match-summary {
  align-items: center;
  background: #151d27;
  border: 1px solid #303e52;
  border-radius: 0.5rem;
  display: grid;
  gap: 0.65rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0.8rem 1rem;
  padding: 0.65rem 0.75rem;
}

.review-workspace .review-match-summary > div {
  min-width: 0;
}

.review-workspace .review-match-summary dt {
  color: #8e9aad;
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.review-workspace .review-match-summary dd {
  color: #e0e7f2;
  font-size: 0.88rem;
  font-weight: 800;
  margin: 0.18rem 0 0;
  overflow-wrap: anywhere;
}

.review-workspace .review-match-summary dd small {
  color: #91a0b4;
  display: block;
  font-size: 0.75rem;
  font-weight: 500;
  margin-top: 0.12rem;
}

.review-workspace .review-match-arrow {
  align-items: center;
  background: #26324a;
  border-radius: 50%;
  color: #9db4ff;
  display: inline-flex;
  height: 1.35rem;
  justify-content: center;
  margin-right: 0.25rem;
  vertical-align: middle;
  width: 1.35rem;
}

.review-workspace .review-guided-evidence {
  background: #101722;
  border: 1px solid #2d3d55;
  border-radius: 0.5rem;
  margin: 0.8rem 1rem;
  padding: 0.75rem;
}

.review-workspace .review-guided-evidence h3,
.review-workspace .review-guided-evidence p {
  margin-top: 0;
}

.review-workspace .review-guided-reason {
  background: #182434;
  border-left: 3px solid #68a6e8;
  color: #c7d5e7;
  line-height: 1.5;
  margin-bottom: 0.7rem;
  padding: 0.55rem 0.65rem;
}

.review-workspace .review-known-evidence .review-guided-reason {
  background: #172720;
  border-left-color: #63d49f;
  color: #c3e0d3;
}

.review-workspace .review-guided-evidence blockquote {
  border-left: 3px solid #6876ff;
  color: #bdc8d9;
  line-height: 1.5;
  margin: 0;
  overflow-wrap: anywhere;
  padding: 0.6rem 0.7rem;
  white-space: pre-wrap;
}

.review-workspace .review-guided-evidence blockquote + blockquote {
  margin-top: 0.55rem;
}

.review-workspace .review-guided-evidence > small {
  color: #8f9db0;
  display: block;
  margin-top: 0.55rem;
}

.review-workspace .review-quick-decisions {
  display: grid;
  gap: 0.65rem;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  margin: 0.8rem 1rem;
}

.review-workspace .review-quick-decisions > form,
.review-workspace .review-quick-decision {
  background: #151d27;
  border: 1px solid #334254;
  border-radius: 0.55rem;
  display: grid;
  gap: 0.45rem;
  min-width: 0;
  padding: 0.75rem;
}

.review-workspace .review-quick-decisions button,
.review-workspace .review-quick-decision button {
  min-height: 2.75rem;
  white-space: normal;
  width: 100%;
}

.review-workspace .review-quick-decisions p,
.review-workspace .review-quick-decision p {
  color: #9caabd;
  line-height: 1.45;
  margin: 0;
}

.review-workspace .review-fact-card .review-quick-decisions > form {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.review-workspace .review-guided-actions {
  display: grid;
  gap: 0.6rem;
  grid-template-columns: minmax(0, 1fr) minmax(9rem, auto);
  margin: 0;
  min-width: 0;
}

.review-workspace .review-guided-actions button {
  min-height: 2.75rem;
  white-space: normal;
  width: 100%;
}

.review-workspace .review-guided-actions button.secondary,
.review-workspace .review-quick-decisions button.secondary {
  background: #1a2230;
  border-color: #455269;
  color: #c5cfdd;
}

.review-workspace .review-browse-tools,
.review-workspace .review-more-options,
.review-workspace .review-fact-diagnostics,
.review-workspace .review-more-evidence {
  background: #141a23;
  border: 1px solid #303a4a;
  border-radius: 0.5rem;
  box-sizing: border-box;
  margin: 0.7rem auto;
  max-width: 74rem;
  width: 100%;
}

.review-workspace .review-browse-tools > summary,
.review-workspace .review-more-options > summary,
.review-workspace .review-fact-diagnostics > summary,
.review-workspace .review-more-evidence > summary {
  align-items: center;
  color: #dce5f3;
  cursor: pointer;
  display: flex;
  font-weight: 800;
  gap: 0.65rem;
  justify-content: space-between;
  min-height: 2.75rem;
  padding: 0.65rem 0.8rem;
}

.review-workspace .review-browse-tools > summary small,
.review-workspace .review-more-options > summary small,
.review-workspace .review-fact-diagnostics > summary small,
.review-workspace .review-more-evidence > summary small {
  color: #91a0b5;
  font-weight: 500;
}

.review-workspace .review-browse-tools[open] > summary,
.review-workspace .review-more-options[open] > summary,
.review-workspace .review-fact-diagnostics[open] > summary,
.review-workspace .review-more-evidence[open] > summary {
  border-bottom: 1px solid #303a4a;
}

.review-workspace .review-browse-tools > :not(summary),
.review-workspace .review-more-options > :not(summary),
.review-workspace .review-fact-diagnostics > :not(summary),
.review-workspace .review-more-evidence > :not(summary) {
  margin-left: 0.75rem;
  margin-right: 0.75rem;
}

.review-workspace .review-browse-tools-body,
.review-workspace .review-more-options-body,
.review-workspace .review-fact-diagnostics-body,
.review-workspace .review-more-evidence-body {
  box-sizing: border-box;
  min-width: 0;
  padding-bottom: 0.75rem;
}

.review-workspace .review-more-options-body > :first-child,
.review-workspace .review-browse-tools-body > :first-child,
.review-workspace .review-more-evidence-body > :first-child {
  margin-top: 0.75rem;
}

.review-workspace .review-browse-tools .review-queue {
  display: grid;
  gap: 0.25rem;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  margin-bottom: 0.75rem;
  margin-top: 0.75rem;
  max-height: 24rem;
  overflow: auto;
  position: static;
  width: auto;
}

.review-workspace .review-browse-tools .review-panel-heading {
  grid-column: 1 / -1;
  position: static;
}

.review-workspace .review-browse-tools .review-queue-item {
  margin-bottom: 0;
  min-height: 2.75rem;
  min-width: 0;
}

.review-workspace :is(
  .review-mode-tab,
  .review-progress-step,
  .review-filter-link,
  .review-queue-item,
  .review-browse-tools > summary,
  .review-more-options > summary,
  .review-fact-diagnostics > summary,
  .review-up-next-browse,
  .review-more-evidence > summary
):focus-visible {
  outline: 3px solid #9dc2ff;
  outline-offset: 2px;
}

@media (max-width: 900px) {
  .review-workspace .review-queue {
    max-height: none;
    position: static;
  }

  .review-workspace .review-guided-main-grid {
    grid-template-areas:
      "up-next"
      "stage";
    grid-template-columns: minmax(0, 1fr);
    max-width: 74rem;
  }

  .review-workspace .review-up-next {
    max-height: none;
    overflow: visible;
    position: static;
  }

  .review-workspace .review-up-next-list {
    display: flex;
    gap: 0.35rem;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    padding-bottom: 0.3rem;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
  }

  .review-workspace .review-up-next .review-queue-item {
    flex: 0 0 min(12rem, 72vw);
    scroll-snap-align: start;
  }
}

@media (max-width: 720px) {
  .review-workspace .review-page {
    padding: 0.55rem;
  }

  .review-workspace .review-appbar {
    gap: 0.45rem;
    grid-template-columns: 2.25rem minmax(0, 1fr) auto;
    min-height: 3rem;
    padding-inline: 0.55rem;
  }

  .review-workspace .review-app-title strong {
    font-size: 0.66rem;
    letter-spacing: 0.08em;
  }

  .review-workspace .review-app-title span,
  .review-workspace .review-wiki-link {
    font-size: 0.64rem;
  }

  .review-workspace .review-session-heading,
  .review-workspace .review-guided-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .review-workspace .review-session-heading > div:first-child,
  .review-workspace .review-guided-heading > div:first-child,
  .review-workspace .review-progress-track {
    /* These carry a 300px flex basis, which is a WIDTH while the heading is
       a row. Turning the heading into a column above makes the same basis a
       HEIGHT, reserving 300px for a few lines of text and leaving a void.
       Any child given a basis for the row needs it cleared here. */
    flex-basis: auto;
  }

  /* Three pill tabs do not fit a phone; let them wrap rather than clip. */
  .review-workspace .review-mode-tabs {
    flex-wrap: wrap;
  }

  .review-workspace .review-guided-progress {
    grid-template-columns: minmax(0, 1fr);
    padding: 0.4rem;
  }

  .review-workspace .review-progress-arrow {
    display: none;
  }

  .review-workspace .review-safe-note {
    max-width: none;
    width: 100%;
  }

  .review-workspace .review-quick-decisions {
    grid-template-columns: minmax(0, 1fr);
    margin-inline: 0.65rem;
  }

  .review-workspace .review-fact-card .review-quick-decisions > form {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-guided-actions {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-guided-evidence {
    margin-inline: 0.65rem;
  }

  .review-workspace .review-match-summary {
    grid-template-columns: minmax(0, 1fr);
    margin-inline: 0.65rem;
  }

  .review-workspace .review-match-arrow {
    transform: none;
  }

  .review-workspace .review-browse-tools,
  .review-workspace .review-more-options,
  .review-workspace .review-fact-diagnostics,
  .review-workspace .review-more-evidence {
    margin-block: 0.55rem;
  }

  .review-workspace .review-browse-tools > summary,
  .review-workspace .review-more-options > summary,
  .review-workspace .review-fact-diagnostics > summary,
  .review-workspace .review-more-evidence > summary {
    align-items: flex-start;
    flex-direction: column;
    gap: 0.15rem;
  }

  .review-workspace .review-browse-tools .review-queue {
    grid-template-columns: minmax(0, 1fr);
    max-height: none;
  }

  .review-workspace .review-complete-panel,
  .review-workspace .review-button-row,
  .review-workspace .review-button-row button {
    width: 100%;
  }
}

/* PC homepage roster. The server emits inert links and text from published
   PC frontmatter. Measure the actual main column (not the whole viewport) so
   a wide workspace can hold the complete seven-member party on one row while
   narrower layouts retain readable wrapping and the existing information
   rail. */
.note.bs-pc-home .callout-bs-main {
  container-name: bs-party-main;
  container-type: inline-size;
}

.note.bs-pc-home .bs-party-grid {
  display: grid;
  gap: 0.75rem;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  min-width: 0;
  width: 100%;
}

.note.bs-pc-home .bs-party-grid.is-empty {
  grid-template-columns: minmax(0, 1fr);
}

.note.bs-pc-home .bs-party-grid__empty {
  border: 1px dashed #31576c;
  color: var(--bs-muted, #91a9b8);
  font-style: italic;
  margin: 0;
  padding: 1rem;
  text-align: center;
}

/* The legacy campaign theme fades query headings from blue into red. Keep
   main-content PC directory tables on one blue accent without recolouring
   the separate homepage rail. */
.note.bs-pc-home .callout-bs-main .query-table th {
  background: #174e70;
  background-image: none;
}

.note.bs-pc-home .bs-party-card {
  background: #09141d;
  border: 1px solid var(--bs-border-bright, #38657c);
  border-radius: 0.16rem;
  min-height: 33.5rem;
  min-width: 0;
  overflow: hidden;
}

.note.bs-pc-home .bs-party-card__link {
  color: inherit;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  text-decoration: none;
}

.note.bs-pc-home .bs-party-card__head {
  align-items: flex-end;
  background: #174e70;
  border-bottom: 1px solid var(--bs-border-bright, #38657c);
  display: grid;
  gap: 0.5rem;
  grid-template-columns: minmax(0, 1fr) auto;
  min-height: 10.25rem;
  padding: 0.85rem 0.8rem;
  text-align: left;
}

.note.bs-pc-home .bs-party-card__name {
  color: #f4f8fb;
  font: 800 clamp(1rem, 1.25vw, 1.2rem)/1.2 system-ui, sans-serif;
  overflow-wrap: anywhere;
}

.note.bs-pc-home .bs-party-card__chevron {
  color: #dcecf4;
  font-size: 1.2rem;
  line-height: 1;
}

.note.bs-pc-home .bs-party-card__body {
  display: block;
  flex: 1 1 auto;
  font-size: 0.9rem;
  margin: 0;
  padding: 0.65rem 0.75rem 0.85rem;
}

.note.bs-pc-home .bs-party-card__field {
  display: grid;
  gap: 0.08rem;
  grid-template-columns: minmax(0, 1fr);
  line-height: 1.25;
  margin: 0 0 0.45rem;
  min-width: 0;
}

.note.bs-pc-home .bs-party-card__field dt,
.note.bs-pc-home .bs-party-card__field dd {
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
}

.note.bs-pc-home .bs-party-card__field dt {
  color: #8fa5ca;
  font-size: 0.83rem;
  font-weight: 800;
}

.note.bs-pc-home .bs-party-card__field dd {
  color: #d7dde7;
}

.note.bs-pc-home .bs-party-card__link:is(:hover, :focus-visible) {
  background: rgba(59, 181, 216, 0.08);
  outline: 3px solid #6ed6f2;
  outline-offset: -3px;
}

/* Seven compact cards fit once the card area itself is at least 84rem wide.
   At that boundary each card remains roughly 11.5rem wide, including gaps;
   long frontmatter can still wrap and increase the row height naturally. */
@container bs-party-main (min-width: 84rem) {
  .note.bs-pc-home .bs-party-grid {
    gap: 0.55rem;
    grid-template-columns: repeat(7, minmax(0, 1fr));
  }

  .note.bs-pc-home .bs-party-card {
    min-height: 26rem;
  }

  .note.bs-pc-home .bs-party-card__head {
    gap: 0.35rem;
    min-height: 7.25rem;
    padding: 0.65rem 0.6rem;
  }

  .note.bs-pc-home .bs-party-card__name {
    font-size: clamp(0.92rem, 0.78vw, 1.05rem);
  }

  .note.bs-pc-home .bs-party-card__chevron {
    font-size: 1rem;
  }

  .note.bs-pc-home .bs-party-card__body {
    font-size: 0.82rem;
    padding: 0.55rem 0.6rem 0.7rem;
  }

  .note.bs-pc-home .bs-party-card__field {
    line-height: 1.2;
    margin-bottom: 0.35rem;
  }

  .note.bs-pc-home .bs-party-card__field dt {
    font-size: 0.74rem;
  }
}

@media (max-width: 1280px) {
  .note.bs-pc-home .bs-party-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1024px) {
  .note.bs-pc-home .bs-party-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .note.bs-pc-home .bs-party-card {
    min-height: 22rem;
  }
}

@media (max-width: 680px) {
  .note.bs-pc-home .bs-party-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .note.bs-pc-home .bs-party-card {
    min-height: 0;
  }

  .note.bs-pc-home .bs-party-card__head {
    min-height: 6rem;
  }
}

/* Character-bound history pages keep their timeline structure even before a
   source-confirmed event exists. Collapse the single empty milestone to one
   readable card instead of leaving a four-column strip or replacing the panel
   with the portal's generic empty state. */
.note.pc-wiki-layout-test .pc-milestone-track:has(> .pc-milestone--empty) {
  grid-template-columns: minmax(0, 1fr);
  padding-top: 0;
}

.note.pc-wiki-layout-test .pc-milestone-track:has(> .pc-milestone--empty)::before,
.note.pc-wiki-layout-test .pc-milestone--empty::before {
  display: none;
}

.note.pc-wiki-layout-test .pc-milestone--empty {
  background: #08131e;
  border-style: dashed;
  min-height: 0;
}

/* Safe read-only rendering for the bounded PC Relationship Map. Campaign
   Mermaid is never executed in the browser; the server emits this semantic
   structure only for the recognised three-lane PC relationship diagram. */
.note.pc-wiki-layout-test .pc-relationship-map {
  background:
    radial-gradient(circle at 10% 50%, rgba(50, 188, 220, 0.13), transparent 19rem),
    #06101a;
  border: 1px solid var(--pc-border, #28516b);
  display: grid;
  gap: 0.85rem;
  grid-template-columns: minmax(10rem, 0.55fr) minmax(0, 2.45fr);
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  padding: 0.85rem;
}

.note.pc-wiki-layout-test .pc-relationship-map__focus {
  align-self: center;
  background: linear-gradient(145deg, #14506b, #082232);
  border: 2px solid #55c7e7;
  box-shadow: 0 0 1.1rem rgba(59, 190, 225, 0.2);
  display: grid;
  gap: 0.2rem;
  justify-items: center;
  min-width: 0;
  padding: 1rem 0.65rem;
  text-align: center;
}

.note.pc-wiki-layout-test .pc-relationship-map__focus span {
  color: var(--pc-muted, #91a9b8);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.note.pc-wiki-layout-test .pc-relationship-map__focus strong {
  color: #f4fbff;
  font: 800 clamp(1rem, 2vw, 1.35rem)/1.2 Georgia, "Times New Roman", serif;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.note.pc-wiki-layout-test .pc-relationship-map__body,
.note.pc-wiki-layout-test .pc-relationship-map__groups,
.note.pc-wiki-layout-test .pc-relationship-map__group {
  min-width: 0;
}

.note.pc-wiki-layout-test .pc-relationship-map__groups {
  display: grid;
  gap: 0.65rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
}

.note.pc-wiki-layout-test .pc-relationship-map__group {
  background: rgba(7, 22, 32, 0.94);
  border: 1px solid #26495e;
  border-top: 3px solid #53bdd7;
  padding: 0.65rem;
}

.note.pc-wiki-layout-test .pc-relationship-map__group--neutral {
  border-top-color: #d1ad51;
}

.note.pc-wiki-layout-test .pc-relationship-map__group--enemies {
  border-top-color: #d95b67;
}

.note.pc-wiki-layout-test .pc-relationship-map__group h4 {
  color: var(--pc-silver, #dfeef5);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  margin: 0 0 0.55rem;
  text-transform: uppercase;
}

.note.pc-wiki-layout-test .pc-relationship-map__list {
  display: grid;
  gap: 0.42rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.note.pc-wiki-layout-test .pc-relationship-map__item {
  background: #091925;
  border: 1px solid rgba(82, 143, 176, 0.42);
  display: grid;
  gap: 0.3rem;
  min-width: 0;
  padding: 0.5rem 0.55rem;
}

.note.pc-wiki-layout-test .pc-relationship-map__item strong,
.note.pc-wiki-layout-test .pc-relationship-map__relation {
  overflow-wrap: anywhere;
}

.note.pc-wiki-layout-test .pc-relationship-map__item strong {
  color: #e9f8ff;
  font-size: 0.82rem;
}

.note.pc-wiki-layout-test .pc-relationship-map__relation {
  color: #75cce3;
  font-size: 0.68rem;
  font-weight: 750;
  text-transform: uppercase;
}

.note.pc-wiki-layout-test .pc-relationship-map__empty,
.note.pc-wiki-layout-test .pc-relationship-map__group-empty {
  color: var(--pc-muted, #91a9b8);
  font-size: 0.76rem;
  font-style: italic;
  line-height: 1.5;
  margin: 0;
  overflow-wrap: anywhere;
}

.note.pc-wiki-layout-test .pc-relationship-map__empty {
  border: 1px dashed #31576c;
  margin-bottom: 0.65rem;
  padding: 0.55rem 0.65rem;
}

@media (max-width: 680px) {
  .note.pc-wiki-layout-test .pc-relationship-map {
    grid-template-columns: minmax(0, 1fr);
    padding: 0.65rem;
  }

  .note.pc-wiki-layout-test .pc-relationship-map__focus {
    justify-items: start;
    text-align: left;
  }
}

/* Final cascade guard for the full review desk. The guided-review rules above
   remain for legacy markup; these selectors win only when the new shell is
   present. */
.review-workspace .review-session-card,
.review-workspace .review-review-grid,
.review-workspace .review-primary-stage,
.review-workspace .review-primary-stage .review-fact-section,
.review-workspace .review-add-missing,
.review-workspace .review-complete-panel,
.review-workspace .review-lock-form {
  margin-left: 0;
  margin-right: 0;
  max-width: none;
  width: 100%;
}

.review-workspace .review-review-grid {
  align-items: start;
  display: grid;
  gap: 0.55rem;
  grid-template-columns: minmax(calc(14.5rem + 150px), calc(16rem + 150px)) minmax(0, 1fr);
}

.review-workspace .review-queue-shell .review-mode-tabs {
  gap: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0;
}

.review-workspace .review-personal-note-picture {
  border-color: #236f86;
  overflow: hidden;
}

.review-workspace .review-personal-note-picture-grid {
  align-items: start;
  display: grid;
  gap: 0.85rem;
  grid-template-columns: minmax(13rem, 0.9fr) minmax(16rem, 1.1fr);
  padding: 0.85rem;
}

.review-workspace .review-personal-note-picture figure {
  margin: 0;
  min-width: 0;
}

.review-workspace .review-personal-note-picture figure a {
  background: #02090e;
  border: 1px solid var(--review-line);
  display: grid;
  min-height: 12rem;
  place-items: center;
}

.review-workspace .review-personal-note-picture img {
  display: block;
  height: auto;
  max-height: 32rem;
  max-width: 100%;
  object-fit: contain;
  width: auto;
}

.review-workspace .review-personal-note-picture figcaption {
  color: #8299a6;
  font-size: 0.68rem;
  margin-top: 0.4rem;
}

.review-workspace .review-personal-note-picture-question {
  background: #071721;
  border: 1px solid var(--review-line);
  padding: 0.85rem;
}

.review-workspace .review-personal-note-picture-question h3 {
  color: #e5f6fb;
  font-size: 1rem;
  margin: 0 0 0.5rem;
}

.review-workspace .review-picture-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-top: 0.75rem;
}

.review-workspace .review-picture-actions form {
  margin: 0;
}

.review-workspace .review-picture-reject {
  background: #351419;
  border-color: #a84d57;
}

.review-workspace .review-picture-status-approved {
  color: #63e6a7;
}

.review-workspace .review-picture-status-rejected {
  color: #ff8f96;
}

.review-workspace .review-queue-shell .review-queue {
  display: block;
  max-height: none;
  overflow: visible;
  position: static;
}

.review-workspace .review-card > .review-audio-evidence,
.review-workspace .review-card > .review-image-evidence,
.review-workspace .review-card > .review-more-evidence,
.review-workspace .review-card > .review-more-options {
  border-radius: 0;
  margin: 0;
  max-width: none;
  width: 100%;
}

/* The rail appears only when the rail, queue and minimum two-column evidence
   card all fit. Keeping it hidden through 1159px prevents the old 1051px
   layout cliff from creating horizontal overflow. */
@media (min-width: 1160px) {
  .review-workspace .review-layout {
    /* The side rail is gone: one centred column, as the mockup has it. */
    display: block;
    margin: 0 auto;
    max-width: 1580px;
    padding: 16px 18px 60px;
    width: 100%;
  }

  .review-workspace .review-side-rail {
    display: block;
    height: calc(100vh - 3rem);
    overflow: auto;
    position: sticky;
    top: 3rem;
  }
}

@media (max-width: 1159px) {
  .review-workspace .review-layout {
    display: block;
    padding: 12px 12px 48px;
  }

  .review-workspace .review-side-rail {
    display: none;
  }
}

@media (max-width: 900px) {
  .review-workspace .review-review-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-queue-shell .review-queue {
    display: flex;
    gap: 0.3rem;
    overflow-x: auto;
  }

  .review-workspace .review-personal-note-picture-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-personal-note-picture figure a {
    min-height: 9rem;
  }

  .review-workspace .review-picture-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .review-workspace .review-picture-actions button,
  .review-workspace .review-picture-actions form {
    width: 100%;
  }
}


/* =====================================================================
   The signed-off checker design, lifted from the mockup and namespaced.
   Harry: "the way we made it in this chat is how I want it, look and how
   it works, only difference is the OOC". Everything below is the mockup's
   own CSS with an rv- prefix, so it cannot fight portal.css.
   ===================================================================== */
.review-workspace {
  --rv-edge: rgba(50, 101, 129, 0.45);
  --rv-gold: rgba(222, 178, 76, 0.26);
  --rv-gold-line: rgba(222, 178, 76, 0.55);
  --rv-text: #dce8f0;
  --rv-muted: #8fa3bd;
  --rv-blue: #58b9e6;
  --rv-violet: #8f7bff;
  --rv-sweep: linear-gradient(90deg, #1f6d95, #4a3f8f);
  --rv-sweep-strong: linear-gradient(90deg, #2a86b4, #6a5acd);
  --rv-rail-head: linear-gradient(180deg, #17486b, #0f3550);
  --rv-good: #6fbd7b;
  --rv-warn: #d3aa51;
  --rv-bad: #da6c6c;
  --rv-serif: Georgia, "Times New Roman", serif;
  --rv-sans: "Segoe UI", system-ui, -apple-system, sans-serif;
  --rv-mono: ui-monospace, Consolas, monospace;
}

/* ---- tabs ---- */
.review-workspace .rv-tabs { display: flex; gap: 6px; margin: 0 0 10px; }
.review-workspace .rv-tab {
  border: 1px solid var(--rv-edge); border-bottom: 0; border-radius: 5px 5px 0 0;
  background: rgba(5, 13, 19, 0.6); padding: 8px 18px; cursor: pointer;
  font: 0.86rem/1.4 var(--rv-sans); color: var(--rv-muted); text-decoration: none;
}
.review-workspace .rv-tab b { color: inherit; font-weight: 700; margin-left: 4px; }
.review-workspace .rv-tab.on {
  background: var(--rv-sweep); color: #fff; font-weight: 600; border-color: rgba(143, 123, 255, 0.4);
}

/* ---- filter bar ---- */
.review-workspace .rv-filters {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap; padding: 10px 12px;
  border: 1px solid var(--rv-edge); border-bottom: 0; background: rgba(5, 13, 19, 0.55);
  border-radius: 0 5px 0 0;
}
.review-workspace .rv-flabel {
  font: 700 0.62rem/1 var(--rv-sans); letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--rv-muted); margin-right: 2px;
}
.review-workspace .rv-flabel:not(:first-child) { margin-left: 14px; }
.review-workspace .rv-fchip {
  border: 1px solid var(--rv-edge); border-radius: 20px; background: rgba(5, 13, 19, 0.7);
  color: var(--rv-muted); font: 0.79rem/1.4 var(--rv-sans); padding: 4px 11px; cursor: pointer;
  text-decoration: none;
}
.review-workspace .rv-fchip:hover { border-color: rgba(143, 123, 255, 0.6); color: var(--rv-text); }
.review-workspace .rv-fchip.on {
  background: linear-gradient(115deg, rgba(88, 185, 230, 0.28), rgba(143, 123, 255, 0.34));
  border-color: var(--rv-violet); color: #fff; font-weight: 600;
}
.review-workspace .rv-fchip b { font-variant-numeric: tabular-nums; opacity: 0.7; margin-left: 5px; font-size: 0.72rem; font-weight: 400; }
.review-workspace .rv-tagfilter { position: relative; display: inline-flex; align-items: center; }
.review-workspace .rv-tagfilter input {
  width: 170px; background: rgba(5, 13, 19, 0.85); color: var(--rv-text);
  border: 1px solid var(--rv-edge); border-radius: 20px; padding: 4px 24px 4px 12px;
  font: 0.79rem var(--rv-mono);
}
.review-workspace .rv-tagfilter input:focus { outline: none; border-color: var(--rv-violet); }
.review-workspace .rv-tagfilter input:not(:placeholder-shown) {
  border-color: var(--rv-violet);
  background: linear-gradient(115deg, rgba(88, 185, 230, 0.16), rgba(143, 123, 255, 0.2));
}
.review-workspace .rv-tagfilter button {
  position: absolute; right: 6px; background: none; border: 0; color: var(--rv-muted);
  cursor: pointer; font-size: 0.95rem; line-height: 1; padding: 0 2px;
}
.review-workspace .rv-tagfilter button:hover { color: #fff; }

/* ---- the table head strip and the family tables ---- */
.review-workspace .rv-thead {
  display: grid; grid-template-columns: 30% 7% 8% 27% 16% 12%;
  background: var(--rv-rail-head); border: 1px solid var(--rv-edge); border-bottom: 1px solid var(--rv-gold-line);
  color: #dcebf5; font: 700 0.72rem/1 var(--rv-serif); letter-spacing: 0.04em; text-transform: uppercase;
}
.review-workspace .rv-thead span { padding: 9px 12px; white-space: nowrap; }
.review-workspace .rv-thead span:nth-child(2) { text-align: right; }
.review-workspace .rv-groups { display: block; }
.review-workspace .rv-group {
  display: block; margin: 0; border: 1px solid var(--rv-edge); border-top: 0; border-radius: 0;
  background: linear-gradient(180deg, #08131e, #050c13);
}
.review-workspace .rv-group:last-child { border-radius: 0 0 5px 5px; }
.review-workspace .rv-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.review-workspace .rv-table td { border-bottom: 1px solid rgba(50, 101, 129, 0.25); padding: 9px 12px; vertical-align: top; }
.review-workspace .rv-table .rv-pick { width: 30%; padding-left: 26px; }
.review-workspace .rv-table .rv-times { width: 7%; text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap; }
.review-workspace .rv-table .rv-match { width: 8%; font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap; }
.review-workspace .rv-table .rv-claim { width: 27%; }
.review-workspace .rv-table .rv-kind { width: 16%; white-space: nowrap; }
.review-workspace .rv-table .rv-move { width: 12%; text-align: right; white-space: nowrap; }
.review-workspace .rv-table tr.rv-moverow > td { padding: 0 10px 6px; background: transparent; }
.review-workspace .rv-match.hi { color: var(--rv-good); }
.review-workspace .rv-match.mid { color: var(--rv-warn); }
.review-workspace .rv-match.lo { color: var(--rv-bad); }
.review-workspace .rv-member.off { opacity: 0.42; }
.review-workspace .rv-member.settled { background: rgba(111, 189, 123, 0.05); }
.review-workspace .rv-tick { accent-color: var(--rv-violet); width: 15px; height: 15px; cursor: pointer; margin-right: 9px; vertical-align: -2px; }
.review-workspace .rv-spell { font-size: 0.95rem; }
.review-workspace .rv-mismatch { display: block; color: var(--rv-warn); font-size: 0.72rem; }

/* ---- group head ---- */
.review-workspace .rv-ghead {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 11px 12px;
  background: linear-gradient(90deg, rgba(31, 109, 149, 0.35), rgba(74, 63, 143, 0.32));
  border-top: 1px solid rgba(143, 123, 255, 0.4); border-bottom: 1px solid rgba(143, 123, 255, 0.25);
}
.review-workspace .rv-gname { font: 400 1.18rem/1.2 var(--rv-serif); color: #fff; }
.review-workspace .rv-new {
  font: 700 0.58rem/1 var(--rv-sans); letter-spacing: 0.13em; text-transform: uppercase; color: var(--rv-warn);
  border: 1px solid rgba(211, 170, 81, 0.5); padding: 3px 6px; border-radius: 3px; margin-left: 9px; vertical-align: 3px;
}
.review-workspace .rv-gwhere { font: 0.78rem var(--rv-mono); color: #bcd3e6; opacity: 0.85; }
.review-workspace .rv-gcount { font-size: 0.8rem; color: #cfe4ff; font-variant-numeric: tabular-nums; }
.review-workspace .rv-gtools { margin-left: auto; display: flex; align-items: center; gap: 11px; flex-wrap: wrap; }
.review-workspace .rv-linkish {
  background: none; border: 0; color: #cfe4ff; font-size: 0.78rem; text-decoration: underline; cursor: pointer; padding: 0;
}
.review-workspace .rv-linkish:hover { color: #fff; }
/* The article offer sits under the name it would change, quiet until read. */
.review-workspace .rv-article { display: block; margin: 4px 0 0; font-size: 12px; opacity: 0.85; }
.review-workspace .rv-article[hidden] { display: none; }
.review-workspace .rv-gtools select,
.review-workspace .rv-factform select,
.review-workspace .rv-flow-inner select {
  background: rgba(5, 13, 19, 0.85); color: var(--rv-text); border: 1px solid var(--rv-blue); border-radius: 5px;
  padding: 8px 10px; font: 0.86rem/1.3 var(--rv-sans); min-width: 150px; cursor: pointer;
}
.review-workspace .rv-status {
  font-size: 0.82rem; color: var(--rv-muted); display: block; min-width: 0; max-width: 340px;
  white-space: normal; overflow-wrap: anywhere; line-height: 1.4;
}
.review-workspace .rv-status.ok { color: var(--rv-good); font-weight: 600; }
.review-workspace .rv-status .sep { color: var(--rv-violet); padding: 0 4px; }
.review-workspace .rv-status .part { color: var(--rv-text); }
.review-workspace .rv-status .waiting { color: var(--rv-muted); font-style: italic; }
.review-workspace .rv-status .tagcount { display: block; color: var(--rv-violet); font-size: 0.75rem; margin-top: 2px; }
.review-workspace .rv-status-more { display: block; color: var(--rv-muted); font-size: 0.74rem; margin-top: 2px; }
.review-workspace .rv-status-more b { color: var(--rv-text); font-weight: 600; }
.review-workspace .rv-talk { color: var(--rv-muted); font-style: italic; }
.review-workspace .rv-look { color: var(--rv-muted); }
.review-workspace .rv-look-event b, .review-workspace .rv-look-world b { color: var(--rv-ok, #2e7d32); }
.review-workspace .rv-look-talk b, .review-workspace .rv-look-unsupported b { color: var(--rv-warn, #b26a00); }
.review-workspace .rv-decided { font-size: 0.82rem; color: var(--rv-good); font-weight: 600; }
.review-workspace .rv-apart { color: var(--rv-muted); font-size: 0.78rem; font-style: italic; }

/* ---- evidence expander ---- */
.review-workspace .rv-ev > summary {
  cursor: pointer; font-size: 0.8rem; color: var(--rv-blue); list-style: none; display: inline-flex;
  align-items: center; gap: 6px; margin-top: 4px;
}
.review-workspace .rv-ev > summary::-webkit-details-marker { display: none; }
.review-workspace .rv-ev > summary::before { content: "\25B8"; font-size: 0.72rem; transition: transform 120ms; }
.review-workspace .rv-ev[open] > summary::before { transform: rotate(90deg); }
.review-workspace .rv-ev-body {
  margin-top: 9px; padding: 10px 12px; background: #061019; border: 1px solid rgba(50, 101, 129, 0.3);
  border-radius: 4px; font-size: 0.82rem;
}
.review-workspace .rv-ev-body p, .review-workspace .rv-ev-body blockquote { margin: 0 0 7px; }
.review-workspace .rv-ev-body blockquote {
  color: #fff; border-left: 2px solid var(--rv-blue); padding: 5px 9px; background: rgba(88, 185, 230, 0.07); border-radius: 0 3px 3px 0;
}
.review-workspace .rv-ev-line { color: var(--rv-muted); padding-left: 11px; }
.review-workspace .rv-ev-line:first-child { color: #fff; border-left: 2px solid var(--rv-blue); padding: 5px 9px; background: rgba(88, 185, 230, 0.07); border-radius: 0 3px 3px 0; }
.review-workspace .rv-ev-head { color: var(--rv-muted); font-weight: 600; }
.review-workspace .rv-clips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 6px 0 4px; }
.review-workspace .rv-clips .lbl { color: var(--rv-muted); font-size: 0.74rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.review-workspace .rv-clip { height: 32px; max-width: 100%; }
.review-workspace .rv-ev-src { margin-top: 7px; color: var(--rv-muted); font-size: 0.74rem; font-family: var(--rv-mono); }
.review-workspace .rv-diag > summary { color: var(--rv-muted); }

/* ---- kind pill (SPELLING / ALIAS / OOC) and move ---- */
.review-workspace .rv-kindpill { display: inline-flex; border: 1px solid var(--rv-edge); border-radius: 999px; overflow: hidden; }
.review-workspace .rv-kindpill label { margin: 0; }
.review-workspace .rv-kindpill input { position: absolute; opacity: 0; width: 0; height: 0; }
.review-workspace .rv-kindpill span {
  display: inline-block; color: var(--rv-muted); font-size: 0.68rem; letter-spacing: 0.06em; text-transform: uppercase;
  padding: 4px 11px; cursor: pointer;
}
.review-workspace .rv-kindpill input:checked + span { background: rgba(143, 123, 255, 0.2); color: #dcd6ff; }
.review-workspace .rv-kindpill input[value="alias"]:checked + span { background: rgba(222, 178, 76, 0.18); color: #f0dca6; }
.review-workspace .rv-kindpill input[value="handle"]:checked + span { background: rgba(222, 178, 76, 0.18); color: #f0dca6; }
.review-workspace .rv-move select,
.review-workspace .rv-movebtn {
  background: transparent; border: 1px solid var(--rv-edge); color: var(--rv-muted); border-radius: 999px;
  padding: 4px 11px; font: 0.68rem/1.4 var(--rv-sans); letter-spacing: 0.06em; text-transform: uppercase; min-width: 0; cursor: pointer;
}
.review-workspace .rv-move select:hover, .review-workspace .rv-movebtn:hover { border-color: rgba(143, 123, 255, 0.55); color: #dcd6ff; }
.review-workspace .rv-movebox {
  /* Opens from the narrow Where-it-lands cell and spreads LEFT over the row,
     so a handle like "mythanotos34 -> Ghomra" reads whole (Harry, 4 September). */
  margin: 4px 0 10px; text-align: left; border: 1px solid rgba(143, 123, 255, 0.35); border-left: 3px solid rgba(143, 123, 255, 0.55);
  background: linear-gradient(180deg, rgba(20, 22, 44, 0.98), rgba(12, 14, 30, 0.98)); padding: 11px 13px; white-space: normal;
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45); border-radius: 8px;
}
.review-workspace .rv-movehead { display: flex; gap: 11px; align-items: center; flex-wrap: wrap; font-size: 0.72rem; letter-spacing: 0.09em; text-transform: uppercase; color: var(--rv-muted); }
.review-workspace .rv-movehead b { color: #dcd6ff; text-transform: none; letter-spacing: 0; font-size: 0.9rem; }
.review-workspace .rv-movehead input { flex: 1 1 160px; min-width: 0; }
.review-workspace .rv-movelist { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 7px; margin-top: 9px; max-height: 240px; overflow-y: auto; }
.review-workspace .rv-moveopt b { overflow-wrap: anywhere; }
.review-workspace .rv-moveopt {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; padding: 7px 11px;
  border: 1px solid var(--rv-edge); border-radius: 6px; background: rgba(6, 10, 22, 0.6); color: var(--rv-text); cursor: pointer;
}
.review-workspace .rv-moveopt:hover { border-color: rgba(143, 123, 255, 0.55); background: rgba(143, 123, 255, 0.1); }
.review-workspace .rv-moveopt b { font-weight: 600; color: #e7ecff; font-size: 0.88rem; }
.review-workspace .rv-moveopt span { font: 0.72rem var(--rv-mono); color: var(--rv-muted); }
.review-workspace .rv-movespecial { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--rv-edge); }
.review-workspace .rv-movealt {
  padding: 6px 13px; border: 1px dashed rgba(222, 178, 76, 0.5); border-radius: 999px; background: transparent; color: #f0dca6; font-size: 0.8rem; cursor: pointer;
}
.review-workspace .rv-movealt:hover { background: rgba(222, 178, 76, 0.12); border-style: solid; }
.review-workspace .rv-moved { display: inline-flex; gap: 9px; align-items: center; font-size: 0.78rem; color: var(--rv-muted); white-space: normal; }
.review-workspace .rv-moved b { color: #f0dca6; font-weight: 600; }
.review-workspace .rv-member.moved .rv-spell { text-decoration: line-through; text-decoration-color: rgba(255, 255, 255, 0.34); }

/* ---- the flow row ---- */
.review-workspace tr.rv-flow > td { padding: 0; }
.review-workspace .rv-flow-inner {
  padding: 15px 16px 17px; background: linear-gradient(180deg, rgba(20, 32, 61, 0.55), rgba(5, 7, 15, 0.5));
  border-left: 3px solid var(--rv-violet);
}
.review-workspace .rv-flow-inner > section, .review-workspace .rv-flow-inner > [data-rv-why] { display: none; }
.review-workspace tr.rv-flow { display: none; }
/* Which section shows is the decision's kind. The script stamps it on the
   form; without a script the select itself tells the stylesheet. */
.review-workspace [data-rv-kind="link"] [data-rv-for="link"],
.review-workspace [data-rv-kind="new"] [data-rv-for="new"],
.review-workspace [data-rv-kind="split"] [data-rv-for="split"],
.review-workspace [data-rv-kind="drop"] [data-rv-for="drop"],
.review-workspace [data-rv-kind="later"] [data-rv-for="later"],
.review-workspace [data-rv-kind="file"] [data-rv-for="file"],
.review-workspace [data-rv-kind="fix"] [data-rv-for="fix"],
.review-workspace [data-rv-kind="unsure"] [data-rv-for="unsure"],
.review-workspace [data-rv-kind="link"] [data-rv-why],
.review-workspace [data-rv-kind="drop"] [data-rv-why],
.review-workspace [data-rv-kind="unsure"] [data-rv-why],
.review-workspace [data-rv-kind="fix"] [data-rv-why] { display: block; }
.review-workspace [data-rv-kind]:not([data-rv-kind=""]) tr.rv-flow { display: table-row; }
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="link"]:checked) [data-rv-for="link"],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="new"]:checked) [data-rv-for="new"],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="split"]:checked) [data-rv-for="split"],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="drop"]:checked) [data-rv-for="drop"],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="later"]:checked) [data-rv-for="later"],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="link"]:checked) [data-rv-why],
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind="drop"]:checked) [data-rv-why] { display: block; }
.review-workspace .rv-group:has([data-rv-decision] option[data-rv-kind]:checked:not([value=""])) tr.rv-flow { display: table-row; }
.review-workspace tr.rv-item:has([data-rv-decision] option[data-rv-kind]:checked:not([value=""])) + tr.rv-flow { display: table-row; }
.review-workspace tr.rv-item:has(option[data-rv-kind="file"]:checked) + tr.rv-flow [data-rv-for="file"],
.review-workspace tr.rv-item:has(option[data-rv-kind="fix"]:checked) + tr.rv-flow [data-rv-for="fix"],
.review-workspace tr.rv-item:has(option[data-rv-kind="unsure"]:checked) + tr.rv-flow [data-rv-for="unsure"],
.review-workspace tr.rv-item:has(option[data-rv-kind="drop"]:checked) + tr.rv-flow [data-rv-for="drop"],
.review-workspace tr.rv-item:has(option[data-rv-kind="later"]:checked) + tr.rv-flow [data-rv-for="later"],
.review-workspace tr.rv-item:has(option[data-rv-kind="fix"]:checked) + tr.rv-flow [data-rv-why],
.review-workspace tr.rv-item:has(option[data-rv-kind="unsure"]:checked) + tr.rv-flow [data-rv-why],
.review-workspace tr.rv-item:has(option[data-rv-kind="drop"]:checked) + tr.rv-flow [data-rv-why] { display: block; }
.review-workspace .rv-q {
  font: 700 0.7rem/1 var(--rv-sans); letter-spacing: 0.11em; text-transform: uppercase; color: var(--rv-blue); margin: 0 0 12px;
}
.review-workspace .rv-track { display: flex; align-items: flex-start; flex-wrap: wrap; }
.review-workspace .rv-node { font: 700 0.64rem/1 var(--rv-sans); letter-spacing: 0.1em; text-transform: uppercase; color: var(--rv-muted); margin: 0 0 7px; }
.review-workspace .rv-chips { display: flex; gap: 6px; flex-wrap: wrap; max-width: 560px; }
.review-workspace .rv-chipset { display: contents; }
.review-workspace .rv-chipset[hidden] { display: none; }
.review-workspace .rv-chip {
  border: 1px solid var(--rv-edge); border-radius: 20px; background: rgba(5, 13, 19, 0.7); color: var(--rv-text);
  font: 0.82rem/1.4 var(--rv-sans); padding: 5px 13px; cursor: pointer; margin: 0; transition: border-color 120ms, background 120ms;
}
.review-workspace .rv-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.review-workspace .rv-chip:hover { border-color: rgba(143, 123, 255, 0.6); }
.review-workspace .rv-chip.picked, .review-workspace .rv-chip:has(input:checked) {
  background: linear-gradient(115deg, rgba(88, 185, 230, 0.3), rgba(143, 123, 255, 0.4)); border-color: var(--rv-violet); color: #fff; font-weight: 600;
}
.review-workspace .rv-chip.ns { opacity: 0.6; }
.review-workspace .rv-arrow { align-self: center; color: var(--rv-violet); font-size: 1.2rem; padding: 0 14px; opacity: 0.65; margin-top: 14px; }
.review-workspace .rv-landing {
  margin-top: 15px; padding: 11px 14px; border-radius: 5px; border: 1px solid rgba(143, 123, 255, 0.4);
  background: linear-gradient(150deg, rgba(29, 26, 62, 0.6), rgba(9, 12, 28, 0.6)); display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.review-workspace .rv-landing .lbl { font: 700 0.64rem/1 var(--rv-sans); letter-spacing: 0.1em; text-transform: uppercase; color: var(--rv-muted); }
.review-workspace .rv-landing .path { font: 0.87rem var(--rv-mono); color: #cfe4ff; }
.review-workspace .rv-landing .path .sep { color: var(--rv-violet); padding: 0 5px; }
.review-workspace .rv-landing .waiting { color: var(--rv-muted); font-style: italic; font-family: var(--rv-sans); }
.review-workspace .rv-landing .rv-sweep { margin-left: auto; }
.review-workspace .rv-sweep {
  border: 1px solid rgba(159, 220, 247, 0.5); background: var(--rv-sweep-strong); color: #04121c; font-weight: 700;
  font-size: 0.82rem; border-radius: 6px; padding: 7px 15px; cursor: pointer; white-space: nowrap;
}
.review-workspace .rv-sweep:hover { filter: brightness(1.1); }
.review-workspace .rv-sweep[disabled] { opacity: 0.4; cursor: not-allowed; filter: none; }
.review-workspace .rv-flow-inner > section > .rv-sweep { margin-top: 10px; }
.review-workspace .rv-note { margin-top: 13px; }
.review-workspace .rv-note label { display: block; font: 700 0.64rem/1 var(--rv-sans); letter-spacing: 0.1em; text-transform: uppercase; color: var(--rv-blue); margin-bottom: 6px; }
.review-workspace .rv-text, .review-workspace .rv-note textarea, .review-workspace .rv-note select {
  width: 100%; max-width: 620px; background: rgba(5, 13, 19, 0.85); color: var(--rv-text);
  border: 1px solid var(--rv-edge); border-radius: 5px; padding: 8px 10px; font: 0.85rem/1.4 var(--rv-sans);
}
.review-workspace .rv-note textarea { min-height: 66px; resize: vertical; }
.review-workspace .rv-text:focus, .review-workspace .rv-note textarea:focus { outline: none; border-color: var(--rv-blue); }
.review-workspace .rv-alias-note { margin-top: 10px; font-size: 0.82rem; color: var(--rv-muted); }
.review-workspace .rv-alias-note b { color: #f0dca6; font-weight: 600; }
.review-workspace .rv-change { margin-top: 10px; }
.review-workspace .rv-change > summary { cursor: pointer; font-size: 0.8rem; color: var(--rv-blue); }

/* ---- advanced tags ---- */
.review-workspace .rv-adv { margin-top: 14px; border-top: 1px solid rgba(50, 101, 129, 0.3); padding-top: 11px; }
.review-workspace .rv-adv > summary {
  cursor: pointer; font: 700 0.64rem/1 var(--rv-sans); letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--rv-muted); list-style: none; display: inline-flex; align-items: center; gap: 6px;
}
.review-workspace .rv-adv > summary::-webkit-details-marker { display: none; }
.review-workspace .rv-adv > summary::before { content: "\25B8"; font-size: 0.7rem; transition: transform 120ms; }
.review-workspace .rv-adv[open] > summary::before { transform: rotate(90deg); }
.review-workspace .rv-adv[open] > summary { color: var(--rv-blue); }
.review-workspace .rv-adv-body { margin-top: 11px; }
.review-workspace .rv-picked {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap; padding: 9px 11px; margin-bottom: 11px;
  border: 1px solid rgba(143, 123, 255, 0.4); border-radius: 5px;
  background: linear-gradient(150deg, rgba(29, 26, 62, 0.55), rgba(9, 12, 28, 0.55));
}
.review-workspace .rv-picked .lbl { font: 700 0.62rem/1 var(--rv-sans); letter-spacing: 0.11em; text-transform: uppercase; color: var(--rv-muted); }
.review-workspace .rv-picked .none { font-size: 0.79rem; color: var(--rv-muted); font-style: italic; }
.review-workspace .rv-ptag {
  border: 1px solid var(--rv-violet); border-radius: 4px;
  background: linear-gradient(115deg, rgba(88, 185, 230, 0.24), rgba(143, 123, 255, 0.34));
  color: #fff; font: 0.78rem var(--rv-mono); padding: 3px 7px; display: inline-flex; align-items: center; gap: 6px;
}
.review-workspace .rv-ptag .ns { opacity: 0.5; }
.review-workspace .rv-ptag button { all: unset; cursor: pointer; color: #dfe9ff; font-size: 0.9rem; line-height: 1; opacity: 0.75; }
.review-workspace .rv-ptag button:hover { opacity: 1; color: #fff; }
.review-workspace .rv-searchrow { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; flex-wrap: wrap; }
.review-workspace .rv-tag-search { max-width: 280px; }
.review-workspace .rv-maketag {
  border: 1px dashed var(--rv-violet); border-radius: 4px; background: rgba(143, 123, 255, 0.12); color: #cfe4ff;
  font: 0.79rem var(--rv-mono); padding: 5px 11px; cursor: pointer;
}
.review-workspace .rv-maketag:hover { background: rgba(143, 123, 255, 0.24); color: #fff; }
.review-workspace .rv-maketag b { color: #fff; }
.review-workspace .rv-step {
  font: 700 0.68rem/1 var(--rv-sans); letter-spacing: 0.11em; text-transform: uppercase; color: var(--rv-blue);
  margin: 16px 0 9px; display: flex; align-items: center; gap: 9px;
}
.review-workspace .rv-step b {
  display: inline-flex; align-items: center; justify-content: center; width: 19px; height: 19px; border-radius: 50%;
  background: var(--rv-sweep-strong); color: #04121c; font-size: 0.68rem;
}
.review-workspace .rv-step span { color: var(--rv-muted); font-weight: 400; letter-spacing: 0; text-transform: none; }
.review-workspace .rv-step code { font: 0.78rem var(--rv-mono); color: #cfe4ff; }
.review-workspace .rv-mains { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 4px; }
.review-workspace .rv-mtag {
  border: 1px solid var(--rv-edge); border-radius: 20px; background: rgba(5, 13, 19, 0.7); color: var(--rv-text);
  font: 600 0.84rem/1.4 var(--rv-sans); padding: 6px 15px; cursor: pointer;
}
.review-workspace .rv-mtag:hover { border-color: rgba(143, 123, 255, 0.6); }
.review-workspace .rv-mtag.on { background: var(--rv-sweep-strong); border-color: var(--rv-violet); color: #04121c; }
.review-workspace .rv-subrow {
  margin: 0 0 10px; padding: 9px 11px; border-left: 2px solid rgba(143, 123, 255, 0.4);
  background: rgba(143, 123, 255, 0.05); border-radius: 0 4px 4px 0;
}
/* A band with no match stays in view while a tag is searched or made. */
.review-workspace .rv-subrow.empty .rv-subrow-head { opacity: 0.55; }
.review-workspace .rv-tag.dim { opacity: 0.32; }
.review-workspace .rv-bandpick { background: transparent; border: 1px solid var(--rv-edge); color: var(--rv-text); border-radius: 6px; padding: 4px 8px; font: 0.8rem var(--rv-sans); }
.review-workspace .rv-in-band { color: var(--rv-muted); font-size: 0.8rem; }
.review-workspace .rv-landed { font: 0.78rem var(--rv-mono); color: var(--rv-muted); white-space: normal; overflow-wrap: anywhere; }
/* What was said, opened: a row of its own across the table. */
.review-workspace .rv-table tr.rv-evrow > td { padding: 0 12px 12px; }
.review-workspace .rv-evrow .rv-ev-body { margin-top: 0; max-width: none; font-size: 0.86rem; line-height: 1.5; }
.review-workspace .rv-evrow .rv-ev-line { white-space: pre-wrap; }
.review-workspace .rv-gkind { color: var(--rv-gold, #ffc44d); font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; font-size: 0.72rem; }
.review-workspace .rv-gwhere .sep { color: var(--rv-muted); padding: 0 5px; }
.review-workspace a.rv-glookup { font-size: 0.72rem; color: var(--rv-blue); text-decoration: none; border: 1px solid rgba(88, 185, 230, 0.4); border-radius: 999px; padding: 1px 8px; margin-left: 8px; white-space: nowrap; }
.review-workspace a.rv-glookup:hover, .review-workspace a.rv-glookup:focus-visible { background: rgba(88, 185, 230, 0.16); }
.review-workspace .rv-table tr.review-fact-evrow > td { padding: 0 12px 10px 12px; }
.review-workspace .review-fact-evrow .review-fact-ev { margin-left: 0; }
.review-workspace .review-fact-evrow .review-fact-ev-body { max-width: none; }
.review-workspace .rv-evparts { display: grid; gap: 8px; max-height: 40em; overflow: auto; }
.review-workspace .rv-evpart .rv-evlbl { display: block; color: #8fa3bd; font: 600 0.68rem ui-monospace, Consolas, monospace; letter-spacing: 0.08em; text-transform: uppercase; margin: 0 0 3px; }
.review-workspace .rv-evpart.is-fact .rv-evlbl { color: #ffc44d; }
.review-workspace .rv-evpart.is-fact blockquote { border-left-color: #ffc44d; }
.review-workspace .rv-ev-body mark.rv-hit { background: rgba(255, 196, 77, 0.32); color: #fff; padding: 0 3px; border-radius: 3px; box-shadow: 0 0 0 1px rgba(255, 196, 77, 0.55); font-weight: 700; }
.review-workspace .rv-movepages { display: contents; }
.review-workspace .rv-gtools .rv-change { margin-left: 10px; color: var(--rv-blue); font-size: 0.8rem; text-decoration: underline; }
.review-workspace .rv-gtools .rv-change:hover, .review-workspace .rv-gtools .rv-change:focus-visible { color: #fff; }
.review-workspace .rv-livesin { display: flex; align-items: center; gap: 10px; margin: 10px 0 4px; }
.review-workspace .rv-livesin[hidden] { display: none; }
.review-workspace .rv-livesin .rv-text { max-width: 26rem; }
.review-workspace .rv-chipgroup { display: block; margin: 2px 0 6px; }
.review-workspace .rv-chiphead { display: inline-block; min-width: 6.5rem; color: var(--rv-muted); font: 500 0.7rem/1 var(--rv-mono); letter-spacing: 0.1em; text-transform: uppercase; margin-right: 6px; }
.review-workspace .rv-chipnote { color: var(--rv-violet); font-size: 0.78rem; font-style: italic; margin-left: 8px; }
.review-workspace .rv-chip input:disabled + span { opacity: 0.45; }
.review-workspace .rv-ptag .from { color: var(--rv-muted); font-size: 0.72rem; font-style: italic; margin-left: 2px; }
.review-workspace .rv-movepages .rv-subrow-head { grid-column: 1 / -1; margin: 6px 0 0; }
.review-workspace .rv-movepage b::before { content: "→ "; color: var(--rv-violet); }
.review-workspace .rv-status .rv-landed { display: block; margin-top: 2px; }
.review-workspace .rv-subrow-head { font: 700 0.66rem/1 var(--rv-mono); letter-spacing: 0.06em; color: var(--rv-violet); margin: 0 0 7px; }
.review-workspace .rv-tag {
  display: inline-block; border: 1px solid var(--rv-edge); border-radius: 4px; background: rgba(5, 13, 19, 0.7); color: var(--rv-text);
  font: 0.78rem var(--rv-mono); padding: 4px 9px; cursor: pointer; margin: 0 6px 6px 0;
}
.review-workspace .rv-tag input { position: absolute; opacity: 0; width: 0; height: 0; }
.review-workspace .rv-tag:hover { border-color: rgba(143, 123, 255, 0.6); }
.review-workspace .rv-tag span::before { content: "#"; opacity: 0.45; }
.review-workspace .rv-tag.on, .review-workspace .rv-tag:has(input:checked) {
  background: linear-gradient(115deg, rgba(88, 185, 230, 0.22), rgba(143, 123, 255, 0.3)); border-color: var(--rv-violet); color: #fff;
}
.review-workspace .rv-tag.on span::before, .review-workspace .rv-tag:has(input:checked) span::before { opacity: 1; }
.review-workspace .rv-tag.best { border-color: rgba(111, 189, 123, 0.75); }
.review-workspace .rv-tag.mine { border-style: dashed; border-color: rgba(111, 189, 123, 0.6); }
.review-workspace .rv-adv-note { font-size: 0.77rem; color: var(--rv-muted); margin-top: 11px; }
.review-workspace .rv-adv-note code { font: 0.78rem var(--rv-mono); color: #cfe4ff; }
.review-workspace .rv-empty { padding: 26px; color: var(--rv-muted); text-align: center; border: 1px solid var(--rv-edge); border-top: 0; border-radius: 0 0 5px 5px; }

/* ---- facts table ---- */
.review-workspace .rv-facts { width: 100%; border-collapse: collapse; }
.review-workspace .rv-facts thead th {
  background: var(--rv-rail-head); border-bottom: 1px solid var(--rv-gold-line); color: #dcebf5;
  font: 700 0.72rem/1 var(--rv-serif); letter-spacing: 0.04em; text-transform: uppercase; padding: 9px 12px; text-align: left; white-space: nowrap;
}
.review-workspace .rv-facts thead th.rv-conf { text-align: right; }
.review-workspace .rv-facts tbody td { border-bottom: 1px solid rgba(50, 101, 129, 0.25); padding: 13px 12px; vertical-align: top; }
.review-workspace .rv-item:hover { background: rgba(88, 185, 230, 0.04); }
.review-workspace .rv-item.settled { background: rgba(111, 189, 123, 0.05); }
.review-workspace .rv-id { font: 0.78rem var(--rv-mono); background: rgba(255, 255, 255, 0.06); border: 1px solid var(--rv-edge); border-radius: 3px; padding: 2px 6px; white-space: nowrap; }
.review-workspace td.rv-conf { font-variant-numeric: tabular-nums; font-weight: 700; text-align: right; white-space: nowrap; }
.review-workspace td.rv-conf.hi { color: var(--rv-good); }
.review-workspace td.rv-conf.mid { color: var(--rv-warn); }
.review-workspace td.rv-conf.lo { color: var(--rv-bad); }
.review-workspace .rv-sess { color: var(--rv-muted); font-size: 0.84rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
.review-workspace .rv-facts .rv-claim { font-size: 0.93rem; max-width: 520px; }
.review-workspace .rv-decide { white-space: nowrap; }

/* Discarding a review is deliberate and rare: a folded details block at the
   foot of the page, with the form inside as the confirmation step. The held
   page (discarded, or waiting behind an older session) is a single card. */
.review-workspace .rv-discard { margin: 1.2rem 0 0; padding: 0.6rem 0.9rem; border: 1px dashed var(--edge, rgba(120, 140, 160, 0.45)); border-radius: 6px; }
.review-workspace .rv-discard summary { cursor: pointer; font-size: 0.86rem; color: var(--muted, #8fa3bd); }
.review-workspace .rv-discard p { margin: 0.6rem 0; max-width: 60ch; font-size: 0.9rem; }
.review-workspace .rv-discard .review-discard-button { border-color: var(--bad, #da6c6c); color: var(--bad, #da6c6c); }
.review-workspace .review-held .review-held-body p { max-width: 62ch; }
.review-workspace .review-held .review-held-body code { font-family: var(--mono, ui-monospace, Consolas, monospace); font-size: 0.9em; }

/* A fact change folds under the record picker: a small grid of the field,
   the new state, how it changed, and two optional notes. */
.review-workspace .rv-change-state { margin: 0.5rem 0 0.6rem; padding: 0.4rem 0.7rem; border: 1px dashed var(--edge, rgba(120, 140, 160, 0.45)); border-radius: 6px; }
.review-workspace .rv-change-state summary { cursor: pointer; font-size: 0.86rem; color: var(--muted, #8fa3bd); }
.review-workspace .rv-change-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.5rem 0.8rem; margin-top: 0.5rem; }
.review-workspace .rv-change-grid label { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.82rem; }
.review-workspace .rv-filed.rv-changed { display: block; }

/* The plain destination select is the no-script fallback; once the script
   has cloned the chips into the family it is disabled and hidden. */
.review-workspace form[data-rv-enhanced="true"] .rv-nojs { display: none; }

/* Screen-reader-only text, which the Move control's label relies on. */
.review-workspace .visually-hidden {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* ---- footer ---- */
.review-workspace .rv-foot h2 { margin: 0; font: 700 0.95rem var(--rv-serif); }
.review-workspace .rv-foot p { margin: 2px 0 0; color: var(--rv-muted); font-size: 0.82rem; }


/* ---- phone held sideways, tablet held upright (901px to 1024px) ----
   The desktop review layout starts at 1025px. Below that the names and facts
   tables stack into cards exactly as they do on a narrow phone; the 720px and
   900px blocks above stay for the narrow phone rules that only make sense
   there. */
@media (max-width: 1024px) {
  .review-workspace .rv-thead { display: none; }
  .review-workspace .rv-table, .review-workspace .rv-table tbody, .review-workspace .rv-table tr, .review-workspace .rv-table td { display: block; width: auto; }
  .review-workspace .rv-table .rv-pick { padding-left: 12px; }
  .review-workspace .rv-table .rv-times, .review-workspace .rv-table .rv-match { display: inline-block; text-align: left; margin: 4px 10px 0 0; }
  .review-workspace .rv-table .rv-move { text-align: left; }
  .review-workspace .rv-gtools { margin-left: 0; width: 100%; }
  .review-workspace .rv-landing .rv-sweep { margin-left: 0; }
  .review-workspace .rv-facts, .review-workspace .rv-facts tbody, .review-workspace .rv-facts tr, .review-workspace .rv-facts td { display: block; }
  .review-workspace .rv-facts thead { display: none; }
  .review-workspace .review-fact-table thead { display: none; }
  .review-workspace .review-fact-table tbody td { display: block; padding: 4px 12px; }
  .review-workspace .review-fact-row > td:first-child { padding-top: 12px; }
  .review-workspace .review-fact-conf { text-align: left; }
  /* An undecided fact has no status yet; the empty pill was a puzzling box. */
  .review-workspace .rv-status-empty { display: none; }
  .review-workspace .review-fact-table td:has(> .rv-status-empty:only-child) { display: none; }
}


/* ---- connected notes: the local graph behind a toggle on every note ----
   Obsidian's local-graph look in the site's colours, driven by the campaign
   graph page's script: small solid dots (the script sizes them by degree, the
   scale below keeps them small), the note being read larger and light, thin
   lines, quiet labels, no box around the drawing. */
.note-graph { margin: 0.9rem 0 1.1rem; border: 1px solid var(--bs-border, var(--border, #26384a)); border-radius: 0.4rem; background: transparent; }
.note-graph > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 0.9rem; font-weight: 700; color: var(--bs-text, var(--text, #e6e9ef)); }
.note-graph > summary::-webkit-details-marker { display: none; }
.note-graph > summary::before { content: "\25B8"; color: #58b9e6; }
.note-graph[open] > summary::before { content: "\25BE"; }
.note-graph-count { font: 700 0.72rem/1 var(--review-sans, "Segoe UI", system-ui, sans-serif); background: #14324a; color: #9fd8f5; border-radius: 999px; padding: 0.3rem 0.55rem; }
.note-graph-body { padding: 0 0.6rem 0.9rem; }
.note-graph .relationship-graph { background: transparent; min-height: 0; border-radius: 0.35rem; }
.note-graph .relationship-graph svg { min-height: 0; height: auto; aspect-ratio: 900 / 600; display: block; width: 100%;
  user-select: none; -webkit-user-select: none; touch-action: pan-y; cursor: grab; }
.note-graph .relationship-graph svg:active { cursor: grabbing; }
.note-graph .graph-node { cursor: pointer; touch-action: none; }
.note-graph-controls { display: flex; align-items: center; gap: 0.4rem; margin: 0.45rem 0.3rem 0; flex-wrap: wrap; }
.note-graph-ctl { min-width: 2.2rem; height: 2.2rem; padding: 0 0.6rem; border-radius: 0.4rem; border: 1px solid var(--bs-border, var(--border, #26384a));
  background: #14324a; color: #9fd8f5; font: 700 1rem/1 var(--review-sans, "Segoe UI", system-ui, sans-serif); cursor: pointer; }
.note-graph-ctl-text { font-size: 0.82rem; letter-spacing: 0.02em; }
.note-graph-ctl:hover, .note-graph-ctl:focus-visible { background: #1c4460; color: #fff; outline: none; }
.note-graph-hint { font-size: 0.76rem; color: var(--bs-muted, var(--muted, #8fa3bd)); margin-left: 0.2rem; }
.note-graph .graph-node text { pointer-events: none; }
.note-graph .relationship-lines line { stroke: rgba(224, 90, 97, 0.55); stroke-width: 1.1; stroke-linecap: round; }
.note-graph .relationship-lines line.is-between { stroke: rgba(88, 185, 230, 0.3); }
.note-graph .graph-node circle { fill: var(--graph-node-colour); stroke: none; filter: none; transform: scale(0.55); transform-box: fill-box; transform-origin: center; }
.note-graph .graph-node.is-centre circle { fill: #d6e6f2; transform: scale(0.9); filter: drop-shadow(0 0 6px rgba(214, 230, 242, 0.45)); }
.note-graph .graph-node text { fill: #8fa3bd; font-size: 12.5px; font-weight: 400; paint-order: stroke; stroke: #05070f; stroke-width: 3px; }
.note-graph .graph-node.is-centre text { fill: #e6e9ef; font-weight: 600; }
.note-graph .graph-node:hover circle, .note-graph .graph-node:focus circle { fill: #fff; filter: drop-shadow(0 0 6px var(--graph-node-colour)); }
.note-graph .graph-node.is-selected circle { stroke: #fff; stroke-width: 3; filter: drop-shadow(0 0 8px var(--graph-node-colour)); }
.note-graph .graph-node.is-selected text { fill: #fff; font-weight: 700; }
.note-graph-selection { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; flex-wrap: wrap; margin: 0.5rem 0.3rem 0; font-size: 0.82rem; color: var(--bs-muted, var(--muted, #8fa3bd)); }
.note-graph-selected { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.note-graph-selected strong { color: var(--bs-text, var(--text, #e6e9ef)); font-size: 0.9rem; overflow-wrap: anywhere; }
.note-graph-open { white-space: nowrap; }
.note-graph-open.is-disabled { opacity: 0.45; pointer-events: none; }
.note-graph-legend { display: flex; flex-wrap: wrap; gap: 0.5rem 0.9rem; margin: 0.5rem 0.3rem 0; font-size: 0.78rem; color: var(--bs-muted, var(--muted, #8fa3bd)); }
.note-graph-key i { display: inline-block; width: 0.6rem; height: 0.6rem; border-radius: 999px; margin-right: 0.35rem; background: var(--graph-node-colour); vertical-align: -0.02rem; }
.note-graph-more, .note-graph-foot { margin: 0.6rem 0.3rem 0; font-size: 0.8rem; color: var(--bs-muted, var(--muted, #8fa3bd)); line-height: 1.5; }

/* On a phone the whole drawing sits in a narrow box: dots and labels grow
   so they stay readable. Panning and dragging come from the script, so
   nothing scrolls sideways. */
@media (max-width: 640px) {
  .note-graph .graph-node circle { transform: scale(0.85); }
  .note-graph .graph-node.is-centre circle { transform: scale(1.2); }
  .note-graph .graph-node text { font-size: 20px; }
  .note-graph .relationship-lines line { stroke-width: 1.8; }
}

/* Session prep: the DM seeds names before the game (checker look, one form). */
.review-workspace .prep-form .rv-note { display: block; margin: 0.5rem 0; }
.review-workspace .prep-form .rv-note > small { display: block; margin-top: 0.25rem; font-size: 0.78rem; }
.review-workspace .prep-form .rv-text { width: 100%; box-sizing: border-box; }
.review-workspace .prep-form textarea.rv-text { min-height: 5rem; resize: vertical; }
.review-workspace .prep-form [data-prep-console-slot]:not(:empty) + .rv-nojs { display: none; }
.review-workspace .prep-table .prep-path { display: block; color: var(--rv-muted); font-size: 0.72rem; font-family: var(--rv-mono); }
.review-workspace .prep-hidden { color: var(--rv-warn); font-weight: 600; }
.review-workspace .prep-partly { color: var(--rv-ok); font-weight: 600; }
.review-workspace .prep-reveal-mode { display: block; margin: 0.35rem 0 0.25rem; font-size: 0.82rem; }
.review-workspace .prep-reveal-mode select { margin-left: 0.3rem; font: inherit; }
.review-workspace .prep-reveal-parts { margin: 0.25rem 0; font-size: 0.8rem; }
.review-workspace .prep-reveal-parts summary { cursor: pointer; color: var(--rv-muted); }
.review-workspace .prep-part { display: block; margin: 0.15rem 0 0 0.6rem; }
.review-workspace .prep-heard { color: var(--rv-ok); font-weight: 600; }
.review-workspace .prep-row-heard { background: color-mix(in srgb, var(--rv-ok) 8%, transparent); }
.review-workspace .prep-portrait { color: var(--rv-accent); font-size: 0.7em; vertical-align: middle; }
.review-workspace .prep-action { display: inline-block; margin: 0.35rem 0.4rem 0 0; }
.review-workspace .prep-action button { padding: 0.35rem 0.7rem; font-size: 0.8rem; }
.review-workspace .prep-actions { white-space: nowrap; }
.review-workspace .prep-heard-line { margin: 0 0 0.75rem; }
.review-workspace .prep-form input[type=file].rv-text { padding: 0.4rem; }

/* The prep page in the checker's own shape (Harry, 6 September: "this dont
   look like the checker"): its sections were bare rv-group blocks on the dark
   ground with the workspace stretched to the whole desktop window. Each step
   is a card like the checker's session card, the page keeps a readable
   width, and the controls take the checker's sizes. */
.review-workspace.prep-page .review-page {
  max-width: 92rem; margin-inline: auto; padding: 0 0.85rem 2.5rem; box-sizing: border-box;
}
/* Harry, 12 September 2026: the prep page is wider than the checker, and the
   Section and Category chip rows sit one under the other in even rows
   instead of side by side with a floating arrow. */
.review-workspace.prep-page .review-topbar { max-width: 92rem; }
.review-workspace.prep-page .rv-track { flex-direction: column; align-items: stretch; gap: 12px; }
.review-workspace.prep-page .rv-track > div { min-width: 0; }
.review-workspace.prep-page .rv-arrow { display: none; }
.review-workspace.prep-page .rv-chips { max-width: none; gap: 8px; }
.review-workspace.prep-page .rv-chip { padding: 6px 14px; }
/* The top bar the checker and the prep page share: brand, campaign, one link. */
.review-workspace .review-topbar {
  display: flex; align-items: center; justify-content: space-between; gap: 0.75rem;
  max-width: 68rem; margin: 0 auto 0.85rem; padding: 0.75rem 0.85rem 0; box-sizing: border-box;
}
.review-workspace .review-brand { display: flex; align-items: center; gap: 0.6rem; min-width: 0; }
.review-workspace .review-logo {
  flex: 0 0 auto; width: 2rem; height: 2rem; border-radius: 8px; display: grid; place-items: center;
  background: var(--rv-sweep-strong); color: #04121c; font: 800 1rem/1 var(--rv-sans);
}
.review-workspace .review-brand p { margin: 0; }
.review-workspace .review-title { font: 700 0.95rem/1.2 var(--rv-sans); }
.review-workspace .review-subtitle { font: 400 0.8rem/1.2 var(--rv-sans); color: var(--rv-muted); }
.review-workspace .review-wiki-link {
  flex: 0 0 auto; border: 1px solid var(--rv-edge); border-radius: 999px; padding: 0.4rem 0.85rem;
  font: 600 0.8rem/1 var(--rv-sans); color: var(--review-cyan); text-decoration: none; white-space: nowrap;
}
.review-workspace.prep-page .review-session-card { border-radius: 10px; }
.review-workspace.prep-page .rv-group {
  border: 1px solid var(--rv-edge); border-left: 2px solid var(--review-cyan); border-radius: 10px;
  background: linear-gradient(105deg, rgba(7, 20, 29, 0.98), rgba(6, 15, 23, 0.98));
  box-shadow: 0 0.7rem 2.2rem rgba(0, 0, 0, 0.18);
  padding: 0.9rem 1rem 1rem; margin: 0 0 0.85rem;
}
.review-workspace.prep-page .rv-group > .rv-q:first-child { margin-top: 0; }
.review-workspace.prep-page .prep-form .rv-q { margin: 1.1rem 0 0.55rem; }
.review-workspace.prep-page .prep-form .rv-q:first-of-type { margin-top: 0; }
.review-workspace.prep-page .prep-form .rv-note {
  display: grid; gap: 0.35rem; margin: 0.55rem 0; font: 600 0.86rem/1.3 var(--rv-sans); color: var(--rv-ink, #dfe9f1);
}
.review-workspace.prep-page .prep-form .rv-text,
.review-workspace.prep-page .prep-form select {
  width: 100%; box-sizing: border-box; font: 400 0.95rem/1.35 var(--rv-sans); color: inherit;
  background: #061019; border: 1px solid var(--rv-edge); border-radius: 8px; padding: 0.6rem 0.7rem;
}
.review-workspace.prep-page .prep-form .rv-text:focus,
.review-workspace.prep-page .prep-form select:focus { outline: 2px solid var(--review-cyan); outline-offset: 1px; }
.review-workspace.prep-page .prep-form textarea.rv-text { min-height: 6rem; }
.review-workspace.prep-page .prep-form .rv-note > small { font-weight: 400; color: var(--rv-muted); }
.review-workspace.prep-page .prep-form .rv-landing { margin-top: 1.1rem; display: flex; justify-content: flex-end; }
.review-workspace.prep-page .prep-form .rv-sweep { font-size: 0.92rem; padding: 0.65rem 1.2rem; }
.review-workspace.prep-page .rv-adv-note { margin: 0.75rem 0 0; font-size: 0.8rem; }
.review-workspace.prep-page .prep-list .rv-empty,
.review-workspace.prep-page .prep-drafts-list .rv-empty { padding: 1.2rem 0.5rem; text-align: center; }
.review-workspace.prep-page .rv-table th,
.review-workspace.prep-page .rv-table td { padding: 0.5rem 0.55rem; text-align: left; vertical-align: top; border-top: 1px solid var(--rv-edge); }
.review-workspace.prep-page .rv-table th { font: 700 0.7rem/1 var(--rv-sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--rv-blue); border-top: 0; }
@media (min-width: 1025px) {
  .review-workspace.prep-page .review-page { max-width: 68rem; margin-inline: auto; width: auto; }
  .review-workspace.prep-page .prep-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 1.5rem; }
  .review-workspace.prep-page .prep-form > .rv-q,
  .review-workspace.prep-page .prep-form > .rv-landing,
  .review-workspace.prep-page .prep-form > .rv-adv-note,
  .review-workspace.prep-page .prep-form > [data-prep-console-slot],
  .review-workspace.prep-page .prep-form > .rv-nojs,
  .review-workspace.prep-page .prep-form > input[type=hidden] { grid-column: 1 / -1; }
}
.review-workspace .rv-notice { padding: 0.6rem 0.9rem; border-radius: 0.35rem; border: 1px solid var(--rv-edge); }
.review-workspace .rv-notice.ok { color: var(--rv-good); }
.review-workspace .rv-notice.err { color: var(--rv-bad); }
@media (max-width: 1024px) { .review-workspace .prep-table, .review-workspace .prep-table tbody, .review-workspace .prep-table tr, .review-workspace .prep-table td { display: block; width: auto; } .review-workspace .prep-table .rv-thead { display: none; } }

/* ---- every list in the Plane picker's look (Harry, 5 September) ---- */
.review-workspace .rv-movelist { display: block; border: 1px solid #24384d; border-radius: 6px; background: #071019; max-height: 260px; overflow-y: auto; margin-top: 9px; padding: 0; }
.review-workspace .rv-moveopt { display: flex; flex-direction: row; justify-content: space-between; align-items: center; width: 100%; padding: 7px 11px; border: 0; border-bottom: 1px solid rgba(36, 56, 77, 0.6); border-radius: 0; background: transparent; }
.review-workspace .rv-moveopt:hover { background: #142334; border-color: rgba(36, 56, 77, 0.6); }
.review-workspace .rv-movelist .rv-adv-note { padding: 7px 11px; margin: 0; }
.review-workspace .rv-movepages { padding: 0; }
.review-workspace .review-entity-search-results,
.review-workspace [data-review-match-results],
.review-workspace [data-review-entity-results] { grid-template-columns: minmax(0, 1fr); gap: 0; border: 1px solid #24384d; border-radius: 6px; background: #071019; padding: 0; }
.review-workspace .review-entity-result { min-height: auto; padding: 6px 11px; border: 0; border-bottom: 1px solid rgba(36, 56, 77, 0.6); border-radius: 0; background: transparent; gap: 0.5rem; align-items: center; }
.review-workspace .review-entity-result:is(:hover, :focus-within),
.review-workspace .review-entity-result.is-selected,
.review-workspace .review-entity-result:has(input:checked) { background: #142334; border-color: rgba(36, 56, 77, 0.6); box-shadow: none; }
.review-workspace .review-entity-result-copy { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.review-workspace .review-entity-result-meta, .review-workspace .review-entity-result-path { font: 0.76rem "IBM Plex Mono", ui-monospace, monospace; color: #8a9bb0; }

/* Drop a run of facts (Part 10, 21 September 2026): first and last ID, one answer, one reason. */
.review-workspace .rv-run-drop {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 0 0 12px; padding: 10px 12px;
  border: 1px solid rgba(143, 123, 255, 0.35); border-radius: 8px; background: rgba(5, 13, 19, 0.55);
}
.review-workspace .rv-run-drop-title { font-weight: 600; color: var(--rv-text); margin-right: 4px; }
.review-workspace .rv-run-drop label { display: inline-flex; align-items: center; gap: 6px; font-size: 0.82rem; color: var(--rv-muted); }
.review-workspace .rv-run-drop input,
.review-workspace .rv-run-drop select {
  background: rgba(5, 13, 19, 0.85); color: var(--rv-text); border: 1px solid var(--rv-blue); border-radius: 5px;
  padding: 7px 9px; font: 0.86rem/1.3 var(--rv-sans);
}
.review-workspace .rv-run-drop input[name="review_note"] { min-width: 220px; flex: 1 1 220px; }
.review-workspace .rv-run-drop small { flex-basis: 100%; color: var(--rv-muted); font-size: 0.78rem; }

/* Moments (Harry, 13 September 2026): one card per 15 seconds of the game,
   the lines once, the facts under them as a tick list, one save. */
.review-workspace .review-moments .review-help { color: var(--rv-muted); font-size: 0.9rem; margin: 0 0 12px; }
.review-workspace .rv-moment { border: 1px solid var(--rv-edge); border-radius: 12px; padding: 12px 14px; margin: 0 0 14px; background: rgba(255,255,255,0.02); scroll-margin-top: 5.5rem; }
.review-workspace .rv-moment-head { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: baseline; margin-bottom: 8px; }
.review-workspace .rv-moment-n { font-weight: 700; color: var(--rv-text); }
.review-workspace .rv-moment-when, .review-workspace .rv-moment-win { color: var(--rv-muted); font-size: 0.85rem; }
.review-workspace .rv-moment-count { margin-left: auto; color: var(--rv-text); }
.review-workspace .rv-moment-ev { margin-bottom: 10px; }
.review-workspace .rv-moment-ev blockquote { margin: 0; white-space: normal; }
.review-workspace .rv-moment-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.review-workspace .rv-moment-fact { display: flex; align-items: flex-start; gap: 10px; padding: 8px 10px; border-radius: 8px; background: rgba(255,255,255,0.03); }
.review-workspace .rv-moment-fact.is-folded { opacity: 0.7; margin-left: 22px; }
.review-workspace .rv-moment-tick { display: flex; align-items: flex-start; gap: 10px; flex: 1 1 auto; cursor: pointer; }
.review-workspace .rv-moment-tick input { margin-top: 3px; width: 18px; height: 18px; flex: 0 0 auto; }
.review-workspace .rv-moment-tick .review-fact-statement { flex: 1 1 auto; }
.review-workspace .rv-chip-same { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px; font-size: 0.72rem; background: rgba(255, 196, 0, 0.16); color: #ffd666; }
.review-workspace .rv-moment-fix { flex: 0 0 auto; font-size: 0.85rem; color: var(--rv-muted); text-decoration: underline; padding: 10px 12px; min-height: 44px; display: inline-flex; align-items: center; }
.review-workspace .rv-moment-later-note { color: var(--rv-muted); font-size: 0.8rem; font-style: italic; }
/* The fix link lands on a fact's own row; keep it clear of the sticky bar. */
.review-workspace .rv-factform { scroll-margin-top: 5.5rem; }
.review-workspace .rv-moment-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 10px; }
.review-workspace .rv-moment-dropas { color: var(--rv-muted); font-size: 0.85rem; display: inline-flex; gap: 6px; align-items: center; }
.review-workspace .rv-moment-save { margin-left: auto; }
/* Laptop first (Harry, 13 September 2026): the transcript on the left, the
   tick list on the right, so a whole moment fits one screen at 92rem. */
.review-workspace .rv-moment-body { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) {
  .review-workspace .rv-moment-body { grid-template-columns: minmax(0, 11fr) minmax(0, 10fr); align-items: start; }
  .review-workspace .rv-moment-ev { margin-bottom: 0; position: sticky; top: 5.5rem; }
  .review-workspace .rv-moment-ev blockquote { max-height: 60vh; overflow: auto; }
}
@media (max-width: 640px) {
  .review-workspace .rv-moment { padding: 10px; }
  .review-workspace .rv-moment-save { margin-left: 0; flex: 1 1 100%; }
}

/* The prep page is wider than the checker (Harry, 12 September 2026); this
   sits last so no earlier .review-page width wins. */
.review-workspace.prep-page .review-page,
.review-workspace.prep-page .review-topbar { max-width: 92rem; }

/* Click a transcript line to hear it (13 September 2026). The transcript page
   used to be one run-on paragraph; each stamped line is now its own row with
   the time, the speaker and a play button, and the line that is playing is
   marked. The same rows sit inside the checker's "Read the transcript" and
   Moments blocks. */
.transcript-lines { margin: 0.6rem 0 1rem; }
.transcript-lines .tl {
  display: grid; grid-template-columns: auto auto 1fr; column-gap: 0.5rem; align-items: baseline;
  margin: 0; padding: 0.22rem 0.35rem; border-radius: 0.35rem; line-height: 1.45;
}
.transcript-lines .tl.tl-plain { grid-template-columns: 1fr; }
.transcript-lines:not([data-transcript-audio]) .tl { grid-template-columns: auto 1fr; }
.transcript-lines .tl-body { min-width: 0; }
.transcript-lines .tl-time { font-variant-numeric: tabular-nums; font-size: 0.78rem; opacity: 0.7; }
.transcript-lines .tl-who { font-weight: 700; }
.transcript-lines .tl-text { overflow-wrap: anywhere; }
[data-transcript-audio] .tl { cursor: pointer; }
[data-transcript-audio] .tl:hover { background: rgba(120, 150, 255, 0.10); }
[data-transcript-audio] .tl.is-playing { background: rgba(120, 150, 255, 0.22); box-shadow: inset 3px 0 0 #6b8cff; }
.tl-play {
  appearance: none; border: 1px solid rgba(120, 150, 255, 0.5); background: transparent; color: inherit;
  border-radius: 999px; width: 1.6rem; height: 1.6rem; padding: 0; font-size: 0.7rem; line-height: 1;
  cursor: pointer; vertical-align: middle; margin-right: 0.35rem; flex: 0 0 auto;
}
.tl-play:hover, .tl-play:focus-visible { background: rgba(120, 150, 255, 0.25); outline: none; }
/* Pinned under the site's app bar (2.65rem; 3.25rem on narrow screens), on an
   opaque ground, so the controls stay reachable while reading further down. */
.tl-player-holder { position: sticky; top: 2.65rem; z-index: 3; padding: 0.4rem 0; background: var(--bg, #0b1017); }
@media (max-width: 1024px) { .tl-player-holder { top: 3.25rem; } }
.tl-player { width: 100%; max-width: 40rem; height: 36px; }
.tl-audio-note { margin: 0.3rem 0; font-size: 0.82rem; }
/* Inside a checker card the lines are joined with <br>; a span per line keeps
   the layout the card already has and adds only the button and the mark. */
.review-workspace .tl { display: inline; padding: 0.05rem 0.2rem; border-radius: 0.25rem; }
.review-workspace .tl .tl-play { width: 1.3rem; height: 1.3rem; font-size: 0.6rem; margin-right: 0.3rem; }
.review-workspace .tl-player-holder { position: static; padding: 0.2rem 0 0.4rem; }
.review-workspace .tl-player { height: 32px; }

/* The Import page (13 September 2026): the import's own lines under the form. */
.review-workspace .import-lines { margin: 0.5rem 0 0; padding-left: 1.1rem; font-size: 0.82rem; }
.review-workspace .import-lines li { margin: 0.15rem 0; }
.review-workspace .import-form input[type=file].rv-text, .review-workspace .import-form input[type=date].rv-text { padding: 0.4rem; }
