/* Styles of the website. One file, no web fonts, no images. */

:root {
  --bg: #ffffff;
  --surface: #f9f9f9;
  --divider: #e5e5e5;
  --text: #444444;
  --heading: #000000;
  --muted: #666666;
  --border: #707070;
  --cta: #222222;
  --navy: #27455c;
  --navy-deep: #1b3243;
  --footer: #000000;
  --footer-text: #d2d2d2;
  --measure: 70ch;
  --gutter: 16px;
  --sans: system-ui, -apple-system, "Segoe UI", "Hiragino Sans", "Yu Gothic UI", Meiryo, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}

:root:lang(ja) {
  --measure: 40em;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-block-start: 16px;
}

body {
  display: flex;
  flex-direction: column;
  min-block-size: 100vh;
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 400 16px/1.7 var(--sans);
  font-feature-settings: "palt" 1;
  letter-spacing: normal;
  line-break: strict;
  overflow-wrap: anywhere;
}

a {
  color: var(--navy);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

a:hover {
  text-decoration-thickness: 2px;
}

:focus-visible {
  outline: 2px solid var(--navy);
  outline-offset: 2px;
}

main {
  flex: 1 0 auto;
}

main:focus {
  outline: none;
}

.container {
  inline-size: 100%;
  max-inline-size: 1100px;
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.skip {
  position: absolute;
  inset-block-start: 8px;
  inset-inline-start: 8px;
  z-index: 10;
  padding: 10px 16px;
  border-radius: 2px;
  background: var(--cta);
  color: #ffffff;
  font-weight: 600;
  transform: translateY(-200%);
}

.skip:focus {
  transform: none;
  outline-color: #ffffff;
  outline-offset: -4px;
}

/* ---------------------------------------------------------------- Header */

.site-header {
  border-block-end: 1px solid var(--divider);
  background: var(--bg);
}

.site-header-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 24px;
  row-gap: 4px;
  padding-block: 10px;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-block-size: 44px;
  color: var(--heading);
  font-size: 18px;
  font-weight: 700;
  text-decoration: none;
}

.site-header ul,
.site-footer ul {
  display: flex;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-nav {
  flex: 1 1 auto;
}

.site-nav ul {
  column-gap: 4px;
}

.site-tools {
  margin-inline-start: auto;
}

.site-tools ul {
  column-gap: 4px;
}

.site-header nav a {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  padding-inline: 10px;
  border-block-end: 2px solid transparent;
  color: #292c2d;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.5;
  text-decoration: none;
}

.site-header nav a:hover {
  border-block-end-color: var(--border);
}

.site-header nav a[aria-current="page"] {
  border-block-end-color: var(--cta);
  color: var(--heading);
  font-weight: 700;
}

.site-tools a {
  color: var(--text);
}

/* ---------------------------------------------------------------- Bands */

.band {
  padding-block: 40px;
}

.band--alt,
.band--title {
  border-block: 1px solid var(--divider);
  background: var(--surface);
}

.band--title {
  border-block-start: 0;
  padding-block: 32px;
}

.band--hero {
  padding-block: 40px 48px;
}

.band--hero > .container {
  display: grid;
  gap: 32px;
  align-items: center;
}

.band--navy {
  background: var(--navy);
  color: #ffffff;
}

.band--navy :is(h2, h3, a, strong) {
  color: #ffffff;
}

.band--navy :focus-visible {
  outline-color: #ffffff;
}

/* ---------------------------------------------------------------- Text */

h1,
h2,
h3,
h4 {
  margin: 0;
  color: var(--heading);
  font-weight: 700;
  text-wrap: balance;
}

:lang(ja) :is(h1, h2, h3) {
  word-break: auto-phrase;
}

h1 {
  font-size: 26px;
  line-height: 1.4;
}

h2 {
  margin-block: 48px 16px;
  font-size: 20px;
  line-height: 1.4;
}

h3 {
  margin-block: 32px 12px;
  font-size: 18px;
  line-height: 1.4;
}

h4 {
  margin-block: 24px 8px;
  font-size: 16px;
  line-height: 1.5;
}

.band > .container > h2:first-child,
.prose > :first-child {
  margin-block-start: 0;
}

p,
ul,
ol,
pre,
blockquote,
.table-wrap {
  margin-block: 0 16px;
}

main :is(h1, h2, h3, h4, p, li, blockquote) {
  max-inline-size: var(--measure);
}

main :is(ul, ol) {
  padding-inline-start: 1.4em;
}

main li + li,
main li > :is(ul, ol) {
  margin-block-start: 6px;
}

li > p {
  margin-block-end: 6px;
}

strong {
  color: var(--heading);
  font-weight: 700;
}

.lead {
  margin-block: 12px 0;
  font-size: 16px;
}

blockquote {
  margin-inline: 0;
  padding: 12px 16px;
  border-inline-start: 3px solid var(--navy);
  background: var(--surface);
}

blockquote > :last-child {
  margin-block-end: 0;
}

hr {
  margin-block: 32px;
  border: 0;
  border-block-start: 1px solid var(--divider);
}

/* ---------------------------------------------------------------- Code */

code,
pre {
  font-family: var(--mono);
  font-feature-settings: normal;
  line-break: auto;
}

code {
  padding: 0.1em 0.35em;
  border: 1px solid var(--divider);
  border-radius: 2px;
  background: var(--surface);
  color: #222222;
  font-size: 0.875em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.band--alt code,
.band--title code {
  background: #ffffff;
}

.band--navy code {
  border-color: var(--navy-deep);
  background: var(--navy-deep);
  color: #ffffff;
}

/* Long lines wrap instead of scrolling, so that nothing is hidden on a narrow screen. */
pre {
  padding: 14px 16px;
  border: 1px solid var(--divider);
  border-inline-start: 3px solid var(--navy);
  border-radius: 2px;
  background: var(--surface);
  color: #222222;
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  tab-size: 2;
}

.band--alt pre {
  background: #ffffff;
}

pre code {
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font-size: inherit;
}

/* ---------------------------------------------------------------- Tables */

.table-wrap {
  overflow-x: auto;
  border: 1px solid var(--divider);
  border-radius: 2px;
}

table {
  inline-size: 100%;
  min-inline-size: 560px;
  border-collapse: collapse;
  font-size: 14px;
  line-height: 1.6;
}

th,
td {
  padding: 10px 12px;
  border-block-end: 1px solid var(--divider);
  text-align: start;
  vertical-align: top;
}

tbody tr:last-child > * {
  border-block-end: 0;
}

thead th {
  background: var(--surface);
  color: var(--heading);
  font-weight: 700;
  white-space: nowrap;
}

tbody th {
  color: var(--heading);
  font-weight: 600;
}

code.nowrap,
tbody th code {
  white-space: nowrap;
}

/* ---------------------------------------------------------------- Buttons */

.actions ul,
ul.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  max-inline-size: none;
  margin-block: 24px 0;
  padding: 0;
  list-style: none;
}

.actions li {
  margin: 0;
}

.actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: 48px;
  padding: 12px 30px;
  border: 1px solid var(--border);
  border-radius: 3px;
  background: transparent;
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
}

.actions li:first-child a,
p.actions a {
  border-color: var(--cta);
  border-radius: 2px;
  background: var(--cta);
  color: #ffffff;
}

.actions a:hover {
  text-decoration: underline;
}

/* ---------------------------------------------------------------- Top page */

.hero-text h1 {
  font-size: 28px;
}

.hero-text p {
  margin-block: 16px 0;
}

.cards {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
}

.card {
  padding: 20px;
  border: 1px solid var(--divider);
  border-block-start: 3px solid var(--cta);
  background: var(--bg);
}

.card h3 {
  margin-block-start: 0;
}

.card > :last-child,
.steps li > :last-child {
  margin-block-end: 0;
}

.steps ol {
  display: grid;
  gap: 16px;
  max-inline-size: none;
  margin-block-end: 24px;
  padding: 0;
  list-style: none;
  counter-reset: step;
}

.steps li {
  position: relative;
  max-inline-size: none;
  margin: 0;
  padding: 20px 20px 20px 68px;
  border: 1px solid var(--divider);
  background: var(--bg);
  counter-increment: step;
}

.steps li::before {
  content: counter(step);
  position: absolute;
  inset-block-start: 20px;
  inset-inline-start: 20px;
  display: grid;
  place-items: center;
  inline-size: 32px;
  block-size: 32px;
  border-radius: 50%;
  background: var(--navy);
  color: #ffffff;
  font-weight: 700;
  line-height: 1;
}

/* A picture of the panel. It is an illustration, not a control: see role="img" in the markup. */
.mock-figure {
  margin: 0;
  justify-self: center;
  inline-size: min(100%, 360px);
}

.mock-figure figcaption {
  margin-block-start: 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}

.mock {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--divider);
  border-radius: 2px;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  font-size: 13px;
  line-height: 1.5;
  user-select: none;
}

