/* Shared styles for nksonline.

   developer:   marionm
   requires:    nothing
   ========================================================================== */

/* ==========================================================================
   set variables
   ========================================================================== */

:root {
    /* fonts */
    --shared-font-sans: 'Source Sans Pro', Arial, sans-serif;
    --shared-font-serif: 'Crimson Text', Georgia, serif;
    --shared-font-book-serif: 'PT Serif', Georgia, serif;
    --shared-font-headings: 'Gill Sans Nova', Arial, sans-serif;
    --shared-font-mathematica: 'Mathematica', Arial, sans-serif;

    /* reds — chrome links (nav, headings, tooltips) */
    --shared-red: #892917;
    --shared-red-hover: #ff002f;

    /* reds — body content links (text-content, footer) — a second,
       distinct red/hover pair from the chrome one above */
    --shared-content-link: #951500;
    --shared-content-link-hover: #dd1100;

    /* golds — page chrome */
    --shared-page-gold: #ffcc66;
    --shared-nav-link: #ffcf6e;
    --shared-nav-link-hover: #ffa858;

    /* grays */
    --shared-gray-text: #898989;
    --shared-gray-medium: #686868;
    --shared-gray-dark: #565656;
    --shared-gray-mobile: #717171;
    --shared-gray-heading: #646464;
    --shared-gray-border: #d5d5d5;

    /* purple accent — ribbon banners */
    --shared-ribbon-bg: #f3eaf6;
    --shared-ribbon-bg-hover: #e9d9ee;
    --shared-ribbon-border: #e5daf4;
    --shared-ribbon-title: #531368;
    --shared-ribbon-text: #7d7181;

    /* thumbnail hover border — used identically in chapters.css.en and notes.css.en */
    --shared-thumbnail-hover-border: #820c09;

    /* z-index scale — each step just needs to be higher than the last;
       the actual numbers don't matter, only their relative order */
    --shared-z-raised: 1;
    --shared-z-floating: 10;
    --shared-z-floating-marker: 20;
    --shared-z-badge: 30;
    --shared-z-fixed-nav: 40;
    --shared-z-overlay: 50;
    --shared-z-overlay-top: 60;
}

/* ==========================================================================
   gui.en.css overrides
   ========================================================================== */

#_noscript div {
    bottom: 0;
    position: fixed;
    top: auto;
}

/* ==========================================================================
   setup the environment
   ========================================================================== */

html {
    background: var(--shared-page-gold);
    font-family: var(--shared-font-book-serif);
}

b,
optgroup,
strong { font-weight: 700; }

body { overflow-x: auto; } /* Safari herp derp */

main { touch-action: pan-y; } /* Safari herp derp */

main a { color: var(--shared-red); }

main a:hover,
main a:focus { color: var(--shared-red-hover); }

/* ==========================================================================
   header
   ========================================================================== */

#header {
    background: #3b3b3b;
    height: 70px;
}

#header h1 { margin-top: .4rem; }

#header h1 img { display: inline-block; }

#header h1 a:focus-visible img,
#header h1 a:hover img { opacity: .65; }

/* desktop nav
   ========================================================================== */

#nav {
    color: #d4d4d4;
    margin-top: 1rem;
}

#nav > * { white-space: nowrap; }

#nav > * > * { padding-left: 1.5rem; }

#nav a { color: var(--shared-nav-link); }

#nav a:focus-visible,
#nav a:hover { color: var(--shared-nav-link-hover); }

#nav .icon {
    cursor: pointer;
    display: inline-block;
    opacity: .5;
    transition: opacity .5s;
    vertical-align: middle;
}

html.reduced-motion #nav .icon { transition: none; }

#nav .hamburger-active .icon,
#nav a:hover > .icon,
#nav a:focus-visible > .icon,
#nav div:hover > .icon,
#nav div:focus-visible > .icon { opacity: 1; }

/* toc
   ================================== */

html.toc #nav .toc { display: none; }

#nav .toc .icon {
    background: url('/nks/img/icon-toc.png') no-repeat left top;
    background-size: 15px 28px;
    height: 14px;
    width: 15px;
}

#nav .toc:hover .icon,
#nav .toc:focus-within .icon { background-position: 0 -14px; }

/* breadcrumbs
   ================================== */

#nav .breadcrumbs {
    font-size: .75rem;
    padding-left: .5rem;
}

#nav .breadcrumbs a,
#nav .breadcrumbs span > span {
    display: inline-block;
    padding: .25rem;
    position: relative;
}

html.toc #nav .breadcrumbs,
html.index #nav .breadcrumbs,
html.names #nav .breadcrumbs,
html.search #nav .breadcrumbs { display: none; }

#nav .breadcrumbs div > span::before {
    color: #b3b3b3;
    content: '›';
    font-size: 19px;
    line-height: 0;
    margin-right: .2rem;
    position: relative;
    top: 1px;
}

/* size picker
   ================================== */

#nav .size-picker {
    display: none;
    position: relative;
    z-index: var(--shared-z-overlay-top);
}

.text-version #nav .size-picker { display: inline-block; }

#nav .size-picker .icon {
    background: url('/nks/img/icon-font-size.png') no-repeat left top;
    background-size: 18px 39px;
    height: 13px;
    width: 18px;
}

#nav .size-picker:hover .icon,
#nav .size-picker:focus-visible .icon { background-position: 0 -13px; }

#nav .size-picker ul {
    background: var(--shared-gray-dark);
    border-radius: 3px;
    box-shadow: 0px 1px 7px rgba(0, 0, 0, .25);
    color: #d0d0d0;
    display: none;
    font-size: .75rem;
    font-weight: 400;
    left: -.5rem;
    line-height: 1.2;
    margin: .5rem 0 0;
    padding: .25rem 0;
    position: absolute;
}

