:root {
  --r-background-color: var(--react-color-1);
  --r-code-font: "Source Code Pro", serif;
  --r-heading-color: var(--r-main-color);
  --r-heading-font: var(--r-main-font);
  --r-heading-font-weight: 700;
  --r-heading-letter-spacing: -0.04em;
  --r-heading-text-transform: none;
  --r-main-color: #f6f7f9;
  --r-main-font-size: 28px;
  --r-main-font: Barlow, sans-serif;
  --r-link-color: var(--sp-colors-accent);
  --r-link-color-hover: var(--r-link-color);
  --r-link-color-dark: var(--r-link-color);

  --border-radius: 10px;
  --code-letter-spacing: -0.03em;

  /* @link https://react.dev/ */
  --react-color-1: #23272f;
  --react-code-background-color: #16181d;
  --sp-colors-accent: #58c4dc;
  --sp-colors-clickable: #999;
  --sp-colors-surface2: #343a46;
  --sp-syntax-color-comment: #757575;
  --sp-syntax-color-keyword: #77b7d7;
  --sp-syntax-color-tag: #dfab5c;
  --sp-syntax-color-definition: #86d9ca;
  --sp-syntax-color-property: #77b7d7;
  --sp-syntax-color-string: #977cdc;
}

/* Slides */
.reveal {
  font-weight: 500;
}
.reveal .slides {
  letter-spacing: var(--r-heading-letter-spacing);
}
.reveal .slide-number {
  right: auto;
  left: 8px;
  bottom: 10px;
  border-radius: var(--border-radius);
}
.reveal p {
  line-height: 1.2;
}
#first-slide > h1 {
  --r-heading-font-weight: 900;
}
#first-slide > h1 > span {
  background: linear-gradient(to bottom, var(--sp-colors-accent), var(--sp-syntax-color-property), var(--sp-syntax-color-string));
  background-clip: text;
  color: transparent;
  background-size: auto 150%;
  animation: moveBackground 5s infinite linear alternate;
}
@keyframes moveBackground {
  0% {
    background-position: 50% 0;
  }
  100% {
    background-position: 50% 100%;
  }
}
#first-slide > h2 {
  --r-heading2-size: 1em;
  --r-heading-color: var(--sp-colors-clickable);
}
img {
  border-radius: var(--border-radius);
}

/* Estruturas */
.d-flex {
  display: flex;
  justify-content: space-between;
  column-gap: 1em;
}
.d-flex.cols-2 > div {
  flex: calc(50% - 0.5em) 1 0;
}
.h-100 {
  height: 100%;
}

/* Problemas e Soluções */
.problem {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 1em;
}
.problem > div:nth-child(2) {
  order: 2;
}
.problem > div:nth-child(4) {
  order: 4;
}
.header-problem,
.header-solution {
  margin: 0;
  font-weight: 600;
  font-size: 1.05em;
  color: var(--sp-colors-accent);
}
.header-problem + p,
.header-solution + p {
  margin-top: 0;
}

/* Cabeçalhos */
h1 > span,
h2 > span {
  color: var(--sp-syntax-color-property);
}
h1:not(.title, .title-smaller, :last-child) {
  --r-heading1-size: 1.2em;
  --r-heading-font-weight: 500;
  --r-heading-margin: 0;
  opacity: 0.25;
}
h1.title-smaller {
  --r-heading1-size: 1.3em;
}
.slide-history > h2 > i {
  font-weight: 500;
  color: var(--sp-syntax-color-definition);
}

/* Tipografia */
.reveal em, .reveal i {
  font-style: oblique;
}
.reveal strong, .reveal b {
  font-weight: 600;
}
.reveal blockquote {
  width: 100%;
  margin: 0;
  padding: 0.5em;
  border-radius: var(--border-radius);
  opacity: 0.9;
}
.reveal blockquote + blockquote {
  margin-top: 1em;
}

