@charset "UTF-8";

@import url("fonts-local.css");

:root {
    color-scheme: light dark;
    --background-color: #fafafa;
    --section-background-color: #fafafa;
    --section-emph-background-color: #f2d4d7;
    --text-color: #262627;
    --border-color: #8b8b8d;
    --table-border-color: #e6e6e6;
    --link-color: #0997d6;
    --link-visited-color: #917f91;
    --link-hover-color: #ce1e46;
    --link-active-color: #3b3e45;
    --code-color: #861f41;
    --code-foreground-color: #2c3541;
    --code-background-color: #f8f7f6;
    --code-comment-color: #c0342d;
    --task-code-background-color: #f7eeee;
    --task-code-border-color: #8b8b8d;
}

@media (prefers-color-scheme: dark) {
    :root {
        --background-color: #111213;
        --section-background-color: #111213;
        --section-emph-background-color: #641a2b;
        --text-color: #f4f4f4;
        --border-color: #e6e6e6;
        --table-border-color: #8b8b8d;
        --link-color: #19c2f4;
        --link-visited-color: #917f91;
        --link-hover-color: #ce1e46;
        --link-active-color: #3b3e45;
        --code-color: #e0798f;
        --code-foreground-color: #e3e8ec;
        --code-background-color: #1d1e21;
        --code-comment-color: #c0342d;
        --task-code-background-color: #2f1d24;
        --task-code-border-color: #222;
    }
}


* {
    box-sizing: border-box;
}

html {
    font-size: 19px;
    background: var(--background-color);
    /* Prevent horizontal repositioning going between pages with and without
     * scrollbars */
    overflow-x: hidden;
    margin-right: calc(-1 * (100vw - 100%));
}


/* Avoid layout shifting depending on whether a scrollbar is needed */
:root { scrollbar-gutter: stable; }

@supports not (scrollbar-gutter: stable) {
    html { overflow-y: scroll; }
}

@supports (scrollbar-gutter: stable) {
    html { margin-right: 0; }
}

@supports (-webkit-appearance: none) {
    html { overflow-x: hidden; }
}

body {
    margin: 0;
    padding: 1.5rem;
    /*background: url(http://baselinebg.keyes.ie?h=27&a=75&s=10) repeat;*/
    color: var(--text-color);
    font-family: gill-sans-nova, "Gill Sans Nova", "Gill Sans MT",
                 "Gill Sans", sans-serif;
    font-weight: 500;
    -webkit-font-smoothing: antialiased;
    /* Make Firefox font weight the same as Safari on macOS */
    -moz-osx-font-smoothing: grayscale;
    font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    font-variant-numeric: oldstyle-nums;
    font-variant-ligatures: common-ligatures;
    font-feature-settings: "kern", "onum", "liga", "clig";
    /* Try to support older WebKit on PPC */
    -webkit-font-feature-settings: "kern", "onum", "liga", "clig";
    line-height: 1.5rem;
    hyphenate: auto;
    hyphenate-before: 2;
    hyphenate-after: 3;
    hyphenate-lines: 3;
    counter-reset: sidenote-counter;
}

header,
main,
footer {
    width: 62%;
    max-width: 760px;
    margin-left: 14%;
}

header,
footer {
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
}

@media only screen and (max-width: 1000px) {
    body {
        padding: 0;
    }

    header,
    main,
    footer {
        width: 85%;
        margin: 1.5rem auto;
    }

    /* Ensure currentlink and backlink don't overflow */
    div.currentlink,
    div.backlink {
        margin-right: 1rem !important;
        position: relative;
        float: right;
    }
}

@media only screen and (max-width: 780px) {
    header,
    main,
    footer {
        width: 90%;
    }
}

@media only screen and (max-width: 750px) {
    header,
    main,
    footer {
        width: auto;
        margin: 0;
    }
}

main section,
footer section {
    margin: 1.5rem 0;
    padding: 1.5rem;
    background-color: var(--section-background-color);
}

nav {
    margin-bottom: 4rem;
}

section.emph {
    background-color: var(--section-emph-background-color) !important;
}

@media only screen and (max-width: 768px) {
    header,
    main section,
    footer section {
        margin: 1.5rem;
    }
}