#nav .size-picker ul li {
    background: var(--shared-gray-dark);
    cursor: pointer;
    padding: .25rem 1.5rem .25rem 2rem;
}

#nav .size-picker ul li:hover,
#nav .size-picker ul li:focus-visible {
    background: #cb6f07;
    color: var(--fw-white);
}

#nav .size-picker ul li span { position: relative; }

#nav .size-picker ul li.checked span::before {
    color: #ffdd54;
    content: '\2713';
    left: -1rem;
    position: absolute;
}

/* search icon & drawer
   ================================== */

#nav .search .icon {
    background: url('/nks/img/icon-search.png') no-repeat left top;
    background-size: 19px 38px;
    height: 19px;
    width: 19px;
}

#nav .search:hover .icon,
#nav .search:focus-visible .icon { background-position: 0 -19px; }

#search {
    background: var(--shared-gray-dark);
    display: none;
    left: 0;
    padding: .5rem;
    position: absolute;
    right: 0;
    text-align: center;
    top: 70px;
    width: 100%;
    z-index: var(--shared-z-overlay);
}

#search > div {
    color: #dadada;
    font-size: .875rem;
    line-height: 0;
    margin: 0 auto;
}

#search > div > div { padding: 0 1rem; }

#search input {
    -webkit-appearance: none; /* get rid of rounded caps in iOS */
    appearance: none;
    background: rgba(255, 255, 255, .4);
    border: none;
    border-radius: 2px;
    color: var(--fw-black);
    font-weight: 400;
    line-height: 1.1;
    margin: 0 1.25rem 0 .5rem;
    padding: .25rem;
    text-align: left;
    transition: background .5s;
    width: 8rem;
}

html.reduced-motion #search input { transition: none; }

#search input.filled,
#search input:focus,
#search input:hover { background: rgba(255, 255, 255, 1); }

#search #search-jump-input { width: 3rem; }

/* hamburger nav
   ========================================================================== */

#nav .nav-burger { display: none; }

#nav .nav-burger > *:not(#nav-burger-top) { white-space: normal; }

#nav .nav-burger .hamburger { position: relative; }

#nav .nav-burger .hamburger .icon {
    background: url('/nks/img/icon-burger.png') no-repeat left top;
    background-size: 19px 18px;
    height: 18px;
    width: 19px;
}

#nav .nav-burger .nav-burger-panel {
    background: var(--shared-gray-dark);
    display: none;
    left: 0;
    padding: 0;
    position: absolute;
    right: 0;
    text-align: left;
    top: 60px;
    z-index: var(--shared-z-overlay-top);
}

#nav .nav-burger .nav-burger-panel > * { position: relative; }

#nav .nav-burger .nav-burger-panel .nav-burger-active { background: var(--shared-gray-medium); }

/* toc, breadcrumbs, size picker
   ================================== */

#nav .nav-burger #nav-burger-top {
    align-items: center;
    background: var(--shared-gray-medium);
    display: grid;
    grid-template-columns: 1fr calc(18px + 2.5rem);
}

#nav .nav-burger .nav-burger-toc-wrap { padding: .6rem .75rem; }

#nav .nav-burger .nav-burger-panel .breadcrumbs { display: inline-block; }

/* size picker
   ================================== */

#nav .nav-burger .size-picker {
    background: var(--shared-gray-medium);
    font-size: 0;
    padding: 0 .75rem;
}

#nav .nav-burger .size-picker > div {
    background: var(--shared-gray-dark);
    border-radius: .25rem;
    padding: .5rem;
}

#nav .nav-burger .size-picker.nav-burger-active > div { background: var(--fw-white); }

#nav .nav-burger .size-picker.nav-burger-active .icon { background-position: 0 -26px; }

#nav .nav-burger .size-picker + ul {
    background: var(--shared-gray-medium);
    border-radius: 0;
    border-top: 1px solid var(--shared-gray-text);
    box-shadow: none;
    display: none;
    font-size: 1rem;
    grid-column-end: span 2;
    margin: 0 .75rem;
    padding: .6rem;
    position: static;
    text-align: center;
}

#nav .nav-burger .size-picker + ul li {
    border-radius: .25rem;
    cursor: pointer;
    display: inline;
    padding: 0 .5rem;
}

#nav .nav-burger .size-picker + ul li.checked,
#nav .nav-burger .size-picker + ul li:hover,
#nav .nav-burger .size-picker + ul li:focus-visible {
    background: #404040;
    color: var(--fw-white);
}

/* chapter/section list
   ================================== */

#nav .nav-burger ul.chapters { padding: 1rem .75rem; }

#nav .nav-burger ul.chapters a {
    color: var(--fw-white);
    display: grid;
    gap: 5px;
    grid-template-columns: 24px 1fr;
}

#nav .nav-burger ul.chapters a:focus-visible,
#nav .nav-burger ul.chapters a:hover { color: var(--shared-nav-link); }

#nav .nav-burger ul.chapters a span:first-child {
    color: #ccc;
    justify-self: end;
    padding-right: 4px;
}

#nav .nav-burger ul.chapters a span:first-child:not(:empty) { border-right: 1px solid #ffffff60; }

#nav .nav-burger ul.chapters a:focus-visible span:first-child:not(:empty),
#nav .nav-burger ul.chapters a:hover span:first-child:not(:empty) {
    border-color: #ffcf6e60;
    color: var(--shared-nav-link);
}

#nav .nav-burger ul.chapters li {
    font-size: 1.15rem;
    line-height: 1.2;
    padding: 5px 0;
}

#nav .nav-burger ul.sections {
    display: none;
    padding-left: 24px;
}

#nav .nav-burger ul.sections li { font-size: 14px; }

#nav .nav-burger li.chapter.selected ul.sections {
    display: list-item;
    margin-bottom: -5px;
    padding-top: 5px;
}

#nav .nav-burger li.chapter.selected > a,
#nav .nav-burger li.chapter.selected li.section.selected > a { color: var(--shared-nav-link); }

