body { background: #f6f7f9; }

/* Home page: a subtle golden radial wash behind the dashboard, plus a
   white->grey radial so the page edges fade into a darker hue. */
#app.dash-bg {
  background-image:
    radial-gradient(ellipse at 50% 0%, rgba(212, 175, 55, .24) 0%, rgba(212, 175, 55, 0) 55%),
    radial-gradient(ellipse at center, #fff 0%, #e5e8ea 60%, #a9b1ba 100%);
  background-color: #f6f7f9;
  min-height: 100vh;
}
.table td, .table th { vertical-align: middle; }
.annotation-span { font-size: .85rem; max-width: 520px; word-break: break-word; }
.chip { cursor: pointer; }
.chip:hover { opacity: .85; }
.card-header { background: #fff; }
.navbar {
  transition: background-color 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.navbar.nav-downstream {
  background-color: #0d6efd !important;
}
.navbar-text { color: #adb5bd; }
.navbar-dark .navbar-nav .nav-link.active {
  color: #fff;
  font-weight: 600;
  background: rgba(255, 255, 255, .12);
  border-radius: .25rem;
}

/* Dashboard source->derived flow arrows (SVG overlay) */
.dash-flow { position: relative; }

/* Dashboard unload / exit animation */
@keyframes dashFlowUnload {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-8px);
  }
}

@keyframes flowLineFadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

.dash-flow.dash-unload #docCard .card,
.dash-flow.dash-unload #labelsCard .card,
.dash-flow.dash-unload #undefinedCard .card,
.dash-flow.dash-unload #definedCard .card,
.dash-flow.dash-unload .dash-badge-source,
.dash-flow.dash-unload .dash-badge-derived,
.dash-flow.dash-unload .dash-center-box,
.dash-flow.dash-unload .dash-underdefined-note {
  animation: dashFlowUnload 0.44s cubic-bezier(0.4, 0, 1, 1) forwards !important;
  animation-delay: 160ms !important;
}

/* Dashboard staged card loading & reveal animations */
@keyframes dashItemReveal {
  0% {
    opacity: 0;
    transform: translateY(14px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.dash-badge-source {
  animation: dashItemReveal 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 1000ms;
  min-width: 340px;
  display: inline-block;
  text-align: center;
}

.dash-badge-derived {
  animation: dashItemReveal 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 2000ms;
  min-width: 340px;
  display: inline-block;
  text-align: center;
}

.dash-badge-text {
  display: inline-block;
  transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1), transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  transform: scale(1);
  opacity: 1;
}

.dash-badge-text.badge-fading {
  opacity: 0;
  transform: scale(0.92);
}

#undefinedCard .card {
  animation: dashItemReveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 540ms;
}

#definedCard .card {
  animation: dashItemReveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 680ms;
}

.dash-underdefined-note {
  animation: dashItemReveal 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 760ms;
}

#flowArrows {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 5;
}

@keyframes flowLineFadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.flow-line {
  animation: flowLineFadeIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* Traveling pulse dots — driven by CSS offset-path (offset-distance is
   transform-composited, so the motion is GPU-accelerated and does not repaint
   per frame like the old stroke-dashoffset dash). */
.flow-pulse-dot {
  offset-path: var(--pulse-path);
  opacity: 0;
  pointer-events: none;
  will-change: offset-distance, opacity;
  animation: flowPulseDot var(--pulse-dur, 2.2s) linear var(--pulse-delay, 1000ms) var(--pulse-iters, 4) forwards;
}

@keyframes flowPulseDot {
  0% {
    offset-distance: 0%;
    opacity: 0;
  }
  6% {
    opacity: 0.95;
  }
  88% {
    opacity: 0.95;
  }
  100% {
    offset-distance: 100%;
    opacity: 0;
  }
}
.family-link .card { transition: border-color .15s ease, box-shadow .15s ease; }
.family-link:hover .card { border-color: #0d6efd; box-shadow: 0 .15rem .5rem rgba(0,0,0,.08); }
.family-link:hover { cursor: pointer; }

/* Dashboard family cards: Source Data carries a black scheme, Derived Samples
   carries the primary-blue scheme of the DERIVED SAMPLES badge. The variant
   class sits on the .card element itself. */
.dash-card-source {
  border: 2px solid #212529;
  background-color: #fff;
}
#docCard .dash-card-source {
  /* lightest edge at bottom-right (toward page center), darkening up-left */
  background-image: linear-gradient(135deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, 0) 100%);
}
#labelsCard .dash-card-source {
  /* lightest edge at bottom-left (toward page center), darkening up-right */
  background-image: linear-gradient(225deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, 0) 100%);
}
.dash-card-derived {
  border: 2px solid #0d6efd;
  background-color: #fff;
}
#definedCard .dash-card-derived {
  /* lightest corner at top-right (middle/top of the page), darkening down-left */
  background-image: linear-gradient(45deg, rgba(13, 110, 253, .10) 0%, rgba(13, 110, 253, 0) 100%);
}
#undefinedCard .dash-card-derived {
  /* lightest corner at top-left (middle/top of the page), darkening down-right */
  background-image: linear-gradient(315deg, rgba(13, 110, 253, .10) 0%, rgba(13, 110, 253, 0) 100%);
}
.dash-card-source .card-header,
.dash-card-derived .card-header { background: transparent; }
.dash-card-source .card-header strong,
.dash-card-derived .card-header strong { font-size: 1.25rem; }
.family-link:hover .dash-card-source { border-color: #212529; box-shadow: 0 .15rem .5rem rgba(0, 0, 0, .12); }
.family-link:hover .dash-card-derived { border-color: #0d6efd; box-shadow: 0 .15rem .5rem rgba(13, 110, 253, .20); }

/* Internal sub-tiles inside the family cards: darker border + soft drop
   shadow so they read clearly against the gradient backgrounds. */
.family-tile {
  border-color: #adb5bd;
  box-shadow: 0 .15rem .35rem rgba(0, 0, 0, .12);
  background-color: rgba(255, 255, 255, .5);
}

/* Classification page: bigger column labels; the Annotations/Sentences cells
   are click-to-toggle (counts <-> percentages). */
.labels-page #distHead .dist-cols th { font-size: 1.1rem; }
.labels-page .pct-toggle { cursor: pointer; }

/* Sticky column headers on the Documents table: pin just under the main nav */
.doc-table thead th {
  position: sticky;
  top: 56px;
  z-index: 5;
  background: #fff;
  box-shadow: inset 0 -1px 0 #dee2e6;
}

/* Samples page: the chips + count + Export line pins under the main nav; the
   table headers pin flush below it. The bottom padding is white (part of the
   sticky bar) so no table rows can show through between the two. */
.samples-subnav {
  position: sticky;
  top: 56px;
  z-index: 6;
  background: #fff;
  padding: 6px 0 12px;
  border-bottom: 1px solid #e9ecef;
}

.samples-table thead th {
  position: sticky;
  top: 106px;
  z-index: 5;
  background: #fff;
  box-shadow: inset 0 -1px 0 #dee2e6;
}

/* Annotator support stars (amber, like a rating) */
.support-stars {
  color: #f59e0b;
  letter-spacing: 1px;
  white-space: nowrap;
  cursor: help;
}

/* Document: mock-browser snapshot of the crawled page.
   The browser bar doubles as the sticky navigator (replaces the old sub-nav):
   it pins just under the main nav while the document scrolls beneath it. */
.doc-browser {
  background: #fff;
  border: 1px solid #d0d5dd;
  border-radius: .5rem;
  box-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .12);
}
.doc-browser-bar {
  position: sticky;
  top: 56px;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .75rem;
  background: #f1f3f5;
  border-bottom: 1px solid #e9ecef;
  border-radius: calc(.5rem - 1px) calc(.5rem - 1px) 0 0;
}
.doc-browser-bar .dot { width: 12px; height: 12px; border-radius: 50%; flex: 0 0 auto; }
.doc-back { flex: 0 0 auto; }
.doc-nav-group {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
}
.doc-arrow {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #ced4da;
  border-radius: .35rem;
  background: #fff;
  color: #212529;
  text-decoration: none;
  font-size: .9rem;
}
.doc-arrow:hover { background: #e9ecef; }
.doc-arrow.disabled { opacity: .35; pointer-events: none; }
.doc-browser-bar .dot.red { background: #ff5f57; }
.doc-browser-bar .dot.yellow { background: #febc2e; }
.doc-browser-bar .dot.green { background: #28c840; }
.doc-browser-url {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-size: .78rem;
  color: #6c757d;
  background: #fff;
  border: 1px solid #e9ecef;
  border-radius: .35rem;
  padding: .2rem .6rem;
}
.doc-id-box {
  flex: 0 0 auto;
  font-size: .78rem;
  color: #495057;
  background: #fff;
  border: 1px solid #ced4da;
  border-radius: .35rem;
  padding: .2rem .55rem;
  white-space: nowrap;
}
.doc-title {
  font-weight: 600;
  color: #212529;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 45%;
}
.doc-url {
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.doc-info {
  flex: 0 0 auto;
  cursor: pointer;
  color: #6c757d;
  font-size: .85rem;
  line-height: 1;
}
.doc-info:hover { color: #212529; }

/* Document body: main content + optional annotations inspector (right third) */
.doc-browser-body {
  display: flex;
  align-items: flex-start;
}
.doc-page {
  flex: 1 1 0;
  min-width: 0;
  background: #fff;
  padding: 2rem 2.5rem;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.02rem;
  line-height: 1.7;
  color: #1a1a1a;
}
.doc-block { margin-bottom: .75rem; }
.doc-heading { font-weight: 600; margin-bottom: .5rem; }
.doc-list { padding-left: 1.25rem; }

/* Document waterfall loading animation (classic browser progressive render) */
@keyframes docWaterfall {
  0% {
    opacity: 0;
    transform: translateY(12px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.doc-page .doc-block {
  animation: docWaterfall 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(min(var(--block-index, 0), 25) * 35ms);
}

.unit {
  border-radius: 2px;
  transition:
    background-color 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    font-size 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.unit.active {
  background: #fff3cd;
  box-shadow: 0 0 0 1px #ffe69c;
  cursor: default;
}
.unit.fragment { border-bottom: 1px dotted #adb5bd; }

/* Emphasis modes: the active kind stays solid and is enlarged +25%, the other
   kind is washed out and shrunk -25% */
.doc-page.mode-sentence .unit.sentence { font-size: 1.25em; }
.doc-page.mode-sentence .unit.fragment { opacity: .22; font-size: .75em; }
.doc-page.mode-fragment .unit.fragment { font-size: 1.25em; }
.doc-page.mode-fragment .unit.sentence { opacity: .22; font-size: .75em; }

/* Inspector-selected (click) and inspector-linked (hover) unit highlights */
.unit.ann-target { background: #cfe2ff; box-shadow: inset 0 0 0 1px #0d6efd; }
.unit.ann-hover { background: #e9ecef; }

/* Annotations Inspector panel (right third of the browser window) */
@keyframes inspectorFadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes inspectorFadeOut {
  0% { opacity: 1; }
  100% { opacity: 0; }
}

.doc-inspector {
  width: 33.3333%;
  min-width: 280px;
  position: sticky;
  top: calc(56px + 47px);
  max-height: calc(100vh - 56px - 47px);
  overflow-y: auto;
  border-left: 1px solid #e9ecef;
  background: #f8f9fa;
}

.doc-inspector:not(.d-none) {
  animation: inspectorFadeIn 0.3s ease-in-out both;
}

.doc-inspector.closing {
  animation: inspectorFadeOut 0.3s ease-in-out forwards !important;
}
.doc-inspector-head {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .5rem .75rem;
  background: #fff;
  border-bottom: 1px solid #dee2e6;
}
.doc-inspector-filters {
  position: sticky;
  top: 2.25rem;
  z-index: 1;
  display: flex;
  gap: .5rem;
  padding: .5rem .75rem;
  background: #f8f9fa;
  border-bottom: 1px solid #dee2e6;
}
.doc-inspector-list { padding: .6rem .75rem; }
.insp-row {
  border: 1px solid #dee2e6;
  border-radius: .3rem;
  padding: .4rem .5rem;
  margin-bottom: .4rem;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.15s ease, background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.insp-row:hover {
  border-color: #0d6efd;
  transform: translateX(-2px);
  box-shadow: 0 .1rem .35rem rgba(13, 110, 253, .12);
}
.insp-row.row-linked { border-color: #0d6efd; background: #e7f1ff; }
.insp-row-top { display: flex; align-items: center; gap: .35rem; margin-bottom: .25rem; }
.insp-text {
  font-size: .78rem;
  color: #495057;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.insp-status {
  margin-left: auto;
  font-size: .68rem;
  text-transform: uppercase;
  color: #6c757d;
}

/* Provenance note under the document snapshot */
.doc-provenance {
  margin-top: .75rem;
  padding: .5rem .75rem;
  background: #fff8e6;
  border: 1px solid #f0dfa8;
  border-radius: .25rem;
  font-size: .85rem;
  color: #6b5b1e;
}

/* Floating page-navigation arrows (labels <-> annotators <-> annotations) */
.page-nav-arrow {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  z-index: 40;
  width: 46px;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid #ced4da;
  border-radius: 50%;
  color: #212529;
  text-decoration: none;
  font-size: 1.3rem;
  box-shadow: 0 .15rem .5rem rgba(0, 0, 0, .12);
  transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.page-nav-arrow:hover {
  background: #e9ecef;
  transform: translateY(-50%) scale(1.08);
  box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .18);
}
.page-nav-arrow.left { left: 1rem; }
.page-nav-arrow.right { right: 1rem; }

/* Classification page staggered card & table animations */
@keyframes cardStaggerFade {
  0% {
    opacity: 0;
    transform: translateY(14px);
  }
  100% {
    opacity: 1;
  }
}

.labels-page > .card {
  animation: cardStaggerFade 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 40ms;
}

.labels-page .row > .col-md-6:nth-child(1) {
  animation: cardStaggerFade 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 180ms;
}

.labels-page .row > .col-md-6:nth-child(2) {
  animation: cardStaggerFade 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 260ms;
}

/* Classification sub-nav metric stat pills */
.stat-pill {
  cursor: pointer;
  padding: .25rem .5rem;
  border-radius: .25rem;
  transition: all 0.15s ease;
  user-select: none;
  font-weight: 600;
}

/* Base state colors */
.stat-pill[data-state="raw"] {
  background-color: #212529;
  color: #fff !important;
}

.stat-pill[data-state="overlap"] {
  color: #198754 !important;
}

.stat-pill[data-state="exclusion"] {
  color: #b45309 !important;
}

.stat-pill[data-state="inconclusive"] {
  color: #dc3545 !important;
}

/* Hover / Active state previews */
.stat-pill[data-state="raw"]:hover,
.stat-pill[data-state="raw"].active {
  background-color: #343a40;
  color: #fff !important;
}

.stat-pill[data-state="overlap"]:hover,
.stat-pill[data-state="overlap"].active {
  background-color: rgba(25, 135, 84, 0.15);
  color: #198754 !important;
}

.stat-pill[data-state="exclusion"]:hover,
.stat-pill[data-state="exclusion"].active {
  background-color: rgba(245, 158, 11, 0.18);
  color: #b45309 !important;
}

.stat-pill[data-state="inconclusive"]:hover,
.stat-pill[data-state="inconclusive"].active {
  background-color: rgba(220, 53, 69, 0.15);
  color: #dc3545 !important;
}

/* Locked state selections */
.stat-pill[data-state="raw"].locked {
  background-color: #000;
  color: #fff !important;
  box-shadow: 0 0 0 2px #212529;
}

.stat-pill[data-state="overlap"].locked {
  background-color: #198754;
  color: #fff !important;
}

.stat-pill[data-state="exclusion"].locked {
  background-color: #f59e0b;
  color: #212529 !important;
}

.stat-pill[data-state="inconclusive"].locked {
  background-color: #dc3545;
  color: #fff !important;
}
.labels-page > .card {
  animation: cardStaggerFade 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 40ms;
}

/* Larger, readable label badges on the Labels page */
.labels-page .badge { font-size: .95rem; padding: .5em .8em; }
.labels-page table thead th { font-size: 1.05rem; }

/* Unit Modal Body fade transition for prev/next overlay navigation */
#unitModalBody {
  transition: opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 1;
  transform: translateY(0);
}
#unitModalBody.fade-out {
  opacity: 0;
  transform: translateY(4px);
}

/* Sticky hover tooltip with fade-in / fade-out delay and position glide */
.hover-tip {
  display: block;
  position: fixed;
  z-index: 1100;
  max-width: 420px;
  padding: .4rem .6rem;
  background: #212529;
  color: #fff;
  font-size: .8rem;
  border-radius: .3rem;
  box-shadow: 0 .2rem .5rem rgba(0,0,0,.3);
  pointer-events: none;
  white-space: normal;
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
  transition:
    opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
    left 0.22s cubic-bezier(0.16, 1, 0.3, 1),
    top 0.22s cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0.2s step-end;
}
.hover-tip.visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition:
    opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
    left 0.22s cubic-bezier(0.16, 1, 0.3, 1),
    top 0.22s cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0s;
  transition-delay: 80ms;
}
.hover-tip .badge { font-size: .7rem; }

/* Table row staggering fade-in & fade-out keyframes */
@keyframes rowFadeIn {
  0% {
    opacity: 0;
    transform: translateY(8px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes rowFadeOut {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-6px);
  }
}

/* Staggered row fade-in on load */
.stagger-table tbody tr {
  animation: rowFadeIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: calc(var(--row-index, 0) * 18ms);
}

/* Staggered row fade-out on filter reset / unload */
.stagger-table tbody tr.row-fade-out {
  animation: rowFadeOut 0.16s cubic-bezier(0.4, 0, 1, 1) forwards !important;
  animation-delay: calc(var(--row-index, 0) * 10ms) !important;
}

/* Requirement 4: Ease-in-out transition on background colors & selection outlines for table rows */
.table tbody tr,
.doc-table tbody tr,
.samples-table tbody tr,
.stagger-table tbody tr {
  transition:
    background-color 0.18s ease-in-out,
    box-shadow 0.18s ease-in-out,
    outline 0.18s ease-in-out,
    border-color 0.18s ease-in-out,
    opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.table-hover tbody tr:hover,
.doc-table tbody tr:hover,
.samples-table tbody tr:hover,
.stagger-table tbody tr:hover {
  background-color: rgba(13, 110, 253, 0.05) !important;
  box-shadow: inset 0 0 0 1px rgba(13, 110, 253, 0.22);
}

.doc-table tbody tr:active,
.samples-table tbody tr:active,
.table tbody tr.selected {
  background-color: rgba(13, 110, 253, 0.1) !important;
  box-shadow: inset 0 0 0 2px #0d6efd;
}

/* View Transitions API configuration for smooth cross-fades between SPA routes */
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 0.25s;
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Filter label box expand/collapse transition */
.filter-label-boxes {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transform: translateY(-6px);
  transition:
    max-height 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    margin-top 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  margin-top: 0 !important;
  pointer-events: none;
}

.filter-label-boxes.open {
  max-height: 350px;
  opacity: 1;
  transform: translateY(0);
  margin-top: 0.25rem !important;
  pointer-events: auto;
}

/* Accessibility: respect user preferences for reduced motion */
@media (prefers-reduced-motion: reduce) {
  .unit,
  .insp-row,
  .doc-inspector,
  .family-link .card,
  .page-nav-arrow,
  .hover-tip,
  .btn,
  .nav-link,
  .stagger-table tbody tr,
  .filter-label-boxes,
  .dash-badge-source,
  .dash-badge-derived,
  .dash-center-box,
  .dash-underdefined-note,
  #docCard .card,
  #labelsCard .card,
  #undefinedCard .card,
  #definedCard .card,
  #flowArrows,
  .flow-line,
  .dash-flow.dash-unload,
  .classification-card-top,
  .classification-card-bottom {
    transition: none !important;
    animation: none !important;
  }
}

/* Classification distribution main table fixed 1/3 section column layout */
#distTable {
  table-layout: fixed;
  width: 100%;
}



/* Dashboard Total|Unique count toggle transition */
@keyframes dash-count-flip {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.dash-count-flip { animation: dash-count-flip 0.35s ease-in-out; }
