/* Poof! manual: "Paper & ink", the look of the Poof! website.
 *
 * Loaded after extra.css and overriding it. Warm paper with a faint grain and near-black ink
 * (light), warm charcoal with cream type (dark); a serif display face for the page title and
 * headings, a sans for text, and vermilion as the one accent (links, the page you are on, the
 * primary button). The tokens are the website's own (its poof.scss, Paper & ink).
 *
 * Fonts: nothing here loads a font. The in-app manual uses the system stacks below (Georgia
 * for display, the system sans for text). The website build (scripts/build_manual_site.sh
 * --web-fonts) adds Fraunces and Instrument Sans from Google Fonts and a small stylesheet that
 * sets --paper-display and --paper-sans to them.
 */

/* ---------- Tokens ---------- */

:root {
  --paper-display: Georgia, "Times New Roman", serif;
  --paper-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --paper-display-weight: 400;

  --paper-bg: #f1ebdf;
  --paper-bg-deep: #e9e1d2;
  --paper-frame: #fbf8f2;
  --paper-ink: #1c1915;
  --paper-ink-2: #574d42;
  --paper-line: rgb(28 25 21 / 20%);
  --paper-line-strong: rgb(28 25 21 / 26%);
  --paper-red: #b8380f;
  --paper-red-hover: #9c2f0c;
  --paper-wash: rgb(184 56 15 / 8%);
  --paper-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .16 0 0 0 0 .12 0 0 0 0 .07 1 0 0 0 0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='table' tableValues='0 .02 .08 .2'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

[data-md-color-scheme="slate"] {
  --paper-bg: #1e1b17;
  --paper-bg-deep: #171512;
  --paper-frame: #26221d;
  --paper-ink: #eee5d4;
  --paper-ink-2: #bdb19f;
  --paper-line: rgb(238 229 212 / 22%);
  --paper-line-strong: rgb(238 229 212 / 28%);
  --paper-red: #f07a52;
  --paper-red-hover: #f59472;
  --paper-wash: rgb(240 122 82 / 10%);
  --paper-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .96 0 0 0 0 .88 1 0 0 0 0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='table' tableValues='0 .01 .04 .09'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Material's variables, both schemes, from the tokens. */
[data-md-color-scheme="poof"],
[data-md-color-scheme="slate"] {
  --md-text-font: var(--paper-sans);

  --md-primary-fg-color: var(--paper-bg);
  --md-primary-fg-color--light: var(--paper-bg);
  --md-primary-fg-color--dark: var(--paper-bg-deep);
  --md-primary-bg-color: var(--paper-ink);
  --md-primary-bg-color--light: var(--paper-ink-2);

  --md-accent-fg-color: var(--paper-red);
  --md-accent-fg-color--transparent: var(--paper-wash);
  --md-accent-bg-color: var(--paper-frame);

  --md-default-bg-color: var(--paper-bg);
  --md-default-bg-color--light: var(--paper-bg);
  --md-default-fg-color: var(--paper-ink);
  --md-default-fg-color--light: var(--paper-ink-2);
  --md-default-fg-color--lighter: var(--paper-line-strong);
  --md-default-fg-color--lightest: var(--paper-line);

  --md-typeset-color: var(--paper-ink);
  --md-typeset-a-color: var(--paper-red);
  --md-typeset-mark-color: var(--paper-wash);
  --md-typeset-table-color: var(--paper-line);
  --md-typeset-table-color--light: var(--paper-frame);

  --md-code-bg-color: var(--paper-frame);
  --md-code-fg-color: var(--paper-ink);

  --md-admonition-fg-color: var(--paper-ink);
  --md-admonition-bg-color: var(--paper-frame);

  --md-footer-bg-color: var(--paper-bg-deep);
  --md-footer-bg-color--dark: var(--paper-bg-deep);
  --md-footer-fg-color: var(--paper-ink);
  --md-footer-fg-color--light: var(--paper-ink-2);
  --md-footer-fg-color--lighter: var(--paper-ink-2);

  /* extra.css's own tokens, so its framing follows the paper. */
  --poof-card-bg: transparent;
  --poof-card-line: transparent;
  --poof-pill-bg: var(--paper-wash);
  --poof-pill-fg: var(--paper-red);
  --poof-zebra: rgb(127 110 90 / 5%);
}

body {
  background: var(--paper-bg) var(--paper-grain);
  font-family: var(--paper-sans);
}

.md-main,
.md-container {
  background: transparent;
}

/* ---------- Header: paper and a hairline ---------- */

.md-header {
  background: var(--paper-bg) var(--paper-grain);
  color: var(--paper-ink);
  box-shadow: 0 1px 0 var(--paper-line);
}

.md-header[data-md-state="shadow"],
.md-header--shadow {
  box-shadow: 0 1px 0 var(--paper-line), 0 6px 14px -10px rgb(0 0 0 / 25%);
}

.md-header__title {
  font-family: var(--paper-display);
  font-size: 0.95rem;
  font-weight: var(--paper-display-weight);
  letter-spacing: -0.01em;
}

.md-header__button,
.md-header__option,
.md-header .md-icon {
  color: var(--paper-ink);
}

/* Search: a hairline field on the paper. */
.md-search__form {
  border-radius: 999px;
  background-color: var(--paper-frame);
  box-shadow: inset 0 0 0 1px var(--paper-line-strong);
}

.md-search__form:hover {
  background-color: var(--paper-frame);
  box-shadow: inset 0 0 0 1px var(--paper-ink-2);
}

.md-search__input,
.md-search__input::placeholder,
.md-search__icon {
  color: var(--paper-ink);
}

.md-search__input::placeholder {
  color: var(--paper-ink-2);
}

@media screen and (min-width: 60em) {
  .md-search__form {
    background-color: var(--paper-frame);
    box-shadow: inset 0 0 0 1px var(--paper-line-strong);
  }

  [data-md-toggle="search"]:checked ~ .md-header .md-search__form,
  [data-md-color-scheme="slate"] [data-md-toggle="search"]:checked ~ .md-header .md-search__form {
    border-radius: 0.6rem 0.6rem 0 0;
    background-color: var(--paper-frame);
  }

  .md-search__output {
    background: var(--paper-frame);
  }
}

.md-search-result {
  color: var(--paper-ink);
}

.md-search-result__meta {
  background-color: var(--paper-bg-deep);
  color: var(--paper-ink-2);
}

.md-search-result mark {
  color: var(--paper-red);
}

/* ---------- Left navigation: quiet ink, vermilion for the page you are on ---------- */

.md-nav {
  font-size: 0.74rem;
}

/* The sidebars' sticky titles cover what scrolls under them, so they carry the paper. */
.md-nav__title,
.md-sidebar .md-nav__title {
  color: var(--paper-ink-2);
  background: var(--paper-bg) var(--paper-grain) fixed;
  box-shadow: none;
}

.md-nav__item--section > .md-nav__link,
[data-md-color-scheme="slate"] .md-nav__item--section > .md-nav__link {
  color: var(--paper-ink-2);
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.md-nav__link,
.md-nav__item .md-nav__link {
  color: var(--paper-ink);
}

.md-nav__link:hover,
.md-nav__link:focus {
  color: var(--paper-red);
}

.md-nav__item .md-nav__link--active,
.md-nav__item .md-nav__link--active code {
  color: var(--paper-red);
  font-weight: 600;
}

@media screen and (min-width: 76.25em) {
  .md-sidebar--primary .md-nav__item:not(.md-nav__item--section) > .md-nav__link {
    border-radius: 0;
    margin-left: 0;
    padding: 0.25em 0 0.25em 0.6em;
    border-left: 1px solid var(--paper-line);
  }

  .md-sidebar--primary .md-nav__item:not(.md-nav__item--section) > .md-nav__link:hover {
    background: none;
  }

  .md-sidebar--primary .md-nav__link--active,
  .md-sidebar--primary .md-nav__item:not(.md-nav__item--section) > .md-nav__link--active {
    background: none;
    border-left: 2px solid var(--paper-red);
    padding-left: calc(0.6em - 1px);
  }
}

@media screen and (max-width: 76.234375em) {
  .md-nav--primary .md-nav__title,
  .md-nav--primary .md-nav__title[for="__drawer"] {
    background: var(--paper-bg-deep);
    color: var(--paper-ink);
  }

  .md-sidebar--primary {
    background: var(--paper-bg) var(--paper-grain);
  }

  .md-sidebar--primary .md-nav__link--active {
    background: var(--paper-wash);
  }
}

/* The table of contents on the right. */
.md-nav--secondary .md-nav__title {
  color: var(--paper-ink-2);
  font-weight: 600;
}

.md-nav--secondary .md-nav__link {
  color: var(--paper-ink-2);
}

.md-nav--secondary .md-nav__link--active,
.md-nav--secondary .md-nav__link:hover {
  color: var(--paper-red);
}

/* ---------- The page: on the paper itself, no card ---------- */

.md-content__inner {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

@media screen and (max-width: 44.984375em) {
  .md-content__inner {
    margin: 0 0.8rem 1rem;
    padding: 0.4rem 0 1rem;
  }
}

/* ---------- Type ---------- */

.md-typeset {
  color: var(--paper-ink);
  font-family: var(--paper-sans);
  font-size: 0.85rem; /* 17 px */
  line-height: 1.6;
}

.md-typeset h1,
.md-typeset h2 {
  color: var(--paper-ink);
  font-family: var(--paper-display);
  font-weight: var(--paper-display-weight);
  font-variation-settings: "opsz" 144;
  letter-spacing: -0.02em;
}

.md-typeset h1 {
  margin-bottom: 1rem;
  font-size: 2.1rem;
  line-height: 1.05;
}

.md-typeset h2 {
  margin-top: 2.2em;
  padding-top: 1.1em;
  border-top: 1px solid var(--paper-line);
  font-size: 1.45rem;
  line-height: 1.15;
}

.md-typeset h3,
.md-typeset h4 {
  color: var(--paper-ink);
  font-family: var(--paper-sans);
  font-weight: 600;
  letter-spacing: 0;
}

.md-typeset a {
  color: var(--paper-red);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--paper-red) 45%, transparent);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

.md-typeset a:hover,
.md-typeset a:focus-visible {
  color: var(--paper-red-hover);
  text-decoration-color: currentcolor;
}

.md-typeset a.headerlink {
  color: var(--paper-line-strong);
  text-decoration: none;
}

.md-typeset hr {
  border-bottom-color: var(--paper-line);
}

.md-typeset code {
  border-radius: 3px;
  background-color: var(--paper-frame);
  box-shadow: inset 0 0 0 1px var(--paper-line);
}

.md-typeset pre > code {
  box-shadow: inset 0 0 0 1px var(--paper-line);
}

.md-typeset kbd {
  background: var(--paper-frame);
  color: var(--paper-ink);
  box-shadow: inset 0 -0.1rem 0 var(--paper-line-strong), 0 0 0 1px var(--paper-line-strong);
}

/* Tables on the paper, hairlines only. */
.md-typeset table:not([class]) {
  border: 1px solid var(--paper-line);
  border-radius: 4px;
  background: var(--paper-frame);
  box-shadow: none;
  font-size: 0.8rem; /* 16 px; Material's tables are 12.8 px */
}

.md-typeset table:not([class]) th {
  background: var(--paper-bg-deep);
  color: var(--paper-ink);
}

/* ---------- Admonitions: toned to the paper, a coloured rule on the left ---------- */

[data-md-color-scheme] .md-typeset .admonition,
[data-md-color-scheme] .md-typeset details {
  border: 1px solid var(--paper-line);
  border-left: 3px solid var(--paper-ink-2);
  border-radius: 4px;
  background: var(--paper-frame);
  box-shadow: none;
  color: var(--paper-ink);
  font-size: 0.85rem;
}

[data-md-color-scheme] .md-typeset .admonition-title,
[data-md-color-scheme] .md-typeset summary {
  background: transparent;
  color: var(--paper-ink);
  font-weight: 600;
}

[data-md-color-scheme]
  .md-typeset
  :is(.admonition, details)
  > :is(.admonition-title, summary)::before {
  background-color: var(--paper-ink-2);
}

[data-md-color-scheme] .md-typeset :is(.admonition, details):is(.tip, .hint, .important, .success) {
  border-left-color: #8a6a1f;
}

[data-md-color-scheme]
  .md-typeset
  :is(.tip, .hint, .important, .success)
  > :is(.admonition-title, summary)::before {
  background-color: #8a6a1f;
}

[data-md-color-scheme]
  .md-typeset
  :is(.admonition, details):is(
    .warning,
    .caution,
    .attention,
    .question,
    .danger,
    .error,
    .failure,
    .bug
  ) {
  border-left-color: var(--paper-red);
}

[data-md-color-scheme]
  .md-typeset
  :is(.warning, .caution, .attention, .question, .danger, .error, .failure, .bug)
  > :is(.admonition-title, summary)::before {
  background-color: var(--paper-red);
}

/* Screenshots: a plain hairline frame on the paper. */
.md-typeset a.glightbox img,
.md-typeset p > img:not(.twemoji, .off-glb),
.md-typeset figure img {
  border: 1px solid var(--paper-line);
  border-radius: 6px;
  box-shadow: none;
}

/* Cards (used by some pages): hairlines, no fill. */
.md-typeset .grid.cards > ul > li {
  border: 1px solid var(--paper-line);
  border-radius: 6px;
  background: var(--paper-frame);
  box-shadow: none;
}

/* ---------- Buttons: one primary (vermilion), the rest hairline ---------- */

.md-typeset .md-button {
  border: 1px solid var(--paper-ink);
  border-radius: 3px;
  color: var(--paper-ink);
  font-weight: 600;
}

.md-typeset .md-button--primary {
  border-color: var(--paper-red);
  background: var(--paper-red);
  color: #fff;
}

.md-typeset .md-button:hover,
.md-typeset .md-button:focus-visible {
  border-color: var(--paper-red-hover);
  background: var(--paper-red-hover);
  color: #fff;
}

.md-top {
  background: var(--paper-frame);
  color: var(--paper-ink);
  box-shadow: 0 0 0 1px var(--paper-line);
}

/* ---------- Footer: the deeper paper, ink type ---------- */

.md-footer,
.md-footer-meta {
  background: var(--paper-bg-deep);
  color: var(--paper-ink-2);
}

.md-footer {
  border-top: 1px solid var(--paper-line);
}

.md-footer__link,
.md-footer__title,
.md-footer__direction,
.md-footer-meta a,
.md-footer-meta .md-copyright {
  color: var(--paper-ink-2);
}

.md-footer__link:hover,
.md-footer__link:focus-visible,
.md-footer-meta a:hover {
  color: var(--paper-red);
}

.md-footer__title {
  font-family: var(--paper-display);
}

/* ---------- Getting started: the title page ---------- */

.md-typeset .paper-hero {
  margin: 0 0 2.5rem;
  padding: 0;
  border: 0;
  background: none;
  text-align: center;
}

.md-typeset .paper-hero__eyebrow {
  margin: 0 0 1.25rem;
  color: var(--paper-ink-2);
  font-family: var(--paper-sans);
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border: 0;
  padding: 0;
}

.md-typeset .paper-hero__logo {
  display: block;
  width: min(100%, 30rem);
  height: auto;
  margin: 0 auto;
  border: 0;
  box-shadow: none;
}

.md-typeset .paper-hero__logo--dark {
  display: none;
}

[data-md-color-scheme="slate"] .md-typeset .paper-hero__logo--light {
  display: none;
}

[data-md-color-scheme="slate"] .md-typeset .paper-hero__logo--dark {
  display: block;
}

.md-typeset .paper-hero__tagline {
  margin: 1.2rem 0 0;
  color: var(--paper-ink);
  font-family: var(--paper-display);
  font-size: clamp(1.6rem, 1rem + 2.4vw, 2.6rem);
  font-weight: var(--paper-display-weight);
  font-variation-settings: "opsz" 144;
  line-height: 1;
  letter-spacing: -0.025em;
}

.md-typeset .paper-hero__tagline span {
  display: block;
}

.md-typeset .paper-hero__tagline em {
  font-style: italic;
}

.md-typeset .paper-hero__opener {
  max-width: 30rem;
  margin: 1.5rem auto 0;
  padding-top: 1rem;
  border-top: 1px solid var(--paper-line);
  color: var(--paper-ink-2);
  font-size: 0.95rem;
  line-height: 1.55;
}

.md-typeset .paper-hero__opener > span {
  display: block;
}

.md-typeset .paper-hero__opener b {
  color: var(--paper-ink);
  font-weight: 400;
}

.md-typeset .paper-mark {
  color: var(--paper-red);
  font-family: var(--paper-display);
  font-style: italic;
  font-weight: 500;
}

.md-typeset .paper-hero__what {
  max-width: 30rem;
  margin: 1.2rem auto 0;
  color: var(--paper-ink);
}

.md-typeset .paper-hero__demo {
  margin: 1.4rem 0 0;
}

.md-typeset .paper-cta {
  margin: 1rem 0;
}

/* .paper-cta: the website build's "Request the Mac installer" button (build_manual_site.sh). */
.md-typeset .paper-hero__demo a.md-button,
.md-typeset .paper-cta a.md-button {
  border-color: var(--paper-ink);
  background: var(--paper-ink);
  color: var(--paper-bg);
  padding: 0.55em 1.6em;
  font-size: 0.9rem;
  text-decoration: none;
}

.md-typeset .paper-hero__demo a.md-button:hover,
.md-typeset .paper-hero__demo a.md-button:focus-visible,
.md-typeset .paper-cta a.md-button:hover,
.md-typeset .paper-cta a.md-button:focus-visible {
  border-color: var(--paper-ink-2);
  background: var(--paper-ink-2);
  color: var(--paper-bg);
}

/* The six steps: numbered with vermilion italic numerals. */
.md-typeset ol.paper-steps {
  counter-reset: step;
  margin-left: 0;
  padding: 0;
  list-style: none;
}

.md-typeset ol.paper-steps > li {
  position: relative;
  margin: 0;
  padding: 0.7rem 0 0.7rem 2.2rem;
  border-top: 1px solid var(--paper-line);
  counter-increment: step;
}

.md-typeset ol.paper-steps > li::before {
  content: counter(step);
  position: absolute;
  top: 0.55rem;
  left: 0.2rem;
  color: var(--paper-red);
  font-family: var(--paper-display);
  font-size: 1.25rem;
  font-style: italic;
}

/* You stay in charge: statements in the display face, each with one line of proof. */
.md-typeset ol.paper-claims {
  counter-reset: claim;
  margin-left: 0;
  padding: 0;
  list-style: none;
}

.md-typeset ol.paper-claims > li {
  position: relative;
  margin: 0 0 1.2rem;
  padding-left: 2.2rem;
  counter-increment: claim;
}

.md-typeset ol.paper-claims > li::before {
  content: counter(claim);
  position: absolute;
  top: 0.1rem;
  left: 0.2rem;
  color: var(--paper-red);
  font-family: var(--paper-display);
  font-size: 1.25rem;
  font-style: italic;
}

.md-typeset .paper-claim {
  margin: 0;
  color: var(--paper-ink);
  font-family: var(--paper-display);
  font-size: 1.15rem;
  font-weight: var(--paper-display-weight);
  line-height: 1.25;
}

.md-typeset .paper-proof {
  margin: 0.35rem 0 0;
  color: var(--paper-ink-2);
}

/* extra.css tints admonitions by kind in the light scheme; on the paper they stay plain. */
[data-md-color-scheme="poof"] .md-typeset :is(.admonition, details):is(
    .note,
    .info,
    .abstract,
    .tip,
    .hint,
    .important,
    .success,
    .warning,
    .caution,
    .attention,
    .question,
    .danger,
    .error,
    .failure,
    .bug
  ) {
  background-color: var(--paper-frame);
  color: var(--paper-ink);
}

[data-md-color-scheme="poof"]
  .md-typeset
  :is(.admonition, details)
  > :is(.admonition-title, summary) {
  background-color: transparent;
  color: var(--paper-ink);
}

/* On a phone each opener line breaks into a couplet, as on the website. */
@media screen and (max-width: 30em) {
  .md-typeset .paper-hero__opener b {
    display: block;
  }
}