#nav .nav-burger li.chapter.selected > a:focus-visible,
#nav .nav-burger li.chapter.selected > a:hover,
#nav .nav-burger li.chapter.selected li.section.selected > a:focus-visible,
#nav .nav-burger li.chapter.selected li.section.selected > a:hover { color: var(--shared-nav-link-hover); }

#nav .nav-burger li.chapter.selected > a span:first-child:not(:empty),
#nav .nav-burger li.chapter.selected li.section.selected > a span:first-child:not(:empty) {
    border-color: #ffcf6e60;
    color: var(--shared-nav-link);
}

/* search
   ================================== */

#nav .nav-burger .search #search {
    background: var(--shared-gray-medium);
    padding: 0;
    position: static;
}

#nav .nav-burger .search #search > div {
    font-size: 1.05rem;
    margin: 0;
    padding: .5rem;
}

#nav .nav-burger .search #search > div > div { padding: 0; }

/* error stripe
   ========================================================================== */

#error-404 {
    background: #ffbc47;
    padding: .5rem;
    text-align: center;
    width: 100%;
}

#error-404 span {
    background: url('/nks/img/icon-error.png') no-repeat left center;
    background-size: 27px 27px;
    display: inline-block;
    font-size: 1.25rem;
    line-height: 27px;
    min-height: 27px;
    padding-left: 32px;
    text-align: left;
}

/* ==========================================================================
   shared sub-page styles
   ========================================================================== */

/* reactions to size picker
   ========================================================================== */

.thin-wrapper,
.wide-wrapper {
    margin: 0 auto;
    padding: 3rem 5rem;
    width: 100%;
}

.thin-wrapper { max-width: 900px; }

.wide-wrapper { max-width: 1128px; }

.thin-padding { padding: 4rem; }

.wide-padding { padding: 2rem 8rem; }

html.image-version .image-content { position: relative; }

html.text-version .text-content {
    padding-bottom: 3.5rem;
    padding-top: 4rem;
}

html:not(.size-auto).text-version.size-small .text-content,
html:not(.size-auto).image-version.size-small .image-content { font-size: .82rem; }

html.size-auto.text-version .text-content,
html.size-auto.image-version .image-content,
html:not(.size-auto).text-version.size-medium .text-content,
html:not(.size-auto).image-version.size-medium .image-content { font-size: 1rem; }

html:not(.size-auto).text-version.size-large .text-content,
html:not(.size-auto).image-version.size-large .image-content { font-size: 1.2rem; }

html:not(.size-auto).text-version.size-xlarge .text-content,
html:not(.size-auto).image-version.size-xlarge .image-content { font-size: 1.5rem; }

/* footer
   ================================== */

.no-related-notes {
    color: #838383;
    font-size: .875rem;
    font-style: italic;
}

/* navigation
   ========================================================================== */

#previous,
#next { position: relative; }

#next { float: right; }

#previous a,
#next a {
    bottom: 0;
    height: 100%;
    position: fixed;
    top: 70px;
    user-select: none;
    width: 3rem;
    z-index: var(--shared-z-fixed-nav);
}

#previous a { margin-left: -5rem; }

#next a { margin-left: 2rem; }

#previous a span,
#next a span {
    -webkit-text-stroke: 1px var(--shared-page-gold);
    color: #ffedca;
    display: block;
    font-family: var(--shared-font-sans);
    font-size: 9rem;
    height: 1.5em;
    line-height: 0;
    opacity: .8;
    position: relative;
    text-align: center;
    top: 50%;
    width: 3rem;
}

#previous a span { left: 4px; }

#next a span { left: -4px; }

#previous a:focus-visible span,
#previous a:hover span,
#next a:focus-visible span,
#next a:hover span {
    -webkit-text-stroke: 1px #ffcc6600;
    color: #e96209;
    opacity: 1;
}

/* page content
   ========================================================================== */

#content {
    background: var(--fw-white);
    position: relative;
}

#content hr,
#related-notes hr,
#related-pages hr,
#related-resources hr,
#image-sources hr {
    border: none;
    border-top: 1px solid var(--shared-gray-border);
    display: block;
    width: 100%;
}

#content hr { margin: 1rem 0; }

#content section:not(.chapter-title) > hr:last-child { display: none; }

/* headings
   ================================== */

#content h1,
#content h2 { font-family: var(--shared-font-serif); }

#content .main-heading {
    color: var(--fw-black);
    font-size: 1.975rem;
    margin-bottom: 1rem;
}

#content .chapter-heading {
    color: var(--shared-gray-heading);
    font-size: 1.7rem;
    letter-spacing: -.04rem;
    margin-bottom: 2rem;
}

#content .section-heading {
    color: var(--shared-gray-heading);
    font-family: var(--shared-font-headings);
    font-size: 1.15rem;
    font-weight: 400;
    margin-bottom: 1rem;
}

#content .chapter-content .section-heading {
    font-family: var(--shared-font-serif);
    font-size: 1.35rem;
    font-weight: 500;
    position: relative;
}

html.notes-chapter #content .section-heading,
#content .chapter-heading + .section-heading {
    font-family: var(--shared-font-serif);
    font-size: 1.45rem;
    font-weight: 500;
}

#content .chapter-heading + .section-heading { margin-top: -1.8rem; }

#content .chapter-heading a,
#content .section-heading a { color: var(--shared-gray-heading); }

#content .chapter-heading a:focus-visible,
#content .chapter-heading a:hover,
#content .section-heading a:focus-visible,
#content .section-heading a:hover { color: var(--fw-black); }

#content .chapter-heading a > span,
#content .section-heading a > span { color: var(--fw-black); }

#content .chapter-heading a:focus-visible > span,
#content .chapter-heading a:hover > span,
#content .section-heading a:focus-visible > span,
#content .section-heading a:hover > span { color: var(--shared-red); }

