/* The site uses the Caffold app's default typefaces and neutral palette. Green
   appears only where the app uses it: the one primary action on a screen and
   links in prose. */

@font-face {
  font-family: "Caffold Geist Sans";
  src: url("../assets/fonts/GeistSans-Variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

@font-face {
  font-family: "Caffold Geist Mono";
  src: url("../assets/fonts/GeistMono-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Caffold Geist Mono";
  src: url("../assets/fonts/GeistMono-Bold.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

:root {
  --md-text-font: "Caffold Geist Sans";
  --md-code-font: "Caffold Geist Mono";
}

[data-md-color-scheme="default"] {
  --caffold-bg: #ffffff;
  --caffold-surface: #f5f5f5;
  --caffold-text: #1f1f1f;
  --caffold-muted: #666666;
  --caffold-border: #e5e5e5;
  --caffold-border-strong: #d4d4d4;
  --caffold-link: #0d5f47;
  --caffold-action-fg: #167c5c;
  --caffold-action-bg: #ddefe8;
  --caffold-action-border: #9fc9bb;

  --md-default-bg-color: var(--caffold-bg);
  --md-default-fg-color: var(--caffold-text);
  --md-default-fg-color--light: var(--caffold-muted);
  --md-code-bg-color: var(--caffold-surface);
  --md-code-fg-color: var(--caffold-text);
}

[data-md-color-scheme="slate"] {
  --caffold-bg: #141414;
  --caffold-surface: #1b1b1b;
  --caffold-text: #ededed;
  --caffold-muted: #adadad;
  --caffold-border: #303030;
  --caffold-border-strong: #3c3c3c;
  --caffold-link: #75d0ae;
  --caffold-action-fg: #78d6b4;
  --caffold-action-bg: #173c30;
  --caffold-action-border: #2f715d;

  --md-default-bg-color: var(--caffold-bg);
  --md-default-fg-color: var(--caffold-text);
  --md-default-fg-color--light: var(--caffold-muted);
  --md-code-bg-color: var(--caffold-surface);
  --md-code-fg-color: var(--caffold-text);
}

[data-md-color-primary="custom"] {
  --md-primary-fg-color: var(--caffold-text);
  --md-primary-fg-color--light: var(--caffold-muted);
  --md-primary-fg-color--dark: var(--caffold-text);
  --md-primary-bg-color: var(--caffold-bg);
  --md-primary-bg-color--light: var(--caffold-muted);
}

[data-md-color-accent="custom"] {
  --md-accent-fg-color: var(--caffold-text);
  --md-accent-fg-color--transparent: color-mix(in srgb, var(--caffold-text) 8%, transparent);
  --md-accent-bg-color: var(--caffold-bg);
}

[data-md-color-scheme] {
  --md-typeset-a-color: var(--caffold-link);
}

/* Current location stays neutral; green is only for links in prose. */
.md-nav--secondary .md-nav__link--active,
.md-nav--secondary .md-nav__link--active code {
  color: var(--caffold-text);
}

/* A page title's permalink is the page's own address. */
.md-typeset h1 .headerlink {
  display: none;
}

/* The development banner shows only away from caffold.dev. */
html:not(.cf-development) [data-md-component="announce"] {
  display: none;
}

/* The meerkat sits low in its square canvas; lift it to the title's center. */
.md-header__button.md-logo img {
  transform: translateY(-12%);
}

/* Home */

.cf-home {
  --cf-measure: 44rem;

  & .md-content__inner {
    margin: 0 auto;
    padding: 0 0.8rem 4rem;
  }

  & .md-typeset {
    font-size: 0.9rem;
    line-height: 1.6;
  }

  & .md-typeset h2 {
    margin: 0 0 1rem;
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 650;
    letter-spacing: -0.03em;
    line-height: 1.1;
  }

  & .md-typeset h3 {
    margin: 0 0 0.4rem;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: -0.01em;
  }

  & .md-typeset pre > code {
    font-size: 0.8rem;
  }
}

.cf-hero {
  max-width: 50rem;
  padding: 3.5rem 0 2.5rem;

  & h1 {
    margin: 0 0 1.2rem;
    color: var(--caffold-text);
    font-size: clamp(2.2rem, 6vw, 3.8rem);
    font-weight: 700;
    letter-spacing: -0.045em;
    line-height: 1.02;
  }

  /* Each sentence starts its own line and wraps evenly within it. */
  & h1 > span {
    display: block;
    text-wrap: balance;
  }

  & .highlight {
    max-width: 30rem;
  }
}

/* The same Task on two screens, side by side at one height: the columns
   share the width in the ratio of the screenshots' aspect ratios
   (933 x 704 against 390 x 844), and the edge is a shadow so it adds no size. */
.cf-devices {
  display: grid;
  grid-template-columns: minmax(0, 2.868fr) minmax(0, 1fr);
  gap: 1.5rem;
  align-items: start;
}

.cf-devices .cf-device {
  width: auto;
  max-width: none;
  margin: 0;

  & > p {
    margin: 0;
  }

  .md-typeset & img[src] {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
    border-radius: 0.6rem;
    box-shadow:
      0 0 0 1px var(--caffold-border-strong),
      0 1px 2px rgb(0 0 0 / 4%),
      0 12px 32px rgb(0 0 0 / 7%);
  }

  & figcaption {
    margin: 0.7rem 0 0;
    color: var(--caffold-muted);
    font-family: var(--md-code-font-family);
    font-size: 0.7rem;
    font-style: normal;
    letter-spacing: 0.02em;
    text-align: left;
  }
}

.cf-eyebrow {
  margin: 0 0 1rem;
  color: var(--caffold-muted);
  font-family: var(--md-code-font-family);
  font-size: 0.7rem;
  letter-spacing: 0.02em;
}

.cf-lede {
  max-width: var(--cf-measure);
  margin: 0 0 1.6rem;
  color: var(--caffold-muted);
  font-size: 1.05rem;
  line-height: 1.55;
}

.cf-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0 0 1.4rem;

  & p {
    display: contents;
  }
}

.md-typeset .cf-button {
  display: inline-block;
  padding: 0.5rem 1rem;
  border: 1px solid var(--caffold-border-strong);
  border-radius: 0.4rem;
  color: var(--caffold-text);
  font-weight: 600;
  text-decoration: none;

  &:hover,
  &:focus-visible {
    border-color: var(--caffold-muted);
    color: var(--caffold-text);
  }
}

.md-typeset .cf-button--primary {
  border-color: var(--caffold-action-border);
  background: var(--caffold-action-bg);
  color: var(--caffold-action-fg);

  &:hover,
  &:focus-visible {
    border-color: var(--caffold-action-fg);
    color: var(--caffold-action-fg);
  }
}

.md-typeset .cf-more {
  color: var(--caffold-text);
  font-weight: 600;
  text-decoration: none;

  &::after {
    content: " →";
  }

  &:hover,
  &:focus-visible {
    text-decoration: underline;
  }
}

.cf-shot {
  margin: 0;

  .cf-steps + & {
    margin-top: 2rem;
  }

  & img {
    display: block;
    width: 100%;
    border: 1px solid var(--caffold-border-strong);
    border-radius: 0.6rem;
    box-shadow: 0 1px 2px rgb(0 0 0 / 4%), 0 12px 32px rgb(0 0 0 / 7%);
  }
}

.cf-shot--phone {
  max-width: 17rem;
  justify-self: center;
}

.cf-section {
  padding: 4rem 0 0;

  & > p,
  & > ul {
    max-width: var(--cf-measure);
  }
}

.cf-steps,
.cf-agents {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: 1rem;
  margin: 1.5rem 0;
}

.cf-step,
.cf-agent {
  padding: 1.1rem 1.2rem;
  border: 1px solid var(--caffold-border);
  border-radius: 0.6rem;

  & p {
    margin: 0;
    color: var(--caffold-muted);
  }
}

.cf-step-number {
  display: block;
  margin-bottom: 0.8rem;
  color: var(--caffold-muted);
  font-family: var(--md-code-font-family);
  font-size: 0.7rem;
}

.cf-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
  gap: 2.5rem;
  align-items: center;
}

.cf-split--phone {
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
}

.cf-closing {
  margin-top: 4rem;
  padding: 2.5rem;
  border: 1px solid var(--caffold-border);
  border-radius: 0.8rem;
  background: var(--caffold-surface);

  & h2 {
    margin-top: 0;
  }

  & .highlight {
    max-width: 30rem;
  }
}

@media (max-width: 44.9375em) {
  .cf-hero {
    padding-top: 2rem;
  }

  .cf-split,
  .cf-split--phone {
    grid-template-columns: minmax(0, 1fr);
  }

  .cf-split--phone .cf-shot--phone {
    order: 1;
  }

  .cf-devices {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
  }

  .cf-devices .cf-device:last-child {
    width: 60%;
    justify-self: center;
  }

  .cf-closing {
    padding: 1.5rem;
  }
}

.md-typeset img[src*="assets/screenshots/"] {
  border: 1px solid var(--caffold-border-strong);
  border-radius: 0.4rem;
}
