body {
    display: grid;
    place-items: center;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin: 0;
    padding: 0;
}

article {
    display: grid;
    grid-template-columns: auto auto auto;
    align-items: center;
    margin-top: 10px;
    padding: 0 10px;
}

footer {
    display: grid;
    align-items: center;
    margin: 20px 0;
}

footer p {
    padding: 5px 10px;
    margin: 0;
    text-align: center;
}

footer a.selected {
    text-decoration: none;
}

footer.print {
    display: none;
}

nav {
    text-align: center;
    margin-top: 20px;
}

header {
    background: #002b36;
    color: #e9e5d2;
    width: 100%;
    line-height: 22px;
    padding: 10px;
    border-bottom: 5px solid #268bd2;
    display: grid;
    grid-template-columns: auto auto;
    box-sizing: border-box;
}

header h1 {
    margin: 0;
    padding: 0 0 0 10px;
    font-size: 20px;
}

header ul {
    list-style: none;
    margin: 0;
    padding: 0 10px 0 0;
    text-align: right;
}

header li {
    display: inline-block;
    padding: 0 0 0 10px;
    white-space: pre;
}

header li:nth-child(2) a,
header li:nth-child(2) a:visited,
header li:nth-child(2) a:hover {
    color: #268bd2;
}

header li:nth-child(3) a,
header li:nth-child(3) a:visited,
header li:nth-child(3) a:hover {
    color: #d33682;
}

header li:nth-child(4) a,
header li:nth-child(4) a:visited,
header li:nth-child(4) a:hover {
    color: #dc322f;
}

.pico {
    padding: 0px;
    position: relative;
    top: 0px;
    display: flex;
    align-items: flex-start;
}

.pico img {
    width: auto;
    height: 410px;
    max-width: 366px;
    object-fit: contain;
}

table {
    font-family: ui-monospace,
        Menlo, Monaco,
        "Cascadia Mono", "Segoe UI Mono",
        "Roboto Mono",
        "Oxygen Mono",
        "Ubuntu Monospace",
        "Source Code Pro",
        "Fira Mono",
        "Droid Sans Mono",
        "Courier New", monospace;
}

.labels.right {
    counter-reset: pin 23;
    display: grid;
    align-items: left;
}

.tiny2040 .labels.right {
    counter-reset: pin 17;
}

.labels.left {
    direction: rtl;
    display: grid;
    align-items: right;
    counter-reset: pin -1;
}

.labels tr {
    counter-increment: pin;
    line-height: 20px;
    color: #333333;
    font-size: 0;
}

.labels.left tr {
    direction: ltr;
}

.labels.right tbody tr {
    counter-increment: pin -1;
}

.labels.below {
    grid-column: 2;
    margin: -5px auto 0 auto;
    position: relative;
    left: 2px;
}

.labels.below td {
    width: 25px;
    height: auto;
    border: none;
    padding: 0;
    writing-mode: vertical-lr;
    vertical-align: top;
    min-width: 25px;
    display: inline-block;
}

.australian-view .labels.left,
.australian-view .labels.right {
    transform: scale(1, -1);
}

.australian-view .labels.left tr,
.australian-view .labels.right tr {
    transform: scale(1, -1);
}

.australian-view .labels.below {
    position: relative;
    top: -550px;
}

.labels th,
.labels thead {
    display: none;
}

.labels tbody tr:before {
    content: attr(data-label);
    text-align: center;
    float: right;
    background-color: #CCCCCC;
    min-width: 35px;
    width: 35px;
    padding: 0 2px;
    height: 20px;
    font-size: 11px;
    opacity: 1;
    line-height: 20px;
}

.labels tbody tr:not([data-pin-index]):before {
    content: "";
}

/* Make pin counter numbers transparent for in-between pins when hidden */
.labels tbody tr.inbetween:before {
    opacity: 0;
    background-color: #F0F0F0;
}

.labels tbody tr.inbetween.show:before {
    opacity: 1;
    background-color: #F0F0F0;
}