#content .section-heading:target a { border-bottom: solid 2px #f4ba86; }

#content .section-heading .section-anchor {
    bottom: -2px;
    display: none;
    font-size: 1rem;
    margin-left: .25rem;
    position: absolute;
}

#content .section-heading:hover .section-anchor,
#content .section-heading:focus-within .section-anchor { display: inline-block; }

#content .section-heading .section-anchor img { filter: brightness(0) saturate(100%) invert(87%) sepia(0%) saturate(308%) hue-rotate(211deg) brightness(88%) contrast(87%); }

#content .section-heading .section-anchor:hover img,
#content .section-heading .section-anchor:focus-within img { filter: brightness(0) saturate(100%) invert(16%) sepia(44%) saturate(3515%) hue-rotate(350deg) brightness(100%) contrast(92%); }

/* notes tab
   ================================== */

#content .side-tabs {
    height: 1.5rem;
    left: calc(100% + 1.5rem);
    position: absolute;
    top: 1.5rem;
    transform: rotate(90deg);
    transform-origin: top left;
    width: 1.5rem;
    z-index: var(--shared-z-fixed-nav);
}

#content .side-tabs ul { display: flex; }

#content .side-tabs li { transform: rotate(180deg); }

#content .side-tabs a {
    background: #969696;
    border-bottom-left-radius: 3px;
    border-bottom-right-radius: 3px;
    color: var(--fw-white);
    display: inline-block;
    font-size: .75rem;
    letter-spacing: .05em;
    line-height: 1.5rem;
    margin-left: .3125rem;
    padding: 0 .5rem;
    text-transform: uppercase;
    white-space: nowrap;
    z-index: var(--shared-z-overlay);
}

.page #content .side-tabs li a:focus-visible,
.page #content .side-tabs li a:hover { background: #3b3b3b; }

.page.image-version  #content .side-tabs li.image-view a,
.page.text-version #content .side-tabs li.text-view a {
    background: #de8200;
    pointer-events: none;
}

/* two-column sets of links
   ================================== */

#content .page-links > * { padding-bottom: 1rem; }

#content .page-links > *:nth-child(odd) { padding-right: 1rem; }

#content .page-links > *:nth-child(even) { padding-left: 1rem; }

#content .section-links,
#related-notes .cols-2 {
    column-count: 2;
    column-fill: balance;
    column-gap: 2rem;
    column-rule: 1px solid #95150030;
}

#related-notes .cols-2.no-rule { column-rule: none; }

#content .section-links p {
    break-inside: avoid;
    padding-bottom: 1rem;
    word-wrap: break-word;
}

/* text content snowflakes
   ================================== */

#content .text-content a { color: var(--shared-content-link); }

#content .text-content a:hover,
#content .text-content a:focus { color: var(--shared-content-link-hover); }

#content .text-content img {
    display: inline-block;
    height: auto;
    max-width: 100%;
}

#content sub,
#content sup { font-style: italic; }

#content code,
#content .blockcode,
#content .c2c-inline,
#content .capcode {
    font-family: var(--shared-font-sans);
    font-style: italic;
    font-weight: 600;
    word-break: break-word;
}

#content .text-content .capimg-wrapper { margin: 1rem 0 0; }

#content .text-content figure { margin: 1rem 0; }

#content .text-content img.blockimg,
#content .text-content img.inlineimg,
#content .text-content img.capimg,
#content .text-content figure img {
    display: inline;
    vertical-align: middle;
}

#content span[class^='spacer-']::before {
    clear: right;
    content: '';
    display: block;
}

#content span[class^='spacer-']::after {
    content: '';
    display: inline-block;
}

#content .spacer-1::after { width: .25rem; }
#content .spacer-2::after { width: .5rem; }
#content .spacer-3::after { width: .75rem; }
#content .spacer-4::after { width: 1rem; }
#content .spacer-5::after { width: 1.25rem; }
#content .spacer-6::after { width: 1.5rem; }
#content .spacer-7::after { width: 1.75rem; }
#content .spacer-8::after { width: 2rem; }
#content .spacer-9::after { width: 2.25rem; }
#content .spacer-10::after { width: 2.5rem; }
#content .spacer-11::after { width: 2.75rem; }
#content .spacer-12::after { width: 3rem; }
#content .spacer-13::after { width: 3.25rem; }
#content .spacer-14::after { width: 3.5rem; }
#content .spacer-15::after { width: 3.75rem; }
#content .spacer-16::after { width: 4rem; }

/* special characters
   ================================== */

#content .special-character {
    font-family: var(--shared-font-mathematica);
    font-weight: 600;
    letter-spacing: 2px;
}

#content .smallcaps { font-variant: small-caps; }

#content .radical {
    font-size: 1.18em;
    font-style: normal;
    font-weight: 300;
    line-height: 0;
}

/* ==========================================================================
   copy to clipboard
   ========================================================================== */

/* shared
   ========================================================================== */

#content .c2c-block,
#content .c2c-inline,
#content .c2c-image,
#content .c2c-image-view {
    cursor: pointer;
    position: relative;
}

#content .c2c-block,
#content .c2c-inline {
    font-family: var(--shared-font-sans);
    font-style: italic;
    font-weight: 600;
    word-break: break-word;
}

#content .c2c-inline { display: inline; }

#content .c2c-block { display: inline-block; }

#content .c2c-block.open,
#content .c2c-inline.open,
#content .c2c-block:hover,
#content .c2c-block:focus-visible,
#content .c2c-inline:hover,
#content .c2c-inline:focus-visible { background: rgb(40 190 250 / 20%); }

#content .c2c-image,
#content .c2c-image-view { border: 1px solid transparent; }

#content .c2c-image { display: inline-block; }

#content .c2c-image-plain {
    border: 1px solid transparent;
    display: inline-block;
}