@media only screen and (max-width: 750px) {
    header,
    main section,
    footer section {
        margin: 1.5rem 0.75rem;
    }

    main section,
    footer section {
        padding: 1.5rem 0.75rem;
    }
}

section.wide {
    min-width: 80vw;
}

section.wide {
    overflow-x: auto;
}

@media only screen and (max-width: 767px) {
    section.wide {
        min-width: 0;
        margin: 0 0 0.75em 0;
        width: 100% !important;
    }
}

section.wide,
section.wide table {
    background-color: var(--section-background-color);
}

section *,
aside * {
    grid-column: 1/span 3;
}

@media only screen and (min-width: 1679px) {
    header,
    main,
    footer {
        max-width: 1024px;
    }

    header h1,
    header h2 {
        display: inline;
        padding-left: 0 !important;
    }

    section,
    nav,
    aside {
        min-width: 0;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-gap: 0 1.5rem;
        padding-left: 0 !important;
        padding-right: 0 !important;
        background-color: inherit;
    }

    main section.emph {
        background-color: inherit !important;
    }

    main section.emph div.content,
    main section.emph p {
        background-color: var(--section-emph-background-color) !important;
    }

    nav ul {
        margin: 0 1.5rem !important;
    }

    section h2 {
        grid-column: 1/span 1;
        height: 0;  /* Hack to avoid gaps */
    }

    section h2 .marginnote {
        display: block !important;
        grid-column: auto !important;
        position: static !important;
        float: none !important;
        margin: 0 !important;
        width: auto !important;
    }

    section div.content,
    section figure {
        padding: 0 0 1.5rem 0;
        background-color: var(--section-background-color);
        width: 100%;
    }

    section section {
        display: block;
    }

    section *,
    aside * {
        grid-column: 2/span 3;
    }

    nav h2 {
        grid-column: 1/span 1;
    }

    nav ul {
        grid-column: 2/span 2;
    }

    section.wide {
        margin: 1.5rem 0;
        padding: 1.5rem;
        min-width: 0;
    }

    section.wide * {
        grid-column: 1/span 3;
    }

    section.wide pre {
        margin: 1.5rem 0 1.5rem 0 !important;
    }

    /* Make the class table line up with the overall grid of thirds
     * at wide layouts. This isn't actually right, but it looks close. */
    table.calendar tr td {
        width: 33.8%;
    }
    table.calendar tr td:nth-of-type(1) {
        width: 32.4% !important;
    }
    table.calendar tr td:nth-of-type(1) {
        padding-left: 0 !important;
        padding-right: 1.5rem !important;
    }
}

@media only screen and (max-width: 860px) {
    header {
        margin-top: 1.5rem;
    }

    header h1,
    header h2 {
        margin-top: 1.5rem;
        text-align: center;
    }

    nav * {
        float: none !important;
    }

    nav {
        text-align: center !important;
        width: 100%;
    }

    nav h2 {
        width: 100%;
        display: block;
    }

    nav ul {
        margin-top: 1rem !important;
        margin-bottom: 1.5rem !important;
        text-align: center;
    }

    nav ul li {
        margin-top: .5rem !important;
    }
}

nav h2 {
    margin-top: 0 !important;
}

nav:after {
    content: "";
    clear: both;
    display: table;
}

nav ul {
    margin: 0;
    padding: 0;
    float: right;
    text-align: right;
    min-width: 65%;
}

nav ul li {
    list-style: none;
    display: inline-block;
    margin: 0 0.375rem 0.375rem 0;
    height: 1.5rem;
    padding: 0;
    text-indent: 0 !important;
}

nav ul li a {
    background-color: var(--text-color);
    color: var(--background-color) !important;
    margin: 0;
    padding: 0 0.375rem;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: .25pt;
    font-size: .8706rem;
    height: 1.5rem;
    display: inline-block;
}

nav ul li.curr a {
    background-color: var(--link-hover-color);
}

@media only screen and (max-width: 767px) {
    nav ul li a {
        margin: 0.375rem 0;
    }
}

nav ul li a:hover,
.currentlink:hover,
.backlink:hover {
    background-color: var(--link-hover-color) !important;
    color: var(--section-background-color) !important;
}

nav ul li:before {
    content: "" !important;
    margin: 0;
    padding: 0;
}

