:root {
  --paper: #FFFFFF;
  --navy: #1C3557;
  --green: #2E8B57;
  --mist: #EEF4F9;
  --gray: #5A6472;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--paper);
  color: var(--navy);
  font-family: "Inter", "Helvetica Neue", "Hiragino Sans", Arial, sans-serif;
  font-size: 16px;
  line-height: 1.8;
  overflow-x: hidden;
}
main { max-width: 560px; margin: 0 auto; background: var(--paper); }
@media (min-width: 900px) {
  body { background: var(--mist); }
  main { box-shadow: 0 0 40px rgba(28, 53, 87, .08); }
}
h1, h2, h3 { text-wrap: balance; }
.part { position: relative; line-height: 0; }
.part img { display: block; width: 100%; height: auto; }
.hit { position: absolute; display: block; font-size: 0; color: transparent; border-radius: 6px; }
.hit:focus-visible { outline: 3px solid var(--green); outline-offset: 2px; }
.label { margin: 0; color: var(--green); font-size: 13px; letter-spacing: .2em; }
.glossary { background: var(--navy); color: #fff; padding: 18px 24px; }
.glossary p { margin: 0; font-size: 15px; line-height: 1.7; }
.glossary strong { color: #9FD8B8; font-weight: 600; }
.info { background: var(--mist); padding: 48px 24px 40px; }
.info h2, .contact h2 { margin: 6px 0 20px; font-weight: 300; font-size: 26px; line-height: 1.3; }
.info dl { margin: 0; }
.info dl div { background: var(--paper); border-top: 3px solid var(--green); padding: 16px 18px; margin-bottom: 12px; }
.info dt { font-size: 17px; margin-bottom: 4px; }
.info dd { margin: 0; color: var(--gray); }
.tbc { color: #B4472E; }
.contact { padding: 56px 24px; text-align: center; background: var(--paper); }
.contact p { margin: 0 0 8px; color: var(--gray); }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  margin-top: 20px; min-height: 52px; padding: 0 28px; width: 100%;
  background: var(--green); color: #fff; text-decoration: none; font-size: 17px; border-radius: 8px;
}
.btn[aria-disabled="true"] { opacity: .55; pointer-events: none; }
.foot { padding: 28px 24px 112px; text-align: center; font-size: 14px; color: var(--gray); background: var(--mist); }
.foot p { margin: 0 0 6px; }
.float {
  position: fixed; left: 50%; bottom: 16px;
  transform: translate(-50%, 140%);
  width: min(528px, calc(100% - 32px)); min-height: 52px;
  display: flex; align-items: center; justify-content: center; gap: 12px;
  background: var(--green); color: #fff; text-decoration: none; font-size: 17px; letter-spacing: .02em;
  border-radius: 10px; box-shadow: 0 6px 20px rgba(28, 53, 87, .25);
  transition: transform .35s ease; z-index: 10;
}
.float.show { transform: translate(-50%, 0); }
.float:focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; }
.part img.reveal { opacity: 0; transition: opacity .8s ease; }
.part img.reveal.in { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .float { transition: none; }
  .part img.reveal { opacity: 1; transition: none; }
}