#content .c2c-image.open,
#content .c2c-image-view.open {
    border: 1px solid #6ecff6;
    box-shadow: 0 2px .375em 0 rgb(40 190 250 / 40%);
}

#content .c2c-image:hover,
#content .c2c-image:focus,
#content .c2c-image-view:hover,
#content .c2c-image-view:focus { border: 1px solid #6ecff6; }

#content .c2c-image.open::before,
#content .c2c-image-view.open::before,
#content .c2c-image:hover::before,
#content .c2c-image:focus::before,
#content .c2c-image-view:hover::before,
#content .c2c-image-view:focus::before {
    background-image: url('../img/icon-menu.png');
    background-size: contain;
    bottom: -.5rem;
    content: '';
    display: block;
    height: 1rem;
    left: 50%;
    position: absolute;
    transform: translateX(-50%);
    width: 1rem;
    z-index: var(--shared-z-floating-marker);
}

#content .c2c-wrapper {
    background: var(--fw-white);
    border: 1px solid #6ecff6;
    box-shadow: 0 2px .375em 0 rgb(40 190 250 / 40%);
    display: none;
    font-family: var(--shared-font-sans);
    font-size: .875em;
    font-style: normal;
    font-weight: 400;
    left: 50%;
    position: absolute;
    top: 100%;
    transform: translateX(-50%);
    white-space: nowrap;
    z-index: var(--shared-z-badge);
}

#content .c2c-block.open .c2c-wrapper,
#content .c2c-inline.open .c2c-wrapper,
#content .c2c-image.open .c2c-wrapper,
#content .c2c-image-view.open .c2c-wrapper { display: block; }

/* tooltips
   ================================== */

#content .c2c-wrapper .tooltip {
    background: #f5f5f5;
    border: 1px solid #e5e5e5;
    border-radius: 3px;
    box-shadow: 0 2px .375em 0 rgb(0 0 0 / 20%);
    color: var(--shared-gray-text);
    display: none;
    font-size: 1em;
    font-style: normal;
    font-weight: 400;
    left: 50%;
    line-height: 1;
    margin-top: 0;
    padding: .5em 1.3em;
    position: absolute;
    text-align: center;
    top: -4.25em;
    transform: translateX(-50%);
    transition: all .7s ease;
    white-space: nowrap;
    z-index: var(--shared-z-badge);
}

html.reduced-motion #content .c2c-wrapper .tooltip { transition: none; }

#content .c2c-wrapper.block-code-template,
#content .c2c-wrapper.inline-code-template {
    bottom: 100%;
    top: auto;
}

#content .c2c-wrapper.block-code-template .tooltip,
#content .c2c-wrapper.inline-code-template .tooltip {
    bottom: .75em;
    top: auto;
}

#content .c2c-wrapper.image-view-template .tooltip,
#content .c2c-wrapper.text-view-template .tooltip { top: -3.5em; }

#content .c2c-wrapper.tooltip-show .tooltip,
#content .c2c-block.open .tooltip,
#content .c2c-inline.open .tooltip { display: block; }

#content .c2c-wrapper .tooltip::before,
#content .c2c-wrapper .tooltip::after {
    border-style: solid;
    border-width: 10px;
    content: '';
    display: block;
    left: calc(50% - 10px);
    position: absolute;
}

#content .c2c-wrapper .tooltip::before {
    border-color: #f5f5f5 transparent transparent transparent;
    top: calc(100% - 1px);
    z-index: 1;
}

#content .c2c-wrapper .tooltip::after {
    border-color: #e8e8e8 transparent transparent transparent;
    top: 100%;
    z-index: 0;
}

#content .c2c-wrapper .tooltip i {
    background: url('/nks/img/icon-clipboard.png') no-repeat center left;
    background-size: contain;
    display: inline-block;
    height: 18px;
    margin: -3px .25em 0 0;
    padding: .5em;
    vertical-align: middle;
    width: 14px;
}

#content .c2c-wrapper .tooltip.copied i {
    background: url('/nks/img/icon-checkmark.png') no-repeat center left;
    background-size: contain;
}

#content .c2c-wrapper .tooltip span::before {
    content: 'Copy to clipboard.';
    display: inline;
}

#content .c2c-wrapper .tooltip.copied span::before { content: 'Copied!'; }

/* dropdowns
   ================================== */

#content .c2c-wrapper ul li { display: none; }

#content .c2c-wrapper ul li a,
#content .c2c-wrapper .a {
    color: var(--shared-gray-text);
    display: block;
    padding: .3em .625em .3em 2em;
    white-space: nowrap;
}

#content .c2c-wrapper ul li a:hover,
#content .c2c-wrapper ul li a:focus,
#content .c2c-wrapper .a:hover,
#content .c2c-wrapper .a:focus {
    background-color: rgb(40 190 250 / 10%);
    color: #0072bc;
}

#content .c2c-wrapper ul li ul li a,
#content .c2c-wrapper ul li ul li .a {
    font-size: .8em;
    padding: .25em .625em .25em 2.5em;
}

#content .c2c-wrapper .download-title {
    border-top: 1px solid #d7d7d7;
    color: var(--shared-gray-text);
    user-select: none;
}

#content .c2c-wrapper .download-title .arrow {
    border: solid var(--shared-gray-text);
    border-width: 0 1px 1px 0;
    display: inline-block;
    margin-left: .5em;
    padding: .2em;
    position: relative;
    top: -.2em;
    transform: rotate(45deg);
    vertical-align: middle;
}

#content .c2c-wrapper .download-dropdown { display: none; }

/* icons
   ================================== */

#content .c2c-wrapper .icon {
    background-position: .625em center;
    background-repeat: no-repeat;
    background-size: .75em 1em;
    display: block;
}

#content .c2c-wrapper .icon-clipboard {
    background-image: url('/nks/img/icon-clipboard.png');
    color: rgb(61 139 170);
    font-weight: 600;
}

