* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
}

html {
  touch-action: manipulation;
  height: -webkit-fill-available; 
  overflow-x: hidden;
}
body {
  font-family: "SF Pro JP", "SF Pro Text", "SF Pro Icons", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", メイリオ, Meiryo, "ＭＳ Ｐゴシック", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style : normal;
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  -webkit-overflow-scrolling: touch;
  min-height: 100vh;
  min-height: -webkit-fill-available;
  width: 100%;
  overflow-x: hidden;
}

h1 { font-size: 150%; }
h2 { font-size: 130%; }
h3 { font-size: 110%; }


header.head {
  margin-bottom: 1em;
  border-bottom: 1px solid #999;
  padding: 1em;
  padding-left: calc(1em + env(safe-area-inset-left));
  padding-right: calc(1em + env(safe-area-inset-right));
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: .5em;
}
header.head a {
  cursor: pointer;
  display: block;
  height: 2em;
  width: 2em;
}
header.head a img {
  display: block;
  height: 100%;
  width: 100%;
}
header.head h1 {
  font-size: 150%;
}

header.hero {
  margin-bottom: 1em;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3em;
  padding: 6em 0;
  background: linear-gradient(rgba(255,255,255,.8), rgba(255,255,255,.6)), url('./images/back.jpg');
  background-size: cover;
  background-position: center;
}
header.hero h1 {
  font-size: 220%;
  font-weight: bold;
}
header.hero div {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .25em;
  font-size: 90%;
  font-weight: bold;
}


footer.foot {
  margin-top: 2em;
  padding: 1em;
  padding-left: calc(1em + env(safe-area-inset-left));
  padding-right: calc(1em + env(safe-area-inset-right));
  display: flex;
  flex-direction: column;
  gap: 1em;
  background-color: #eee;
}
footer.foot ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: .5em;
}
footer.foot small {
  font-size: 75%;
}


section.body {
  display: flex;
  flex-direction: column;
  gap: 1em;
  padding: 1em;
  max-width: 50em;
  margin: 0 auto;
}


ul.menu {
  padding: 1em;
  list-style: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1em;
}
ul.menu a {
  cursor: pointer;
  display: block;
  padding: 1em 2em;
  border: 2px solid #06f;
  border-radius: 2em;
  width: 18em;
  color: #06f;
  background-color: transparent;
  text-decoration: none;
  text-align: center;
}


ul.list {
  display: block;
  border: 1px solid #999;
}
ul.list li {
  list-style:none;
  display: flex;
  flex-direction: row;
  border-bottom: 1px solid #999;
}
ul.list li:last-child {
  border-bottom: none;
}
ul.list li > * {
  padding: .5em;
  border-right: 1px solid #999;
}
ul.list li > *:last-child {
  border-right: none;
}
ul.list li > label {
  overflow-wrap: break-word;
  word-wrap: break-word;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: .5em;
  font-size: 90%;
  font-weight: bold;
}
ul.list li > div {
  overflow-wrap: break-word;
  word-wrap: break-word;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: .5em;
  font-size: 80%;
}
ul.list li > nav {
  width: 4.5em;
  display: flex;
  flex-direction: row;
  gap: .5em;
}
ul.list li > nav a {
  cursor: pointer;
  display: block;
  width: 1.5em;
}
ul.list li > nav img {
  display: block;
  width: 100%;
}


ul.card {
  display: block;
  border: 1px solid #999;
}
ul.card li {
  list-style:none;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  border-bottom: 1px solid #999;
}
ul.card li:last-child {
  border-bottom: none;
}
ul.card li > * {
  padding: .5em;
}
ul.card li > label {
  order: -2;
  overflow-wrap: break-word;
  word-wrap: break-word;
  flex: 1 0 calc(100% - 4.5em);
  display: flex;
  flex-direction: column;
  gap: .5em;
  font-size: 90%;
  font-weight: bold;
}
ul.card li > div {
  overflow-wrap: break-word;
  word-wrap: break-word;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: .5em;
  font-size: 75%;
}
ul.card li > nav {
  order: -1;
  width: 4em;
  display: flex;
  flex-direction: row;
  gap: .5em;
  padding: .5em;
}
ul.card li > nav a {
  cursor: pointer;
  display: block;
  width: 1.5em;
}
ul.card li > nav img {
  display: block;
  width: 100%;
}


div.note {
  font-size: 80%;
  overflow-wrap: break-word;
  word-wrap: break-word;
}


div.find {
  display: flex;
  flex-direction: row;
  gap: .25em;
}
div.find input {
  flex: 1;
  padding: .5em;
  height: 3em;
  border: 1px solid #999;
  border-radius: .1em;
  font-size: 100%;
  background-color: transparent;
}
div.find button {
  cursor: pointer;
  padding: .5em;
  height: 3em;
  width: 3em;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid #06f;
  border-radius: .1em;
  background-color: #06f;
  color: #fff;
  font-size: 100%;
}