header h1,
header h2 {
    padding: 0 1.5rem;
}

header h1 {
    margin: 0;
    font-size: 1.3195rem;
}

header h1 code {
    font-size: 1.1487rem;
    font-weight: bold;
}

span.subhead {
    font-style: italic;
}

header h2 {
    margin: 0.5rem 0 0 0;
    font-size: 1.1487rem;
    line-height: 1.5rem;
    font-weight: 500;
}

header h2 + h1 {
    margin-top: 0.75rem;
    margin-bottom: 1.5rem;
}

header h2 + h1 + h2 {
    margin-top: -0.75rem;
    margin-bottom: 0.75rem;
}

h1 {
    margin: 0 0 1.5rem 0;
    padding: 0;
    font-size: 1.5rem;
    line-height: 1.5rem;
    font-weight: 500;
}

h1 code {
    font-size: 1.3195rem;
    font-weight: bold;
}

h2 {
    margin: 0 0 1.5rem 0;
    padding: 0;
    font-size: 1.3195rem;
    line-height: 1.5rem;
    font-weight: 500;
}

h2 code {
    font-size: 1.1487rem;
    font-weight: bold;
}

h3 {
    margin: 0 0 1.5rem 0;
    padding: 0;
    font-size: 1.1487rem;
    line-height: 1.5rem;
    font-weight: 500;
    font-style: italic;
}

h3 code {
    font-size: 0.9rem;
}

p + h2,
p + h3,
figure + h3,
table + h3,
p + table,
pre + dl {
    margin-top: 1.5rem !important;
}

blockquote,
dd p {
    margin: 1.5rem;
}

dd blockquote {
    margin: 1.5rem 3rem;
}

ul,
ol {
    margin: 0 0 0 1.5rem;
}

dl {
    margin: 0;
}

ul + p,
ul + h2,
ul + h3,
ol + p,
ol + h2,
ol + h3,
dl + p,
dl + h2,
dl + h3,
figure + h3,
pre + h2,
pre + h3,
pre + ul,
details + p,
table + p,
p + figure,
pre + figure,
figure + p,
figure + pre,
ul + hr,
hr + h3 {
    margin-top: 1.5rem;
}

p + ul,
p + ol,
p + dl {
    margin-top: 1.5rem;
}

ul ul,
ol ol,
dl dl,
ul ol,
ol ul {
    margin-left: 1.5rem;
}

ul.plain {
    margin-left: 0;
}

ul {
    list-style: none;
    padding: 0;
}

ul > li {
    text-indent: -1.4rem;
}

ul.plain > li {
    text-indent: 0;
}

ul > li:before {
    content: "–";
    margin-right: 0.9rem;
    vertical-align: top;
}

ul.plain > li:before {
    content: "";
    margin-right: 0;
}

ul > li,
dl dt {
    position: relative;
}

ol {
    padding-left: 0;
    margin-left: 1.5rem;
}

ul.spaced > li,
ol.spaced > li {
    margin-bottom: 1rem;
}

li,
dd,
dt {
    margin: 0;
}

li + li {
    margin-top: 0rem;
}

ul li p,
ul li pre {
    display: inline-block;
    width: 100%;
    text-indent: 0;
    margin-top: 0;
    margin-bottom: 1.5rem;
}

ol li p {
    margin-top: 1.5rem;
}

ol li:first-child p:first-child,
ol li div.task p:first-child {
    margin: 0;
}

dt {
    font-weight: 600;
    font-variant-numeric: lining-nums;
    -webkit-font-feature-settings: "lnum";
}

dd + dt {
    margin-top: 1.5rem;
}

li p,
li pre {
    padding: 0;
}

dd p {
    margin-top: 0rem;
}

p {
    margin: 0;
}

pre + p,
p + p,
details {
    margin-top: 1.5rem;
}

pre {
    margin: 1.5rem 0 0 1.5rem;
    overflow-x: auto;
    text-indent: 0;
    padding: 3pt;
}

div.task pre {
    margin-left: -1rem;
    margin-right: -1rem;
    padding: 4px;
}

pre.inter {
    white-space: pre-wrap;
}

section.wide pre {
    margin: 0;
}