#content .c2c-wrapper .icon-clipboard:hover,
#content .c2c-wrapper .icon-clipboard:focus { background-image: url('/nks/img/icon-clipboard-hover.png'); }

#content .c2c-wrapper .icon-graphics {
    background-image: url('/nks/img/icon-symbolic-graphics.png');
    background-size: .875em;
}

#content .c2c-wrapper .icon-graphics:hover,
#content .c2c-wrapper .icon-graphics:focus { background-image: url('/nks/img/icon-symbolic-graphics-hover.png'); }

#content .c2c-wrapper .icon-download {
    background-image: url('/nks/img/icon-copy-download.png');
    background-position: .625em .5em;
    padding: .3em .625em .3em 2em;
}

#content .c2c-wrapper .copy-nothing:hover .icon-download,
#content .c2c-wrapper .copy-nothing:focus .icon-download { background-image: url('/nks/img/icon-copy-download-hover.png'); }

/* ==========================================================================
   thick footer
   ========================================================================== */

#footer {
    background: #fff5e1;
    border-top: 6px solid var(--shared-page-gold);
    margin-top: 3px;
}

html.notes-section #footer,
html.notes-page #footer {
    background: none;
    border: none;
    margin-top: 0;
    padding: 0;
}

#footer a { color: var(--shared-content-link); }

#footer a:focus-visible,
#footer a:hover { color: var(--fw-black); }

/* headings and lists
   ========================================================================== */

#related-notes h2,
#related-pages h2,
#related-resources h2 {
    color: #454545;
    margin-bottom: 1rem;
    text-transform: uppercase;
}

#footer .thumbnails,
#content .thumbnails {
    display: flex;
    flex-wrap: wrap;
    gap: 3px;
    margin-bottom: .75rem;
}

#related-pages li { margin-bottom: .5rem; }

#related-notes li { padding-bottom: .5rem; }

#related-resources li { margin: 1rem 0 .5rem; }

#related-pages li:nth-child(odd) > span,
#related-resources li:nth-child(odd) > span { margin-right: 1rem; }

#related-pages li:nth-child(even) > span { margin-left: 1rem; }

#related-resources li:nth-child(even) > span { margin-left: .5rem; }

#related-notes li a,
#related-pages li a,
#related-resources li a {
    color: var(--shared-content-link);
    display: inline-block;
    padding-left: .75rem;
    position: relative;
}

#related-notes ul.show-thumbnails li a {
    display: table;
    padding: 0;
}

#related-notes ul.show-thumbnails li a > * {
    display: table-cell;
    vertical-align: middle;
}

#related-notes ul.show-thumbnails li a > *:last-child {
    break-inside: avoid;
    padding-left: .5rem;
}

#related-notes li a img { display: none; }

#related-notes ul.show-thumbnails li a img { display: block; }

#related-resources li a {
    font-size: .8125rem;
    padding-left: 0;
}

#related-resources li a span {
    color: #707070;
    font-family: var(--shared-font-sans);
    font-size: .75rem;
    font-weight: 400;
    position: absolute;
    top: -16px;
    white-space: nowrap;
}

#related-notes li a:focus-visible,
#related-notes li a:hover,
#related-pages li a:focus-visible,
#related-pages li a:hover,
#related-resources li a:focus-visible,
#related-resources li a:hover { color: var(--fw-black); }

#related-notes li a::before,
#related-pages li a::before {
    color: var(--shared-content-link);
    content: '»';
    left: 0;
    position: absolute;
}

#related-notes ul.show-thumbnails li a::before { display: none; }

#related-notes hr,
#related-pages hr,
#related-resources hr { margin: 2rem 0 1rem; }

#related-notes hr.even,
#related-pages hr.even,
#related-resources hr.even { margin: 2rem 0; }

#image-sources { margin-top: 2rem; }

#image-sources hr { margin-bottom: 2rem; }

#image-sources li { margin-bottom: 10px; }

#image-sources h2 {
    color: #454545;
    margin-bottom: 1rem;
    text-transform: uppercase;
}

#image-sources a img {
    max-height: 78px;
    max-width: 93%;
}

#image-sources a .notebook-spiral {
    background: url('/nks/img/icon-spiral.png') no-repeat;
    background-size: 6px 74px;
    height: 80px;
    margin-top: 4px;
    position: absolute;
    width: 12px;
}

#image-sources a:focus-visible .notebook-spiral,
#image-sources a:hover .notebook-spiral {
    background: url('/nks/img/icon-spiral-hover.png') no-repeat;
    background-size: 6px 74px;
    height: 160px;
    margin-top: 4px;
    position: absolute;
    width: 12px;
}

#image-sources a .notebook-chevron {
    background: url('/nks/img/icon-chevron.png') no-repeat;
    background-size: 20px 19px;
    height: 24px;
    margin-top: 60px;
    width: 25px;
}

#image-sources a:focus-visible .notebook-chevron,
#image-sources a:hover .notebook-chevron {
    background: url('/nks/img/icon-chevron-hover.png') no-repeat;
    background-size: 20px 19px;
    height: 24px;
    margin-top: 60px;
    width: 25px;
}

#image-sources .notebook-image {
    align-items: center;
    border: 1px solid #bcbcbc;
    display: flex;
    height: 80px;
    margin-left: 2px;
    max-width: 375px;
    overflow: hidden;
    padding-left: 5px;
}

#image-sources a:focus-visible .notebook-image,
#image-sources a:hover .notebook-image { border: 1px solid var(--shared-content-link-hover); }

#image-sources a {
    display: flex;
    margin-right: 20px;
    min-height: 80px;
}

/* ==========================================================================
   inline footer
   ========================================================================== */

