BMW E8X/E9X CAN ARBIDs (KCAN / PTCAN)

by Nicholas Berlette

HTML

<link rel="stylesheet" href="https://webfonts.flourd.workers.dev/api/MonoLisa.css">
<div>
  <table width="100%" height="100%" cellspacing="1" cellpadding="0">
    <thead>
      <tr>
        <th><code>ARB&nbsp;ID</code></th>
        <th><code>DIAG&nbsp;ID</code></th>
        <th><code>ECU</code></th>
        <th align="center"><code>Bits</code></th>
        <th><code>Bus</code></th>
        <th><code>ENGLISH INFO</code></th>
        <th><code>GERMAN INFO</code></th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td align="right"><code>0x0A8</code></td>
        <td align="right"><code>0x12</code></td>
        <td>
          <strong><code>DME</code></strong>
        </td>
        <td align="center">
          <strong><code>10</code></strong>
        </td>
        <td><code>KCAN</code></td>
        <td>Torque 1 — (<code>KCAN</code>)</td>
        <td>Drehmoment 1 <code>KCAN</code></td>
      </tr>
      <tr>
        <td align="right"><code>0x0A9</code></td>
        <td align="right"><code>0x12</code></td>
        <td>
          <strong><code>DME</code></strong>
        </td>
        <td align="center">
          <strong><code>10</code></strong>
        </td>
        <td><code>KCAN</code></td>
        <td>Torque 2 — (<code>KCAN</code>)</td>
        <td>Drehmoment 2 <code>KCAN</code></td>
      </tr>
      <tr>
        <td align="right"><code>0x0AA</code></td>
        <td align="right"><code>0x12</code></td>
        <td>
          <strong><code>DME</code></strong>
        </td>
        <td align="center">
          <strong><code>10</code></strong>
        </td>
        <td><code>KCAN</code></td>
        <td>Torque 3 — (<code>KCAN</code>)</td>
        <td>Drehmoment 3 <code>KCAN</code></td>
      </tr>
      <tr>
        <td align="right"><code>0x0AC</code></td>
        <td align="right"><code>0x12</code></td>
        <td>
          <strong><code>DME</code></strong>
        </td>
        <td align="center">
          <strong><code>5</code></strong>
       ...

CSS

body {
	font-family: sans-serif;
  font-size: 0.63rem;
  max-width: 90vw;
  width: 100%;
  margin: 0 auto;
  padding: 2em 0;
}
th {
  font-size: 1rem;
  font-weight: 900 !important;
  background-color: #ccc;
  border-bottom: 0.2rem solid #666;
  padding: 0.5rem 1rem;
}
th code {
  font-weight: 900 !important;
}
tr:nth-child(2n) {
  background-color: #dedede;
}
td {
	font-size: 0.83rem;
  padding: 0.3rem 0.66rem;
}
code {
	font-family: 'Operator Mono Nerd Font', 'Operator Mono Lig', 'Operator Mono SSm', 'Operator Mono ScreenSmart', 'MonoLisa', 'Operator Mono', 'Fira Code', monospace;
	font-size: 0.9rem;
	border: 1px solid #fafa66;
	box-shadow: 0 1px 1px #0005;
	background: #fafade;
	padding: 0.125rem 0.2rem;
	border-radius: 0.25rem;
	display: inline-block;
}
tr > td {
  text-align: center;
}
tr > th:nth-child(5) {
  width: 1rem;
}
tr > td:nth-child(5), tr > th:nth-child(5) {
  display: none;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
tr > td:nth-child(6), tr > td:nth-child(7) {
  text-align: left;
}
tr > th:nth-child(7) {
  width: 15vw;
}

@media (max-width: 768px) {
  tr > th:last-child, tr > td:last-child {
    display: none;
  }
  tr > td:nth-child(5) {
    max-width: 0.5rem !important;
  }
}

@media (min-width: 1280px) {
  tr > th:last-child {
    width: 20rem;  
  }
  tr > td:last-child {
    max-width: 15rem;
  }
}

tr > td:last-child {
  max-width: 15vw;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap !important;
}