/* Sobre mim */
#about-me {
  display: flex;
  grid-template-columns: auto 1fr;
  column-gap: 3rem;
}
#about-me > .text-center {
  margin-top: 0.25em;
}
#about-me > ul {
  list-style-type: circle;
}
#profile-pic > img {
  margin: 0;
  border-radius: var(--border-radius);
}
#profile-pic > figcaption {
  font-weight: 600;
  line-height: 1;
}
.about-me-links {
  margin-top: 3rem;
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  row-gap: 1.25rem;
  justify-content: start;
}
.about-me-links > a {
  display: flex;
  flex: 33.333% 0 0;
  align-items: center;
  text-align: left;
  font-size: 0.8em;
  column-gap: 0.4em;
}
.about-me-links > a > svg {
  width: 40px;
}
.about-me-links > a > svg .fill {
  fill: var(--r-link-color);
}
.about-me-links > a:is(:hover, :focus) > svg .fill {
  fill: var(--r-link-color-hover);
}
.about-me-links > div > svg .fill-bg,
.about-me-links > a > svg .fill-bg {
  fill: var(--r-background-color);
}
.about-me-links > a > span > span,
.about-me-links > a > span > b {
  display: block;
  line-height: 1;
}
.about-me-links > a > span > span {
  color: var(--r-main-color);
}

/* Slides e Workshops */
#qrcode-slide {
  margin: 0;
  background: #fff;
  border-radius: var(--border-radius);
}
#qrcode-workshops-text {
  line-height: 1.2;
  font-size: 1.3em;
}


/* Referências */
a.reference {
  font-size: 0.6em;
}
a.reference {
  margin-top: 1em;
  --link-opacity: 0.5;
  opacity: var(--link-opacity);
}
a.reference:before {
  opacity: var(--link-opacity);
  content: '<';
}
a.reference:after {
  opacity: var(--link-opacity);
  content: '>';
}

/* Códigos */
.reveal pre {
  margin: 0;
  width: 100%;
}
.reveal pre + pre {
  margin-top: 1em;
}
code:not(.hljs) {
  color: var(--sp-syntax-color-tag);
}
.hljs.language-shell {
  user-select: all;
}
.hljs.language-shell > span.hljs-meta.prompt_:first-child {
  user-select: none;
}
.hljs-ln-line.hljs-ln-numbers {
  color: var(--sp-colors-surface2);
}
pre.code-wrapper > .hljs {
  display: block;
  overflow-x: auto;
  background: var(--react-code-background-color);
  color: var(--r-main-color);
  padding: 1em;
  font-size: 0.9em;
  letter-spacing: var(--code-letter-spacing);
  border-radius: var(--border-radius);
  box-sizing: border-box;
  scrollbar-color: var(--react-color-1) var(--react-code-background-color);
  scrollbar-width: thin;
}

.hljs-tag,
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-strong,
.hljs-name {
  color: var(--sp-syntax-color-keyword);
}
.hljs-tag > .hljs-name {
  color: var(--sp-syntax-color-definition);
}
.hljs-code,
.hljs-class .hljs-title {
  color: var(--sp-syntax-color-string);
}
.hljs-attr,
.hljs-attribute {
  color: var(--sp-syntax-color-property);
}


.hljs-string {
  color: var(--sp-syntax-color-string);
}
.hljs-subst {
  color: var(--sp-colors-accent);
}
.hljs-title {
  color: var(--sp-syntax-color-definition);
}
.hljs-bullet,
.hljs-section,
.hljs-emphasis,
.hljs-type,
.hljs-built_in,
.hljs-builtin-name,
.hljs-selector-attr,
.hljs-selector-pseudo,
.hljs-addition,
.hljs-template-tag,
.hljs-template-variable,
.hljs-symbol,
.hljs-regexp,
.hljs-link {
  color: var(--sp-syntax-color-string);
}
.hljs-variable {
  color: var(--sp-syntax-color-tag);
}

.hljs-comment,
.hljs-quote,
.hljs-deletion,
.hljs-meta {
  color: var(--sp-syntax-color-comment);
}

.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-doctag,
.hljs-title,
.hljs-section,
.hljs-type,
.hljs-selector-id {
  font-weight: bold;
}