#inline-footer {
    border-top: 1px solid var(--shared-gray-border);
    font-size: .875rem;
    margin-top: 2rem;
    max-width: 100vw;
    padding-top: 1rem;
    text-align: center;
}

#inline-footer a {
    color: #020202;
    display: inline-block;
}

#inline-footer a:focus-visible,
#inline-footer a:hover { color: var(--shared-content-link); }

#inline-footer div:not(:last-of-type) a { margin-right: 2rem; }

#inline-footer .mini-link img {
    margin-right: .5rem;
    position: relative;
    top: -2px;
    vertical-align: middle;
}

#inline-footer .pdf-link {
    color: #020202;
    display: inline-block;
    position: relative;
}

#inline-footer .tooltip {
    background: var(--fw-white);
    border: 1px solid var(--fw-white);
    border-radius: .25rem;
    box-shadow: 0 0 1rem rgba(0, 0, 0, .2);
    display: none;
    left: 0;
    line-height: 1.5;
    padding: .75rem 1rem;
    position: absolute;
    text-align: left;
    top: -1.5rem;
    white-space: nowrap;
    z-index: var(--shared-z-floating-marker);
}

#inline-footer .tooltip .close {
    background: var(--fw-white);
    border-radius: 1rem;
    box-shadow: 0 0 1rem rgba(0, 0, 0, .2);
    color: var(--shared-red);
    cursor: pointer;
    font-size: .5rem;
    height: 16px;
    line-height: 16px;
    position: absolute;
    right: -.3rem;
    text-align: center;
    top: -.3rem;
    width: 16px;
    z-index: var(--shared-z-badge);
}

#inline-footer .tooltip a { color: var(--shared-red); }

#inline-footer .tooltip a:focus-visible,
#inline-footer .tooltip a:hover { color: var(--shared-red-hover); }

/* ==========================================================================
   citation
   ========================================================================== */

#citation {
    color: var(--shared-gray-heading);
    font-size: .85rem;
    padding: .95rem 0;
}

footer svg#icon-cc-by-sa,
footer svg#icon-wiki {
    display: inline-block;
    height: .7rem;
    margin-bottom: .23rem;
    vertical-align: bottom;
    width: auto;
}

/* ==========================================================================
   ribbons
   ========================================================================== */

/* stripe
   ================================== */

.ribbon-wrapper.stripe .ribbon {
    border-top: 6px solid var(--shared-page-gold);
    margin-bottom: -3px;
}

.ribbon-wrapper.stripe a {
    background: #f7f1fe;
    border: 2px solid var(--shared-ribbon-border);
    display: block;
    font-family: var(--shared-font-sans);
    padding: 17px 10px;
}

.ribbon-wrapper.stripe a:focus-visible,
.ribbon-wrapper.stripe a:hover {
    background: var(--shared-ribbon-bg-hover);
    border: 2px solid var(--shared-ribbon-border);
}

.ribbon-wrapper.stripe .ribbon-content {
    margin: 0 auto;
    max-width: 794px;
}

.ribbon-wrapper.stripe .icon img {
    margin-right: 18px;
    vertical-align: middle;
}

.ribbon-wrapper.stripe .title {
    color: var(--shared-ribbon-title);
    font-size: 16px;
    font-weight: 600;
    line-height: 19px;
}

.ribbon-wrapper.stripe .text {
    color: #4e4e4e;
    font-size: 16px;
    font-weight: 400;
    line-height: 19px;
}

.ribbon-wrapper.stripe .book { font-style: italic; }

/* top
   ================================== */

.ribbon-wrapper.top {
    position: absolute;
    right: 0;
    top: 0;
    z-index: var(--shared-z-raised);
}

.ribbon-wrapper.top a {
    background: var(--shared-ribbon-bg);
    display: inline-block;
    font-family: var(--shared-font-sans);
    padding: .8rem;
}

.ribbon-wrapper.top a:focus-visible,
.ribbon-wrapper.top a:hover { background: var(--shared-ribbon-bg-hover); }

.ribbon-wrapper.top .icon img {
    margin-right: .625rem;
    vertical-align: middle;
}

.ribbon-wrapper.top .title {
    color: var(--shared-ribbon-text);
    font-size: .875rem;
    font-weight: 400;
}

.ribbon-wrapper.top .text {
    color: var(--shared-ribbon-title);
    display: block;
    font-size: 1rem;
    font-weight: 600;
}

/* bottom
   ================================== */

.ribbon-wrapper.bottom { display: none; }

.ribbon-wrapper.bottom a {
    background: var(--shared-ribbon-bg);
    display: block;
    font-family: var(--shared-font-sans);
    padding: 1.25rem;
    text-align: center;
}

.ribbon-wrapper.bottom a:focus-visible,
.ribbon-wrapper.bottom a:hover { background: var(--shared-ribbon-bg-hover); }

.ribbon-wrapper.bottom .ribbon-content {
    display: inline-block;
    margin: 0 auto;
}

.ribbon-wrapper.bottom .icon img {
    margin-right: 1.125rem;
    vertical-align: middle;
}

.ribbon-wrapper.bottom .title {
    color: var(--shared-ribbon-text);
    font-size: .875rem;
    font-weight: 400;
    margin-right: .625rem;
}

.ribbon-wrapper.bottom .text {
    color: var(--shared-ribbon-title);
    font-size: 1rem;
    font-weight: 600;
}

/* ==========================================================================
   responsive breakpoint styles
   ========================================================================== */

/* styles for large screens (1200px)
   ========================================================================== */

@media all and (min-width: 1200px) {
}

/* styles for medium screens (900px)
   ========================================================================== */

@media all and (max-width: 900px) {
    #nav > * > * { padding-left: 1rem; }
    #nav .size-picker ul { left: -1rem; }

    .wide-padding { padding: 2rem 4rem; }
    .thin-padding { padding: 2rem; }

    #footer { padding: 2rem 4rem; }

    .ribbon-wrapper.top { display: none; }
    .ribbon-wrapper.bottom { display: block; }
}