.mock-head {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.mock-title {
  color: var(--heading);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
}

.mock-close {
  color: var(--text);
  font-size: 22px;
  line-height: 1;
}

.mock-input {
  min-block-size: 68px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 3px;
  color: var(--text);
  font-size: 16px;
}

.mock-chips,
.mock-ais {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.mock-chips span {
  padding: 4px 14px;
  border: 1px solid var(--border);
  border-radius: 16px;
}

.mock-ais span {
  padding: 8px 14px;
  border: 1px solid var(--border);
  border-radius: 3px;
  font-size: 14px;
  font-weight: 500;
}

.mock-ais .on,
.mock-send {
  border-color: var(--mock-select, var(--navy));
  background: var(--mock-select, var(--navy));
  color: #ffffff;
  font-weight: 600;
}

.mock-note {
  color: var(--muted);
  font-size: 12px;
}

.mock-send {
  padding: 10px 24px;
  border-radius: 2px;
  font-size: 14px;
  text-align: center;
}

/* ---------------------------------------------------------------- Document pages */

.doc {
  display: grid;
  gap: 32px;
  padding-block: 32px 56px;
}

.doc > * {
  min-inline-size: 0;
}

.toc {
  padding: 16px 20px;
  border: 1px solid var(--divider);
  background: var(--surface);
  font-size: 14px;
  line-height: 1.5;
}

.toc-title {
  margin-block-end: 8px;
  color: var(--heading);
  font-weight: 700;
}

.toc ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.toc li {
  margin: 0;
}

.toc a {
  display: block;
  padding-block: 5px;
  color: var(--text);
  text-decoration: none;
}

.toc a:hover {
  color: var(--heading);
  text-decoration: underline;
}

.toc code {
  border: 0;
  padding: 0;
  background: none;
  color: inherit;
}

.not-found h1 {
  margin-block-end: 16px;
}

.not-found h2 {
  margin-block-start: 40px;
}

/* ---------------------------------------------------------------- Footer */

.site-footer {
  padding-block: 40px 96px;
  background: var(--footer);
  color: var(--footer-text);
  font-size: 13px;
  line-height: 1.7;
}

.site-footer ul {
  gap: 4px 24px;
  margin-block-end: 24px;
}

.site-footer a {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  color: #ffffff;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
}

.site-footer a:hover {
  text-decoration: underline;
}

.site-footer :focus-visible {
  outline-color: #ffffff;
}

.site-footer p {
  max-inline-size: var(--measure);
  margin-block: 0 8px;
}

.site-footer .copyright {
  margin-block-start: 24px;
  font-size: 12px;
}

/* ---------------------------------------------------------------- Wider screens */

@media (min-width: 520px) {
  .cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 768px) {
  :root {
    --gutter: 24px;
  }

  .band {
    padding-block: 56px;
  }

  .band--title {
    padding-block: 40px;
  }

  h1 {
    font-size: 30px;
  }

  .hero-text h1 {
    font-size: 32px;
  }

  h2 {
    font-size: 24px;
  }

  .lead,
  .hero-text p {
    font-size: 17px;
  }

  .cards,
  .steps ol {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .steps li {
    padding: 64px 20px 20px;
  }
}

@media (min-width: 1024px) {
  .site-header-inner {
    flex-wrap: nowrap;
  }

  .band--hero {
    padding-block: 64px;
  }

  .band--hero > .container {
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 56px;
  }

  .doc {
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 48px;
    align-items: start;
  }

  .toc {
    position: sticky;
    inset-block-start: 16px;
    max-block-size: calc(100vh - 32px);
    overflow-y: auto;
  }
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

@media print {
  .site-header nav,
  .skip,
  .toc {
    display: none;
  }
}

/* Added by the build: colour of the service selected by default (chatgpt). */
.mock {
  --mock-select: #0d7d61;
}