/* Make placeholder in-between pins (without data-pin-index) completely transparent */
.labels tbody tr.inbetween:not([data-pin-index]):before {
    opacity: 0;
    background-color: transparent;
}

.labels tbody tr.inbetween:not([data-pin-index]).show:before {
    opacity: 0;
    background-color: transparent;
}

/* Power pin D number labels */
.labels tbody tr[data-label="5V"]:before,
.labels tbody tr[data-label="3V3"]:before,
.labels tbody tr[data-label="VBUS"]:before,
.labels tbody tr[data-label="VSYS"]:before {
    background-color: #dc322f;
    color: #ffffff;
}

/* Ground pin D number label */
.labels tbody tr[data-label="GND"]:before {
    background-color: #002b36;
    color: #ffffff;
}

.labels.right tbody tr:before {
    float: right;
}

.labels.below tbody tr:before {
    display: none;
}

td,
th {
    height: 20px;
    text-align: left;
    overflow: hidden;
    color: #222;
    font-size: 12px;
    cursor: default;
    white-space: nowrap;
    position: relative;
    border-width: 0 4px 0 4px;
    border-style: solid;
    padding: 0 5px;
    min-width: 60px;
}

/* Hide empty table cells */
.labels td:empty {
    display: none;
}

.extra td {
    border: none;
    background-color: #9e9d9b22;
    padding: 5px;
}

.extra tr:nth-child(odd) td {
    background-color: #9e9d9b33;
}

.extra th {
    border: none;
    background-color: transparent;
}

.extra .wl_gpio {
    position: relative;
    top: 5px;
}

.extra .wl_gpio td {
    background-color: #d3368222;
}

.extra .wl_gpio tr:nth-child(odd) td {
    background-color: #d3368233;
}

.extra .power_pins td {
    background-color: #dc322f22;
}

.extra .power_pins tr:nth-child(odd) td {
    background-color: #dc322f33;
}

.extra .tpads td {
    background-color: #85990022;
}

.extra .tpads tr:nth-child(odd) td {
    background-color: #85990033;
}

/* Hide advanced labels by default */
.labels .advanced {
    visibility: hidden;
}

.labels .hidden,
.extra.advanced,
.below.advanced {
    display: none;
}

/* In-between pins: use opacity instead of display:none to maintain spacing */
.labels tbody tr.inbetween {
    opacity: 0;
    visibility: hidden;
}

.labels tbody tr.inbetween.show {
    opacity: 1;
    visibility: visible;
}

.filter li.advanced {
    display: none;
}

.gpio {
    background-color: #85990033;
    border-color: #859900;
}

.ground {
    background-color: #002b3633;
    border-color: #002b36;
}

.power {
    background-color: #dc322f33;
    border-color: #dc322f;
}

.adc {
    background-color: #2aa19833;
    border-color: #2aa198;
}

.hstx {
    background-color: #2aa19833;
    border-color: #2aa198;
}

.system {
    background-color: #df8f8e33;
    border-color: #df8f8e;
}

.i2c {
    background-color: #64b5f633;
    border-color: #64b5f6;
}

.spi {
    background-color: #d3368233;
    border-color: #d33682;
}

.sdcard {
    background-color: #ff660033;
    border-color: #ff6600;
}

.uart {
    background-color: #6c71c433;
    border-color: #6c71c4;
}

.pwm {
    background-color: #1565c033;
    border-color: #1565c0;
}

.pin-label {
    background-color: #CCCCCC;
    border-color: #CCCCCC;
    color: #333333;
}

.bio {
    background-color: #b5890033;
    border-color: #b58900;
}

.labels.left td {
    border-width: 0 0 0 4px;
}

.labels.right td {
    border-width: 0 4px 0 0;
}

.labels tr:hover:before {
    background-color: #eeeeee;
    opacity: 1;
}

.labels tr:hover .gpio {
    background-color: #9fb80366;
}