/* styles for small screens (600px)
   ========================================================================== */

@media all and (max-width: 600px) {
    html { background: var(--fw-white); }

    #header { height: 60px; }
    #header h1 { margin-right: 1rem; }
    #header h1 img { width: 100%; }

    #nav { margin-top: 0; }
    #nav .nav-main { display: none; }
    #nav .nav-burger { display: table-row; }
    #nav .nav-burger .hamburger .icon { background: url(/nks/img/icon-burger__600.png) no-repeat left top; }
    #nav .breadcrumbs { font-size: .95rem; }

    #search form { margin: .25rem 0; }
    #search label {
        display: inline-block;
        text-align: right;
        width: 8rem;
    }
    /* !important needed: beats the framework's own
       input[type=...] { font-size: 16px !important; } iOS-zoom-prevention rule */
    #search input { font-size: 1.1rem !important; }
    #search #search-index-input,
    #search #search-all-input { width: 10rem; }

    #error-404 span {
        background-size: 19px 19px;
        font-size: .9rem;
        padding-left: 23px;
    }

    #content .side-tabs {
        height: 36px;
        left: 0;
        margin: 0 auto;
        margin-top: -36px;
        padding: 0;
        position: sticky;
        top: 0;
        transform: none;
        width: calc(100% - 72px);
        z-index: var(--shared-z-fixed-nav);
    }
    #content .side-tabs ul {
        align-items: center;
        height: 36px;
        justify-content: center;
    }
    #content .side-tabs li {  transform: none; }
    #content .side-tabs li.text-view { order: -1; }
    #content .side-tabs a {
        background: var(--shared-gray-mobile);
        border: 1px solid var(--shared-gray-mobile);
        border-radius: 3px;
        line-height: 1;
        padding: .4rem;
        pointer-events: all !important;
    }
    #content .side-tabs a:focus-visible,
    #content .side-tabs a:hover,
    .page #content .side-tabs li a:focus-visible,
    .page #content .side-tabs li a:hover { background: #ffffff3b; }
    .page.image-version .side-tabs li.image-view a,
    .page.text-version .side-tabs li.text-view a {
        background: var(--shared-gray-mobile);
        border: 1px solid #aaa;
    }

    html.notes-chapter #content .thumbnails a,
    html.notes-chapter #content .thumbnails img {
        height: auto;
        max-width: 38px;
    }

    .wide-wrapper,
    .thin-wrapper { padding: 0; }

    .wide-padding,
    .thin-padding { padding: 2rem; }

    #prevnext {
        background: var(--shared-gray-mobile);
        display: flex;
        height: 36px;
        justify-content: space-between;
        position: sticky;
        top: 0;
        width: 100%;
        z-index: var(--shared-z-fixed-nav);
    }

    #previous,
    #next {
        height: 36px;
        position: static;
        top: 0;
        width: 36px;
        z-index: var(--shared-z-overlay);
    }

    #previous a,
    #next a {
        bottom: unset;
        color: #ddd;
        display: block;
        height: 36px;
        left: 0;
        margin: 0;
        position: sticky;
        top: 0;
        user-select: none;
        width: 36px;
    }

    html.notes-chapter #next a { float: right; }

    #previous a:focus-visible,
    #previous a:hover,
    #next a:focus-visible,
    #next a:hover,
    #previous a:focus-visible span,
    #previous a:hover span,
    #next a:focus-visible span,
    #next a:hover span {
        -webkit-text-stroke: 0px;
        color: #ffae29;
        opacity: 1;
    }

    #previous a span,
    #next a span {
        -webkit-text-stroke: 0px;
        color: inherit;
        font-size: 4rem;
        font-weight: 100;
        height: 36px;
        line-height: .5;
        opacity: 1;
        position: static;
        width: 36px;
    }

    #previous .half,
    #next .half,
    #previous a:focus-visible span.half,
    #previous a:hover span.half,
    #next a:focus-visible span.half,
    #next a:hover span.half { opacity: 1; }

    #content .page-links > *:nth-child(odd) { padding-right: 0; }
    #content .page-links > *:nth-child(even) { padding-left: 0; }
    #content .section-links { column-count: 1; }

    html.page.text-version #content .text-content { padding: 2rem; }

    #inline-footer div:not(:last-of-type) a { margin-right: 0; }
    #inline-footer div div {
        /* !important needed: beats the framework's .heirs-margin-bt-1-2__600 > *
           utility class applied to this element's parent */
        margin-bottom: 0 !important;
        padding: 0 .4rem;
    }

    #footer {
        border-top: 2px solid var(--shared-page-gold);
        margin-top: 0;
    }
    #footer .thumbnails a img,
    #footer .show-thumbnails a img {
        height: auto;
        max-width: 76px;
        width: 15vw;
    }
    #related-notes ul.show-thumbnails li:nth-child(odd) > span,
    #related-notes ul.show-thumbnails li:nth-child(odd) a { margin-right: 0; }
    #related-notes ul.show-thumbnails li:nth-child(even) > span,
    #related-notes ul.show-thumbnails li:nth-child(even) a { margin-left: 0; }
    #footer li:nth-child(odd) span,
    #related-resources li:nth-child(odd) span { margin-right: 0; }
    #footer li:nth-child(even) span,
    #related-resources li:nth-child(even) span { margin-left: 0; }

    .ribbon-wrapper.bottom .title { text-align: left; }
    .ribbon-wrapper.bottom .text { display: block;  }

    #citation {
        border-top: 2px solid var(--shared-page-gold);
        padding: .95rem;
        text-align: center;
    }
    #citation p { display: inline-block; }
}

/* styles for minimum supported screen width (320px)
   ========================================================================== */

@media all and (max-width: 320px) {
}

/* printer styles
   ========================================================================== */

@media print {
}