ul.opts {
  display: flex;
  flex-direction: row;
  gap: .5em;
  flex-wrap: wrap;
  font-size: 70%;
}
ul.opts li {
  cursor: pointer;
  list-style:none;
}
ul.opts li label {
  display: block;
}
ul.opts li input {
  display: none;
}
ul.opts li span {
}
ul.opts li input + span {
  cursor: pointer;
  display: block;
  border-radius: 2em;
  padding: .25em .75em .25em .5em;
  border: 1px solid #999;
  background-color: transparent;
}
ul.opts li input:checked + span {
  border: 1px solid #152;
  background-color: #cec;
}
ul.opts li input + span::before {
  display: inline-block;
  height: 1em;
  width: 1em;
  padding-right: .25em;
  content: '\2610';
  color: #999;
}
ul.opts li input:checked + span::before {
  content: '\2713';
  color: #152;
}


dl.desc {
  display: flex;
  flex-direction: column;
  gap: .5em;
}
dl.desc > dt {
  font-weight: bold;
}
dl.desc > dd {
}


nav.page {
  padding: 1em;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  gap: 1em;
}
nav.page button {
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid #06f;
  border-radius: 100%;
  height: 2.5em;
  width: 2.5em;
  background-color: transparent;
  color: #06f;
}
nav.page button:disabled {
  opacity: .2;
}


nav.form {
  padding: 1em;
  display: flex;
  flex-direction: row;
  justify-content: center;
  gap: 1em;
}
nav.form button,
nav.form a {
  cursor: pointer;
  display: block;
  padding: .5em 2em;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  border: 2px solid #06f;
  border-radius: 2px;
  text-decoration: none;
}
nav.form button[type=submit] { color: #fff; background-color: #06f; }
nav.form button[type=reset] { color: #06f; background-color: transparent; }
nav.form a { color: #06f; background-color: transparent; }


fieldset.item {
  display: flex;
  flex-direction: column;
  gap: .5em;
  border: none;
}
fieldset.item legend {
  display: contents;
  font-weight: bold;
}
fieldset.item input[type=text],
fieldset.item input[type=email],
fieldset.item textarea {
  cursor: pointer;
  appearance: none;
  padding: .5em;
  width: 100%;
  border: 1px solid #999;
  border-radius: .1em;
  background-color: transparent;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}
fieldset.item label {
  display: flex;
  flex-direction: row;
  align-items: center;
}
fieldset.item input[type=checkbox] {
  cursor: pointer;
  appearance: none;
  position: relative;
  width: 1.5em;
  height: 1.5em;
  border: 1px solid #999;
  border-radius: 2px;
}
fieldset.item input[type=checkbox]:checked::after {
  content: '';
  position: absolute;
  top: 0;
  left: .25em;
  width: 1.2em;
  height: .5em;
  border-bottom: 3px solid #152;
  border-left: 3px solid #152;
  transform: rotate(-50deg);
}
fieldset.item input[type=checkbox] + * {
  cursor: pointer;
  padding: .5em;
  font-size: 90%;
}


dialog.notices {
  display: flex;
  flex-direction: column;
  gap: .5em;
  position: relative;
  border-radius: .25em;
  width: 100%;
  padding: .5em;
}
dialog.notices label {
  font-size: 100%;
  font-weight: bold;
}
dialog.notices p {
  font-size: 80%;
}
dialog.notices input {
  cursor: pointer;
  position: absolute;
  top: 0;
  right: 0;
  appearance: none;
  font-size: 100%;
  height: 2.5em;
  width: 2.5em;
}
dialog.notices .icon {
  pointer-events: none;
  cursor: pointer;
  margin: .5em;
  position: absolute;
  top: 0;
  right: 0;
  appearance: none;
  font-size: 100%;
  height: 1.5em;
  width: 1.5em;
  border: 1px solid #999;
  border-radius: 100%;
}
dialog.notices .icon::before {
  content: '\2227';
  display: block;
  width: 100%;
  text-align: center;
  font-size: 90%;
  color: #999;
}
dialog.notices input:checked ~ *.icon::before {
  content: '\2228';
}
dialog.notices input:checked ~ *:not(.icon) {
  display: none;
}
dialog.notices.success { border: 2px solid #2a4; background-color: #dfe; }
dialog.notices.success label { color: #2a4; }
dialog.notices.failure { border: 2px solid #d34; background-color: #fee; }
dialog.notices.failure label { color: #d34; }
dialog.notices.warning { border: 2px solid #990; background-color: #ffd; }
dialog.notices.warning label { color: #990; }