.labels tr:hover .ground {
    background-color: #01435366;
}

.labels tr:hover .power {
    background-color: #f13a3766;
}

.labels tr:hover .adc {
    background-color: #39d1c466;
}

.labels tr:hover .hstx {
    background-color: #39d1c466;
}

.labels tr:hover .system {
    background-color: #fab4b266;
}

.labels tr:hover .i2c {
    background-color: #90caf966;
}

.labels tr:hover .spi {
    background-color: #f34f9f66;
}

.labels tr:hover .sdcard {
    background-color: #ff660066;
}

.labels tr:hover .uart {
    background-color: #8d91e666;
}

.labels tr:hover .pwm {
    background-color: #0d47a166;
}

.labels tr:hover .pin-label {
    background-color: #dddddd;
}

.labels tr:hover .bio {
    background-color: #d4a00066;
}

.labels tr:hover .gpio {
    background-color: #9fb80366;
}

.filter {
    list-style: none;
    margin: 0;
    padding: 0;
}

.filter li {
    display: inline;
}

.filter label {
    display: inline-block;
    color: #002b36;
    padding: 0px 10px 0px 10px;
    line-height: 30px;
    user-select: none;
    margin-bottom: 5px;
}

.interfaces label {
    border-width: 0 0px 0 30px;
    border-style: solid;
}

.filter.interfaces label.sdcard {
    border-color: #ff6600;
}

.filter.interfaces label.uart {
    border-color: #6c71c4;
}

.filter input {
    margin: 0 10px 0 0;
}

.filter.interfaces label {
    color: #222;
}

.filter.interfaces {
    margin-bottom: 20px;
}

.nojs ul {
    display: none;
}

/* Support for flipping board over to view from the bottom... */

/* Top-up View */
.underside {
    display: none;
}

/* Aussie View */
.australian-view .pico {
    rotate: 180deg;
    position: relative;
    top: 8px;
}

.australian-view {
    direction: rtl;
}

.australian-view .labels.left {
    direction: ltr;
}

.australian-view .labels.left td {
    border-width: 0 4px 0 0;
}

.australian-view .labels.right td {
    border-width: 0 0 0 4px;
}

.underside-view.australian-view .labels.left td {
    border-width: 0 0 0 4px;
}

.underside-view.australian-view .labels.right td {
    border-width: 0 4px 0 0;
}

.underside-view.australian-view {
    direction: ltr;
}

.underside-view.australian-view .labels.left {
    direction: rtl;
}

/* Bottom-up View */
.underside-view .pico {
    display: none;
}

.underside-view .underside {
    display: block;
}

.underside-view {
    direction: rtl;
}

.underside-view .labels.left {
    direction: ltr;
}

.underside-view .labels.left td {
    border-width: 0 4px 0 0;
}

.underside-view .labels.right td {
    border-width: 0 0 0 4px;
}

sup {
    position: absolute;
    top: -25%;
    font-size: 70%;
    vertical-align: middle;
}

@media (prefers-color-scheme: dark) {
    body {
        background-color: #000000;
    }

    header {
        background: #111111;
        color: #666666;
        border-bottom-color: #222222;
    }

    .filter label,
    footer p,
    nav p {
        color: #666666;
    }

    footer a.selected {
        color: #666666;
    }

    footer a,
    footer a:visited {
        color: #1d6ca5;
    }

    footer a:hover {
        color: #3ba6f1;
    }

    .labels tbody tr:before {
        background-color: #002b36;
        color: #e9e5d2;
    }

    .labels tbody tr:hover:before {
        background-color: #013441;
        opacity: 1;
    }

    td,
    th,
    .filter.interfaces label {
        color: #e9e5d2;
    }
}

@media print {

    footer,
    header ul,
    #nav {
        display: none;
    }

    footer.print {
        display: block;
        border-top: 5px solid #268bd2;
    }

    #pinout {
        margin-top: 40px;
    }

    header {
        background: transparent;
        color: #666666;
    }
}