pre,
code,
kbd {
    font-family: berkeley-mono, "Berkeley Mono", "Menlo", monospace;
    font-size: 15px;
    line-height: 16pt;
    letter-spacing: -.4pt;
    /* color: var(--code-color); */
    font-variant-ligatures: none;
    font-feature-settings: "liga" 0;
}

.marginnote code,
.sidenote code {
    font-size: 13px;
}

pre code {
    line-height: 1.5rem;
    background: var(--code-background-color);
    padding: 1.5rem;
}

.racket,
.pyret,
.python,
.inter {
    background-color: var(--code-background-color);
    color: var(--code-foreground-color);
}

.comment {
    font-style: italic;
    color: var(--code-comment-color);
}

.name,
.variable,
pre var,
code var,
.class {
    color: #9e5cb1;
}

.name {
    font-weight: bold;
}

pre var,
code var,
.variable {
    font-style: italic;
}

.keyword,
.prompt {
    color: #7f8184;
}

.builtin,
.string,
code q,
pre q {
    color: #417fb8;
}

code q::before,
code q::after,
pre q::before,
pre q::after {
    content: "";
}

.constant {
    color: #e89f27;
}

/* Not currently coloring these */
.type { }

a,
a code {
    color: var(--link-color);
    text-decoration: none;
    transition: color .2s ease-in-out;
}

a:visited,
a:visited code {
    color: var(--link-visited-color);
}

a:hover,
a:hover code {
    color: var(--link-hover-color);
}

a:active,
a:active code {
    color: var(--link-active-color);
}


header h1 > a:link,
header h1 > a:visited,
header h2 > a:link,
header h2 > a:visited {
    color: var(--text-color);
}

.secret:link,
.secret:visited {
    color: var(--text-color) !important;
}

.future .secret:link,
.future .secret:visited {
    color: #bbb !important;
}

header h1 > a:hover,
header h2 > a:hover {
    color: var(--link-color);
}

.secret:hover {
    color: var(--link-color) !important;
}

em, cite {
    font-style: italic;
}

strong {
    font-weight: 600;
}

abbr {
    font-feature-settings: "c2sc" 1, "onum" 1;
    font-style: normal !important;  /* Never italic */
    /*font-variant: small-caps;*/
    font-variant-caps: all-small-caps;
    letter-spacing: 0.07em;
}

abbr, abbr[title] {
    border-bottom: 0;
    text-decoration: none;
}

.noit {
    font-style: normal;
}

q.foreign {
    font-style: italic;
    quotes: none;
}

.word {
    font-style: italic;
    font-weight: 600;
    color: #965eae;
    quotes: none;
}

.text {
    font-style: italic;
    font-weight: 600;
    color: #666;
    quotes: none;
}

sup,
sub {
    vertical-align: baseline;
    position: relative;
}

sup {
    top: -0.4em;
}

sub {
    top: 0.4em;
}

kbd {
    border-radius: 2px;
    padding: 2px;
    border: 1px solid var(--border-color);
}

pre kbd,
code kbd {
    color: var(--text-color);
    border: 0;
    padding: 0;
    font-weight: bold;
}

input.margin-toggle {
    display: none;
}

label.sn-num {
    display: inline;
}

label.margin-toggle:not(.sn-num) {
    display: none;
}

.marginnote,
.sidenote,
figcaption {
    width: 30%;
    max-width: 12rem;
    float: right;
    clear: right;
    margin: 0.3rem -45% 0 0;
    vertical-align: baseline;
    position: relative;
    text-indent: 0;
    grid-column: auto !important;
    text-align: left;
}


@media only screen and (min-width: 800px) {
    .marginnote,
    .sidenote,
    figcaption {
        /* Hack to avoid weird gaps in the grid view at large resolutions */
        height: 0;
    }

    nav {
        min-width: 80vw;
    }

    header {
        min-width: 80vw;
    }
}

