/* Keep the source case-study layout and colors; share the homepage's type scale. */
.original-study{background:#fafbfe}
[data-theme=dark] .original-study{background:#18191f}
#main .ncs{--hm-font:'Open Runde',sans-serif;--nfs-sm:var(--text-small);--nfs-md:var(--text-medium);--nfs-lg:var(--text-large)}
#main .ncs,#main .ncs *{font-family:'Open Runde',sans-serif!important;font-size:var(--text-small)!important;font-style:normal!important;font-weight:400!important}
#main .ncs :is(h1,h1 *,.ncs__title,.ncs__divider span){font-size:var(--text-large)!important;font-weight:600!important}
#main .ncs :is(h2,h2 *,h3,h3 *,h4,h4 *,.ncs__root,.ncs__root *, .qviz__statement,.ncs__pr b){font-size:var(--text-medium)!important;font-weight:500!important}
#main .ncs :is(b,strong){font-weight:600!important}
/* Diagram labels use the body-size tier so the source's fixed rows stay legible. */
#main .ncs .whyviz .whyviz__q{font-size:var(--text-small)!important;font-weight:600!important}
#main .ncs :is(.ncs__nav a,.ncs__meta dt,.ncs__season){font-weight:500!important}
#main .ncs :is(.ncs__qcard--stat b,.ncs__grow-from,.ncs__grow-to,.ncs__vstat-num,.ncs__donut-num,.ncs__donut-num *,.ncs__fstat-n,.ncs__fdrop .n,.ncs__up-burst-num){font-size:var(--text-large)!important;font-weight:600!important}
#main .ncs :is(.ncs__next-card,.ncs__next-card:hover){text-decoration:none}
#main .ncs .ncs__nav a{text-decoration:none}
/* Native links replace modal-only buttons while retaining their source card layout. */
#main .ncs .ncs__next-card{display:block}

.pjf__side {
  fill: none; stroke: currentColor;
  stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
  transform-box: fill-box; transform-origin: center;
}
/* the animations live on the HOVER selector, not the element, so leaving the
   row tears them down and the next hover draws the frame on from nothing
   again — a restart you cannot get from a paused animation */
.pj-item:hover .pjf__side,
.pj-item:focus-visible .pjf__side {
  animation: pjf-draw .34s var(--hm-ease) forwards,
             pjf-part 3.2s ease-in-out infinite alternate;
}
@keyframes pjf-draw {
  from { stroke-dashoffset: 100; }
  to   { stroke-dashoffset: 0; }
}
/* --dx/--dy point outward along each side's own axis, so the top rides up,
   the right rides out, and the corners they share come apart between them */
@keyframes pjf-part {
  from { transform: translate(0, 0) rotate(0deg); }
  to   { transform: translate(var(--dx, 0px), var(--dy, 0px)) rotate(var(--dr, 0deg)); }
}
