/* === Gruvbox Color Palette ===
 * 出典: https://github.com/morhetz/gruvbox-contrib/blob/master/color.table
 * (gruvbox-color-table.md参照)
 */
:root {
  /* Dark */
  --gb-dark0-hard: #1d2021;
  --gb-dark0: #282828;
  --gb-dark0-soft: #32302f;
  --gb-dark1: #3c3836;
  --gb-dark2: #504945;
  --gb-dark3: #665c54;
  --gb-dark4: #7c6f64;
  --gb-gray-245: #928374;
  --gb-gray-244: #928374;

  /* Light */
  --gb-light0-hard: #f9f5d7;
  --gb-light0: #fbf1c7;
  --gb-light0-soft: #f2e5bc;
  --gb-light1: #ebdbb2;
  --gb-light2: #d5c4a1;
  --gb-light3: #bdae93;
  --gb-light4: #a89984;

  /* Bright */
  --gb-bright-red: #fb4934;
  --gb-bright-green: #b8bb26;
  --gb-bright-yellow: #fabd2f;
  --gb-bright-blue: #83a598;
  --gb-bright-purple: #d3869b;
  --gb-bright-aqua: #8ec07c;
  --gb-bright-orange: #fe8019;

  /* Neutral */
  --gb-neutral-red: #cc241d;
  --gb-neutral-green: #98971a;
  --gb-neutral-yellow: #d79921;
  --gb-neutral-blue: #458588;
  --gb-neutral-purple: #b16286;
  --gb-neutral-aqua: #689d6a;
  --gb-neutral-orange: #d65d0e;

  /* Faded */
  --gb-faded-red: #9d0006;
  --gb-faded-green: #79740e;
  --gb-faded-yellow: #b57614;
  --gb-faded-blue: #076678;
  --gb-faded-purple: #8f3f71;
  --gb-faded-aqua: #427b58;
  --gb-faded-orange: #af3a03;
}

/* === ライト/ダークテーマ対応 === */
/* ライトテーマ */
:root {
  /* Gruvbox Light風 */
  --background-color: var(--gb-light0);
  --text-color: var(--gb-dark0);

  --border-line-color: var(--gb-light2);

  --blockquote-vertical-line-color: var(--gb-light2);

  --link-color: var(--gb-faded-blue);
  --link-hover-color: var(--gb-neutral-blue);

  --code-inline-background-color: var(--gb-light1);
  --table-stripe-background-color: var(--gb-light0-soft);
}

/* ダークテーマ */
@media (prefers-color-scheme: dark) {
  :root {
    /* Gruvbox Dark風 */
    --background-color: var(--gb-dark0);
    --text-color: var(--gb-light0);

    --border-line-color: var(--gb-dark1);

    --blockquote-vertical-line-color: var(--gb-dark1);

    --link-color: var(--gb-bright-blue);
    --link-hover-color: #a1beb1; /* 明度+15% */

    --code-inline-background-color: var(--gb-dark1);
    --table-stripe-background-color: var(--gb-dark0-soft);
  }

  /* ShikiのフェンスコードブロックをOSのダークモードに連動させる */
  .astro-code,
  .astro-code span {
    color: var(--shiki-dark) !important;
    background-color: var(--shiki-dark-bg) !important;
    font-style: var(--shiki-dark-font-style) !important;
    font-weight: var(--shiki-dark-font-weight) !important;
    text-decoration: var(--shiki-dark-text-decoration) !important;
  }
}

/* === モバイル対応 === */
@media (max-width: 650px) {
  .indent {
    margin-left: 1rem;
  }
}

*,
*::before,
*::after {
  font-family: inherit;
}

html {
  display: flex;
  justify-content: center;

  font-size: 17px;
  line-height: 1.8rem;

  font-family:
    Noto Sans JP,
    ui-sans-serif,
    system-ui,
    /* Mac/iOS向けシステムフォント */ -apple-system,
    /* レガシーMac/iOS向けシステムフォント */ BlinkMacSystemFont,
    sans-serif;
}

body {
  background-color: var(--background-color);
  color: var(--text-color);

  transition:
    background-color 0.5s,
    color 0.5s;

  margin: 1rem 2rem;

  width: 100%;
  max-width: 650px;
  min-width: 0;
}

header {
  border-bottom: 1px solid var(--border-line-color);

  a,
  a:link,
  a:visited,
  a:hover,
  a:active {
    font-size: 2.5rem;
    font-weight: bold;
    text-decoration-line: none;
    color: var(--text-color);
  }
}

footer {
  border-top: 1px solid var(--border-line-color);
  margin: 2em 0;
}

.footer-icon {
  margin-right: 0.25em;
  vertical-align: -0.125em;
}

/* リンクの大きさは24px以上のルールを満たす https://dequeuniversity.com/rules/axe/4.11/target-size */
a {
  display: inline-block;
  min-height: 24px;

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

  &:hover,
  &:active {
    color: var(--link-hover-color);
  }
}

h1 a {
  &:link,
  &:visited,
  &:hover,
  &:active {
    color: inherit;
    text-decoration-line: none;
  }
}

hr {
  border: none;
  border-top: 1px solid var(--border-line-color);
  margin: 2em 0;
}

blockquote {
  border-left: 0.25em solid var(--blockquote-vertical-line-color);
  margin: auto 0;
  padding: 0 0 0 1em;
}

pre {
  padding: 1em;
  margin: 0.5em 0;
  overflow: auto;
  border-radius: 3px;
}

code {
  display: inline;
  background-color: var(--code-inline-background-color);
  padding: 0.15em 0.3em;
  margin: 0 0.2em;
  border-radius: 3px;
  font-size: 0.9em;
  font-family: PlemolJP, ui-monospace, monospace;
  white-space: nowrap;
}

pre code {
  padding: 0;
  margin: 0;
  background: none;
  border-radius: 0;
  font-size: inherit;
  white-space: pre;
}

math {
  font-family: math, ui-serif;
}

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

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

table {
  display: block;
  overflow-x: auto;
  width: 100%;
  border-collapse: collapse;
  margin: 1em 0;
  border: 1px solid var(--border-line-color);
}

th,
td {
  padding: 0.25em 0.8em;
  border: 1px solid var(--border-line-color);
  white-space: nowrap;
}

thead th {
  background-color: var(--code-inline-background-color);
}

tbody tr:nth-child(even) {
  background-color: var(--table-stripe-background-color);
}

.profile-image {
  max-width: 100px;
  max-height: 100px;
  border-radius: 50%;
}

.indent {
  margin-left: 2rem;
}