@media only screen and (min-width: 835px) and (max-width: 1100px) {
    /* At intermediate widths, prevent overflow of floating elements */
    header,
    main,
    footer {
        width: 90%;
        max-width: none;
        margin-left: auto;
        margin-right: auto;
    }

    header,
    main {
        min-width: auto;
    }

    nav {
        min-width: auto;
    }

    /* Pull in currentlink and backlink to prevent cutoff */
    div.currentlink,
    div.backlink {
        margin-right: 1rem !important;
        position: relative;
        float: right;
        clear: right;
    }

    /* Move figure captions below images to prevent cutoff */
    figure figcaption {
        position: static;
        margin: 0.5rem auto 0 auto;
        float: none;
        width: auto;
        max-width: 100%;
        text-align: center;
        height: auto !important;
    }

    /* Adjust margins for sidenotes and marginnotes */
    .marginnote,
    .sidenote {
        margin-right: 0;
        float: none;
        width: 100%;
        max-width: 100%;
        margin-top: 1rem;
        margin-bottom: 1rem;
        display: block;
        position: static;
        height: auto !important;
        clear: both;
    }

    /* Make wide sections more reasonable */
    section.wide {
        width: calc(100vw - 10%);
        min-width: auto;
        margin-left: 0;
        margin-right: calc(-20vw + 10%);
    }
}

@media only screen and (min-width: 1101px) and (max-width: 1678px) {
    /* For larger intermediate screens, keep elements within viewport */
    header,
    main,
    footer {
        width: 70%;
        max-width: 900px;
        margin-left: 15%;
        margin-right: 15%;
    }

    /* Keep floating elements visible */
    .marginnote,
    .sidenote,
    figcaption {
        margin-right: -30%;
        width: 25%;
        max-width: 12rem;
    }


    div.currentlink,
    div.backlink {
        margin-right: 1rem !important;
        position: relative;
        float: right;
    }

    /* Prevent figure images from getting too large */
    figure {
        max-width: 100%;
    }

    figure img {
        max-width: 100%;
        height: auto;
    }
}

@media only screen and (min-width: 1679px) {
    .marginnote,
    .sidenote,
    figcaption {
        width: 50%;
        max-width: 16rem;
        margin-right: -60%;
    }

}

/* dd p, */
.marginnote,
.sidenote,
figcaption {
    font-size: 0.8706rem;
    line-height: 1.5rem;
}

.sn-num {
    counter-increment: sidenote-counter;
}

.sn-num:after,
.sidenote:before {
    position: relative;
    vertical-align: baseline;
}

.sidenote:before {
    font-weight: 600;
}

.sn-num:after {
    content: counter(sidenote-counter);
    font-size: 0.8706rem;
    font-weight: 600;
    left: 0.1rem;
    vertical-align: top;
    line-height: 1;
}

.sidenote:before {
    content: counter(sidenote-counter);
    font-size: 0.8706rem;
    position: absolute;
    left: -1.3rem;
}

@media only screen and (max-width: 800px) {
    p {
        clear: both;
    }

    div.task {
        overflow: hidden;
    }

    label.margin-toggle:not(.sn-num) {
        display: inline;
    }

    .sidenote {
        display: none;
    }

    nav ul { text-align: center; }

    .margin-toggle:checked + .sidenote,
    .marginnote,
    figcaption {
        display: block;
        float: none;
        left: 1.5rem;
        clear: both;
        width: 100% !important;
        max-width: 100%;
        margin: 1rem 1.5rem 1rem 0;
        padding: 0 1rem 0 0;
        vertical-align: baseline;
        position: relative;
    }

    label {
        cursor: pointer;
    }

    .sn-num:after {
        color: var(--link-color);
    }
}

figure {
    margin: 0;
    text-align: center;
}

figure.scaled {
    min-width: 400px;
    width: 70%;
    margin: 1rem auto;
}

figure img,
blockquote img {
    max-width: 100%;
}

table {
    border-collapse: collapse;
}

table tr,
table th,
table td {
    border: 0;
    margin-top: 0;
    margin-bottom: 0;
    padding: 0 0.5em;
}

table th:first-child,
table td:first-child {
    padding-left: 0 !important;
}

td p+p {
    margin-top: 1.5rem;
}

table.hours {
    margin: 1.5rem 1.5rem;
}

table.hours td {
    padding: 0 .5rem 1.5rem 0;
}

table.hours td + td {
    padding-left: 1rem;
}

table.hours tr + tr.day td {
    border-top: 1px solid var(--table-border-color);
    padding-top: 1.5rem;
}

table.files tr+tr td {
    padding-top: 1rem;
}

table.files tr td:first-child {
    min-width: 130px;
}

table.calendar {
    width: 100%;
}

table.calendar th,
table.calendar td {
    padding-left: 0.5rem;
    padding-bottom: 2rem;
    vertical-align: top;
    text-align: left;
}

table.calendar th {
    font-weight: 600;
}

table.calendar tr td {
    box-shadow: 0 1px 0 var(--table-border-color);
}

table.calendar tr:last-child td {
    box-shadow: none;
}

table.calendar tr + tr td,
table.calendar tr + tr th {
    padding-top: 2rem;
}

table.calendar h3 {
    font-size: 1rem;
}

table.calendar h4 {
    font-size: 0.8706rem;
    font-weight: 600;
    margin: 0;
}

table.calendar h4 + p {
    margin: 0;
}

table.spaced tr td {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

.future,
.future h3 {
    color: #bbb !important;
}

.future a {
    color: #888 !important;
}

/*
 * Responsive table for mobile
 * Adapted from https://flaviocopes.com/css-responsive-table
 */
@media only screen and (max-width: 767px) {
    table.calendar,
    table.calendar thead,
    table.calendar tbody,
    table.calendar th,
    table.calendar td,
    table.calendar tr {
        display: block;
    }

    table.calendar thead tr th:nth-of-type(2),
    table.calendar thead tr th:nth-of-type(3),
    table.calendar thead tr th:nth-of-type(4) {
        display: none;
    }

    table.calendar tr {
        padding-top: 1.5rem;
    }

    table.calendar tr + tr {
        border-top: 1px solid var(--border-color);
        margin: 1.5rem 0;
    }

    table.calendar td {
        min-height: 40px;
        border: none;
        position: relative;
        border-top: 1px solid var(--section-background-color);
        margin-left: 40px;
    }

    table.calendar td + td {
        border-top: 1px solid var(--background-color);
    }

    table.calendar td:before {
        position: absolute;
        left: 0px;
        width: 30px;
        padding-right: 40px;
        white-space: nowrap;
        margin-left: -40px;
        text-align: center;
        letter-spacing: 0.25pt;
        font-size: 0.8706rem;
        color: var(--border-color);
    }

    table.calendar tr td {
        padding-top: 1.5rem;
        box-shadow: none;
    }

    table.calendar th {
        padding-top: 1.5rem;
        border-top: 1px solid var(--border-color);
        border-bottom: 1px solid var(--border-color);
    }

    table.calendar tr + tr {
        border-top: 1px solid var(--border-color);
    }

    table.calendar th:first-child,
    table.calendar td:first-child {
        padding-left: inherit !important;
    }

    table.calendar td:nth-of-type(1):before {
        content: "";
    }

    table.calendar td:nth-of-type(2):before {
        content: "M";
    }

    table.calendar td:nth-of-type(3):before {
        content: "W";
    }
}

td.name {
    padding-left: 1rem;
}

td.time {
    text-align: right;
    font-variant-numeric: tabular-nums;
    padding-left: 0;
    padding-right: 0;
}

td.room,
td.url {
    padding-left: 1rem;
}

@media only screen and (min-width: 834px) {
    .two-col {
        columns: 2;
        width: 100%;
    }
}

.two-col li {
    margin-right: 1rem;
    text-indent: 0;
}

.two-col li:before {
    content: "";
}

div.task,
p.task,
section section.emph {
    background-color: var(--section-emph-background-color) !important;
    padding: 1em 1.5em;
    margin: 2em 1.5em;
}

@media only screen and (max-width: 860px) {
    div.task,
    p.task {
        margin: 2em -1.5rem;
    }
}

p.task,
div.task p:first-of-type {
    text-indent: -1em;
}

div.task ul li p:first-child {
    text-indent: 0;
}

p.task .sidenote,
div.task .sidenote,
p.task .marginnote,
div.task .marginnote {
    width: 30%;
    margin-right: -45%;
}

strong.task {
    text-transform: uppercase;
    letter-spacing: 0.75pt;
    font-variant: small-caps;
    font-feature-settings: "c2sc" 1, "onum" 1;
}

div.task pre {
    background: var(--task-code-background-color);
    border: 1px solid var(--task-code-border-color);
}

div.currentlink,
div.backlink {
    text-align: center;
    font-size: 12pt;
    background: black;
    border: 1px solid white;
    padding: 0.1rem 0.45rem;
    float: right;
    margin-right: -150px;
    width: 100px;
    z-index: 99;
}

div.currentlink {
    margin-bottom: 2rem;
}

div.backlink {
    top: 2rem;
    position: sticky;
}

div.currentlink + section {
    margin-top: 3rem;
}

@media only screen and (max-width: 800px) {
    div.currentlink,
    div.backlink {
        margin-right: 1rem;
    }
}

div.currentlink a,
div.backlink a {
    color: white !important;
}

section.contents {
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

figure img {
    margin-left: auto;
    margin-right: auto;
}

img {
    max-width: 100%;
}

hr {
    border: none;
    height: 1px;
    color: var(--border-color);
    background-color: var(--border-color);
}

div.content + div.content {
    margin-top: 2.5rem;
}

span.nobr { white-space: nowrap; }

.role {
    font-feature-settings: "c2sc" 1, "onum" 1;
    font-style: normal !important;  /* Never italic */
    font-variant: small-caps;
    letter-spacing: 0.05em;
}

section.quote div.content {
    border: 1px solid var(--border-color);
}


/*
 * Print layout
 */


@media print {
    body {
        background: #fff;
        border-top: 0px solid #fff;
    }

    header {
        margin-left: 1em;
    }

    main,
    footer {
        margin-left: 1em;
    }

    nav ul {
        display: none;
    }

    p {
        orphans: 2;
        widows: 2;
    }

    a {
        color: #000 !important;
    }

    tr {
        break-inside: avoid;
        break-after: auto;
    }

    pre {
        border: 1px solid #ccc;
    }

    code,
    pre {
        background: #fff;
    }
}


/* 366 */

table.newcalendar th {
    text-align: left;
}

table.newcalendar td {
    text-align: left;
    vertical-align: top;
}

.newcalendar th,
.newcalendar td,
.newcalendar td:first-child {
    padding-left: 0rem;
    padding-right: 1.5rem;
}

.newcalendar tr td {
    padding-bottom: 1.25rem;
}

.newcalendar tr:nth-of-type(3n+1) td {
    padding-top: 1.25rem;
}

.newcalendar tr:nth-of-type(3n+1) {
    border-top: 1px solid var(--border-color);
}

.newcalendar thead tr th {
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-color);
}

.newcalendar tr:nth-of-type(1) {
    border-top: 0 !important;
}

table.newcalendar h3 {
    font-size: 1rem;
    margin-bottom: 0;
}

table.newcalendar h4 {
    font-weight: 600;
    margin: 0;
}

table.newcalendar td.date {
    font-weight: 600;
    font-size: 0.8706rem;
}

table.newcalendar tr td:nth-of-type(3) {
    width: 50%;
    font-size: 0.8706rem;
}

@media only screen and (max-width: 767px) {
    table.newcalendar,
    table.newcalendar thead,
    table.newcalendar tbody,
    table.newcalendar th,
    table.newcalendar td,
    table.newcalendar tr {
        display: block;
        width: 100% !important;
        padding-right: 0.5rem;
    }

    table.newcalendar th,
    table.newcalendar td,
    table.newcalendar td:first-child {
        padding-right: 0;
    }

    .newcalendar tr:nth-of-type(3n+1) {
        border-top: 1px solid var(--border-color);
        padding: 1.5rem 0;
    }

    /* Make week number and title appear on one line */
    .newcalendar tr:nth-of-type(3n+1) td:nth-of-type(0),
    .newcalendar tr:nth-of-type(3n+1) td:nth-of-type(1),
    .newcalendar tr:nth-of-type(3n+1) td:nth-of-type(2) {
        width: auto;
        display: inline;
        padding-right: 1rem;
    }

    .newcalendar tr td:nth-of-type(0),
    .newcalendar tr td:nth-of-type(1) {
        width: auto;
        display: inline;
        padding-right: 1rem;
    }

    .newcalendar tr:nth-of-type(3n+1) td:nth-of-type(2) {
        width: 100%;
    }

    table.newcalendar tr:nth-of-type(3n+1) td h3 {
        display: inline;
    }
}

div.core + div.core,
div.core + div.further {
    margin-top: 0.5rem;
}

div.further {
    opacity: 0.75;
}
