
/* ==================================================
   1. A (more) Modern CSS Reset (Andy Bell)
   https://piccalil.li/blog/a-more-modern-css-reset/
   ================================================== */

/* Box sizing rules */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* Prevent font size inflation */
html {
  -moz-text-size-adjust: none;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

/* Remove default margin in favour of better control in authored CSS */
body, h1, h2, h3, h4, p,
figure, blockquote, dl, dd {
  margin-block-end: 0;
}

/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role='list'],
ol[role='list'] {
  list-style: none;
}

/* Set core body defaults */
body {
  min-height: 100vh;
  line-height: 1.5;
}

/* Set shorter line heights on headings and interactive elements */
h1, h2, h3, h4,
button, input, label {
  line-height: 1.1;
}

/* Balance text wrapping on headings */
h1, h2,
h3, h4 {
  text-wrap: balance;
}

/* A elements that don't have a class get default styles */
a:not([class]) {
  text-decoration-skip-ink: auto;
  color: currentColor;
}

/* Make images easier to work with */
img,
picture {
  max-width: 100%;
  display: block;
}

/* Inherit fonts for inputs and buttons */
input, button,
textarea, select {
  font-family: inherit;
  font-size: inherit;
}

/* Make sure textareas without a rows attribute are not tiny */
textarea:not([rows]) {
  min-height: 10em;
}

/* Anything that has been anchored to should have extra scroll margin */
:target {
  scroll-margin-block: 5ex;
}

/* ==================================================
   2. Base Styles
   ================================================== */

body, html {
  height: 100%;
}

body {
  margin: 0;
  font-family: "TsukuGoPro-D", sans-serif;
  background-color: white;
  color: black;
}

h1, h2, h3, h4,
dt {
  margin-block-start: 0;
  font-family: "TsukuGoPro-B", sans-serif;
}

a {
  color: black;
  text-decoration: underline;
}

a:hover {
  text-decoration: none;
}

img {
  max-width: 100%;
  height: auto;
}

:target {
  scroll-margin-block: 0;
}

/* ==================================================
   3. Layout（コンテナ、グリッド、フレックスなど）
   ================================================== */

/* ==================================================
   4. Components
   ================================================== */

/* ヘッダー */
.header-inner {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 43px 0 23px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.header-logo {
  margin-left: 5%;
}

.header-heading {
  font-feature-settings: "palt";
  font-size: clamp(0.688rem, 0.625rem + 0.31vw, 0.875rem); /* MIN11px MAX14px */
  line-height: 30px;
  letter-spacing: 0.1em;
  margin-right: 3.4%;
  text-align: right;
}

.global-nav {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  position: relative;
  overflow: hidden;
}

.global-nav > ul {
  margin-left: 5.5%;
  position: absolute;
  z-index: 1;
}

.global-nav > ul > li {
  margin: 30px 0;
  font-size: 15px;
  letter-spacing: 0.25em;
}

.global-nav > ul > li > a {
  text-decoration: none;
}

.global-nav .main-visual {
  width: 82.66%;
  margin-left: auto;
  opacity: 0;
  filter: blur(4px);
  transform: translateX(50px); /* 右から左にスライドさせるため右にずらす */
  transition: opacity 1.2s ease-out, transform 1.2s ease-out, filter 1.2s ease-out;
}

.global-nav .main-visual.visible {
  opacity: 1;
  filter: blur(0);
  transform: translateX(0);
}

/* ハンバーガーボタンの基本スタイル */
.hamburger {
  display: none; /* PCでは非表示 */
  flex-direction: column;
  justify-content: space-around;
  width: 30px;
  height: 24px;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 0;
  box-sizing: border-box;
  position: fixed;
  top: 49px;
  right: 20px;
  z-index: 1001;
}

.hamburger span {
  width: 100%;
  height: 1px;
  background-color: #333;
  border-radius: 2px;
  transition: all 0.3s linear;
}

/* バツマークに変える */
.hamburger.active span:nth-child(1) {
  transform: rotate(45deg);
  position: absolute;
  top: 10px;
}

.hamburger.active span:nth-child(2) {
  opacity: 0;
}

.hamburger.active span:nth-child(3) {
  transform: rotate(-45deg);
  position: absolute;
  top: 10px;
}

.main {
  overflow: hidden;
}

/* BUSINESSセクション */
#business {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-top: 96px;
  display: grid;
}

#business > h2 {
  grid-row: 1 / 4;
  grid-column: 1 / 2;
  width: 86px;
  font-size: 22px;
  letter-spacing: 0.32em;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
}

#apparel {
  grid-row: 1 / 2;
  grid-column: 2 / 3;
  position: relative;
}

.apparel-heading {
  grid-row: 1 / 3;
  grid-column: 1 / 2;
  background: right bottom / cover no-repeat url(../images/apparel-heading-bg.svg);
  color: #1D2087;
  text-align: right;
  padding-right: 6.3%;
  padding-bottom: 56px;
  position: absolute;
  top: -1px;
  right: 0;
  width: 100%;
  z-index: 1;
}

.apparel-heading > span {
  display: block;
}

.apparel-heading .lang-en {
  font-size: clamp(2.375rem, 1.75rem + 3.13vw, 4.25rem); /* MIN38px MAX68px */
  line-height: 1.1;
  letter-spacing: 0.012em;
}

.apparel-heading .lang-ja {
  font-size: clamp(0.938rem, 0.833rem + 0.52vw, 1.25rem); /* MIN15px MAX20px */
  line-height: 26.7px;
  letter-spacing: 0.04em;
  margin: 18px 4px;
}

.apparel-body {
  display: grid;
  grid-template-columns: 49.8% 1fr;
}

.apparel-body-lead {
  grid-row: 1 / 2;
  grid-column: 1 / 2;
  position: relative;
}

.apparel-body-lead > h4 {
  position: absolute;
  top: -7px;
  left: 7.5%;
  z-index: 1;
}

.apparel-body-lead-img,
.apparel-body-lead-img picture {
  margin: 0;
  height: 100%;
}

.apparel-body-lead-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.apparel-body-lead-img figcaption {
  font-size: 11px;
  line-height: 30px;
  letter-spacing: 0.01em;
  position: absolute;
  left: 19px;
  bottom: 5px;
}

.apparel-body-text {
  grid-row: 1 / 2;
  grid-column: 2 / 3;
  background-color: #1d2087;
  color: white;
  padding: 215px 5% 0 10.2%;
}

.apparel-body-text > dl {
  margin-top: 30px;
  font-feature-settings: "palt";
}

.apparel-body-text > dl > dt {
  font-size: clamp(1rem, 0.896rem + 0.52vw, 1.313rem); /* MIN16px MAX21px */
  line-height: 26.68px;
  letter-spacing: 0.1em;
}

.apparel-body-text > dl > dd {
  font-size: clamp(0.75rem, 0.688rem + 0.31vw, 0.938rem); /* MIN12px MAX15px */
  line-height: 28px;
  margin: 8px 0 23px 31px;
}

.apparel-body-text > dl > dd:nth-of-type(1) {
  letter-spacing: 0.12em;
}

.apparel-body-text > dl > dd:nth-of-type(2) {
  letter-spacing: 0.145em;
}

.apparel-body-text > dl > dd:nth-of-type(3) {
  letter-spacing: 0.11em;
}

.apparel-body-text > dl > dd:nth-of-type(4) {
  letter-spacing: 0.04em;
}

.apparel-body-gallery {
  grid-row: 2 / 3;
  grid-column: 1 / 3;
  margin-top: 23px;
  display: flex;
}

.apparel-body-gallery > img {
  width: calc(100% / 5);
}

#equipment {
  grid-row: 2 / 3;
  grid-column: 2 / 3;
  position: relative;
  margin-top: 50px;
}

.equipment-heading {
  grid-row: 1 / 3;
  grid-column: 1 / 2;
  background: left bottom / cover no-repeat url(../images/equipment-heading-bg.svg);
  color: #00723F;
  padding-left: 3.3%;
  padding-bottom: 56px;
  position: absolute;
  top: -1px;
  right: 0;
  width: 100%;
  z-index: 1;
}

.equipment-heading > span {
  display: block;
}

.equipment-heading .lang-en {
  font-size: clamp(2.375rem, 1.75rem + 3.13vw, 4.25rem); /* MIN38px MAX68px */
  line-height: 1.1;
  letter-spacing: 0.01em;
}

.equipment-heading .lang-ja {
  font-size: clamp(0.938rem, 0.833rem + 0.52vw, 1.25rem); /* MIN15px MAX20px */
  line-height: 26.7px;
  letter-spacing: 0.11em;
  margin: 24px 2px;
}

.equipment-body {
  display: grid;
  grid-template-columns: 58.3% 1fr;
  direction: rtl;
}

.equipment-body-lead {
  grid-row: 1 / 2;
  grid-column: 1 / 2;
  position: relative;
}

.equipment-body-lead > h4 {
  position: absolute;
  top: 45px;
  left: 26px;
  z-index: 1;
}

.equipment-body-lead-img,
.equipment-body-lead-img picture {
  margin: 0;
  height: 100%;
}

.equipment-body-lead-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.equipment-body-text {
  grid-row: 1 / 2;
  grid-column: 2 / 3;
  direction: ltr;
  background-color: #00723f;
  color: white;
  padding: 245px 9% 5px;
}

.equipment-body-text > dl {
  margin-top: 42px;
  font-feature-settings: "palt";
}

.equipment-body-text > dl > dt {
  font-size: clamp(1rem, 0.896rem + 0.52vw, 1.313rem); /* MIN16px MAX21px */
  line-height: 26.68px;
  letter-spacing: 0.1em;
}

.equipment-body-text > dl > dd {
  font-size: clamp(0.75rem, 0.688rem + 0.31vw, 0.938rem); /* MIN12px MAX15px */
  line-height: 28px;
  letter-spacing: 0.12em;
  margin: 8px 0 23px 31px;
}

.equipment-body-gallery {
  grid-row: 2 / 3;
  grid-column: 1 / 3;
  direction: ltr;
  margin-top: 23px;
  display: flex;
}

.equipment-body-gallery > img {
  width: calc(100% / 5);
}

#safety {
  grid-row: 3 / 4;
  grid-column: 2 / 3;
  margin-top: 32px;
  display: grid;
  grid-template-columns: 53.5% 1fr;
}

.safety-lead {
  grid-row: 1 / 2;
  grid-column: 1 / 2;
  position: relative;
}

.safety-lead > h4 {
  position: absolute;
  top: -12px;
  left: 7%;
  z-index: 1;
}

.safety-lead-img,
.safety-lead-img picture {
  margin: 0;
  height: 100%;
}

.safety-lead-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.safety-text {
  grid-row: 1 / 2;
  grid-column: 2 / 3;
  background-color: #ffa200;
  color: white;
  padding: 1.5em 7% 0 8.3%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.safety-text > dl {
  margin-top: 34px;
  font-feature-settings: "palt";
}

.safety-text > dl > dt {
  font-size: clamp(1rem, 0.896rem + 0.52vw, 1.313rem); /* MIN16px MAX21px */
  line-height: 26.68px;
  letter-spacing: 0.1em;
}

.safety-text > dl > dd {
  font-size: clamp(0.75rem, 0.688rem + 0.31vw, 0.938rem); /* MIN12px MAX15px */
  line-height: 28px;
  letter-spacing: 0.12em;
  margin: 8px 0 23px 31px;
}

.safety-gallery {
  grid-row: 2 / 3;
  grid-column: 1 / 3;
  margin-top: 23px;
  display: flex;
}

.safety-gallery > img {
  width: calc(100% / 5);
}

/* PHILOSOPHYセクション */
#philosophy {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-top: 94px;
  display: grid;
  grid-template-columns: 86px 1fr;
  direction: rtl;
}

#philosophy > h2 {
  grid-row: 1 / 4;
  grid-column: 1 / 2;
  width: 86px;
  font-size: 22px;
  letter-spacing: 0.32em;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
  justify-content: end;
}

#mvv {
  grid-row: 1 / 2;
  grid-column: 2 / 3;
  direction: ltr;
  margin-left: 86px;
}

#mvv::before,
#mvv::after {
  content: "";
  background: center bottom / 100% auto no-repeat url(../images/mvv-content-bg-corner.png);
  width: 76.7%;
  height: 20px;
  margin: 0 auto;
  display: block;
}

#mvv::after {
  transform: rotate(-180deg);
}

.mvv-content {
  background: center / 100% auto repeat-y url(../images/mvv-content-bg-line.png);
  width: 76.7%;
  margin: 0 auto;
  padding: 73px 0 64px;
}

.mvv-content > h3 {
  border-bottom: 0.6px solid black;
  padding-bottom: 50px;
  margin: 0 12% 52px;
}

.mvv-content > h4 {
  margin-top: 47px;
}

.mvv-content > h3 img,
.mvv-content > h4 img {
  margin: 0 auto;
}

.mvv-content > h4,
.mvv-content > p {
  margin-right: 10%;
  margin-left: 10%;
}

.mvv-content > p {
  text-align: center;
  font-feature-settings: "palt";
  font-size: clamp(0.938rem, 0.854rem + 0.42vw, 1.188rem); /* MIN15px MAX19px */
  line-height: 46.47px;
  letter-spacing: 0.14em;
}

#sdgs {
  grid-row: 2 / 3;
  grid-column: 2 / 3;
  direction: ltr;
  margin-left: 86px;
  padding-top: 116px;
}

#sdgs > h2 > img,
#sdgs > img {
  margin: 0 auto;
}

#sdgs > h2 {
  margin-bottom: 40px;
}

#sdgs > p {
  text-align: center;
  font-feature-settings: "palt";
  font-size: clamp(0.938rem, 0.854rem + 0.42vw, 1.188rem); /* MIN15px MAX19px */
  line-height: 49px;
  letter-spacing: 0.13em;
  margin-top: 50px;
}

#message {
  grid-row: 3 / 4;
  grid-column: 2 / 3; 
  direction: ltr;
  margin-left: 86px;
  margin-bottom: 128px;
}

#message::before {
  content: "";
  background-color: black;
  width: 0.6px;
  height: 113px;
  display: block;
  margin: 47px auto 65px;
}

#message > h2 {
  text-align: center;
  font-size: 22px;
  letter-spacing: 0.3em;
}

#message > h2::after {
  content: "";
  background-color: black;
  width: 40px;
  height: 1px;
  display: block;
  margin: 22px auto 50px;
}

#message picture img {
  margin: 0 auto;
}

/* OUTLINEセクション */
#outline {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 86px 1fr;
}

#outline > h2 {
  width: 86px;
  font-size: 22px;
  letter-spacing: 0.32em;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
}

.outline-content {
  background: center / cover no-repeat url(../images/outline-content-bg.jpg);
}

.outline-profile {
  background-color: rgba(255, 255, 255, 0.7);
  padding: 47px 11% 63px 8.5%; 
  width: 74%;
  margin: 0 auto;
}

.outline-profile > table {
  border-collapse: collapse;
  width: 100%;
}

.outline-profile > table th,
.outline-profile > table td {
  font-feature-settings: "palt";
  font-size: clamp(0.813rem, 0.75rem + 0.31vw, 1rem); /* MIN13px MAX16px */
  line-height: 26px;
  letter-spacing: 0.1em;
  vertical-align: top;
  padding: 19px 0;
  position: relative;
}

.outline-profile > table tr:not(:last-of-type) th::after,
.outline-profile > table tr:not(:last-of-type) td::after {
  content: "";
  background-color: rgba(0, 0, 0, 0.6);
  width: 100%;
  height: 0.5px;
  position: absolute;
  bottom: 0;
  left: 0;
}

.outline-profile > table th {
  text-align: left;
  width: 177px;
}

.outline-profile > table td > dl {
  margin-top: 0;
}

.outline-profile > table td > dl dd {
  font-size: clamp(0.688rem, 0.625rem + 0.31vw, 0.875rem); /* MIN11px MAX14px */
  line-height: 24px;
  margin-left: 1em;
}

.outline-profile > table td > dl dd:not(:last-of-type) {
  margin-bottom: 17px;
}

.outline-profile > table td a[target="_blank"]::after {
  content: "";
  background: center / contain no-repeat url(../images/icon-_blank.svg);
  width: 10px;
  height: 10px;
  margin-left: 4px;
  display: inline-block;
}

/* HISTORYセクション */
#history {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-top: 144px;
  display: grid;
  grid-template-columns: 86px 1fr;
  direction: rtl;
}

#history > h2 {
  width: 86px;
  font-size: 22px;
  letter-spacing: 0.32em;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
  justify-content: end;
}

.history-content {
  direction: ltr;
  position: relative;
  padding-left: 32.7%;
}

.history-content::before {
  content: "";
  background: center / cover no-repeat url(../images/history-content-bg.jpg);
  width: 26.9%;
  height: 100%;
  position: absolute;
  left: 0;
}

.history-content > h3 {
  margin-bottom: 46px;
}

.history-list {
  display: grid;
  grid-template-columns: 100px 100px 1fr;
  width: 100%;
  position: relative;
}

.history-list:not(:last-of-type) {
  padding-bottom: 27px;
}

.history-list-year {
  font-size: clamp(1.25rem, 1.083rem + 0.83vw, 1.75rem); /* MIN20px MAX28px */
}

.history-list:not(:last-of-type) .history-list-year::before {
  content: "";
  background-color: black;
  width: 0.6px;
  height: 100%;
  position: absolute;
  top: 16px;
  left: 101px;
}

.history-list-year::after {
  content: "";
  background-color: black;
  border-radius: 50%;
  width: 8px;
  height: 8px;
  position: absolute;
  top: 16px;
  left: 98px;
}

.history-list-month {
  font-size: clamp(1.25rem, 1.083rem + 0.83vw, 1.75rem); /* MIN20px MAX28px */
  text-align: center;
}

.history-list-month > span {
  font-size: clamp(0.688rem, 0.625rem + 0.31vw, 0.875rem); /* MIN11px MAX14px */
}

.history-list-detail > p {
  font-feature-settings: "palt";
  font-size: clamp(0.813rem, 0.771rem + 0.21vw, 0.938rem); /* MIN13px MAX15px */
  line-height: 26.25px;
  letter-spacing: 0.1em;
  margin-top: 5px;
  margin-left: 16px;
}

.history-list-detail > p:not(:last-of-type) {
  margin-bottom: 14px;
}

/* RECRUITセクション */
#recruit {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-top: 107px;
  display: grid;
  grid-template-columns: 86px 34% 1fr;
}

#recruit > h2 {
  width: 86px;
  font-size: 22px;
  letter-spacing: 0.32em;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
}

#recruit > h3::before {
  content: "";
  background: center / cover no-repeat url(../images/recruit-content-bg.jpg);
  width: 130.3%;
  height: 458px;
  display: block;
  margin-top: 31px;
}

#recruit > h3::after {
  content: "";
  background-color: black;
  margin-left: -100vw;
  height: 0.6px;
  display: block;
}

#recruit > h3 > img {
  margin: 53px 0 26px auto;
}

.recruit-content {
  background-color: #372e2f;
  color: white;
  margin-top: 98px;
  margin-left: 8.4%;
  position: relative;
  z-index: -1;
}

.recruit-detail {
  padding: 25px 12.5% 37px 18%;
}

.recruit-detail > table {
  border-collapse: collapse;
  width: 100%;
}

.recruit-detail > table th,
.recruit-detail > table td {
  font-feature-settings: "palt";
  font-size: clamp(0.813rem, 0.75rem + 0.31vw, 1rem); /* MIN13px MAX16px */
  line-height: 26px;
  letter-spacing: 0.1em;
  vertical-align: top;
  padding: 19px 0;
  position: relative;
}

.recruit-detail > table tr:not(:last-of-type) th::after,
.recruit-detail > table tr:not(:last-of-type) td::after {
  content: "";
  background-color: rgba(255, 255, 255, 0.6);
  width: 100%;
  height: 0.5px;
  position: absolute;
  bottom: 0;
  left: 0;
}

.recruit-detail > table th {
  text-align: left;
  width: 173px;
}

/* CONTACTセクション */
#contact {
  width: calc(100% - 40px);
  max-width: 867px;
  margin: 0 auto 80px;
  padding-top: 137px;
}

#contact > h2 > img {
  margin: 0 auto;
}

.contact-logo > img {
  margin: 54px auto 43px;
}

.contact-address {
  margin-bottom: 30px;
}

.contact-address > p {
  font-feature-settings: "palt";
  font-size: clamp(0.75rem, 0.604rem + 0.73vw, 1.188rem); /* MIN12px MAX19px */
  line-height: 2;
  letter-spacing: 0.145em;
  text-align: center;
  margin-top: 0;
}

.contact-map {
  position: relative;
  width: 100%;
  padding-bottom: 63%;
  height: 0;
  overflow: hidden;
}

.contact-map iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.contact-access > dl {
  display: grid;
  grid-template-columns: 78px 1fr;
  margin: 33px 0;
  row-gap: 16px;
}

.contact-access > dl > dt {
  background-color: #372e2f;
  color: white;
  font-size: clamp(0.688rem, 0.625rem + 0.31vw, 0.875rem); /* MIN11px MAX14px */
  line-height: 1.1;
  letter-spacing: 0.05em;
  text-align: center;
  padding: 1px 0 3px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.contact-access > dl > dd {
  font-feature-settings: "palt";
  font-size: clamp(0.813rem, 0.75rem + 0.31vw, 1rem); /* MIN13px MAX16px */
  line-height: 1.1;
  letter-spacing: 0.05em;
  margin-left: 17px;
}

/* フッター */
footer {
  background-color: #372e2f;
  color: white;
  padding: 28px 0;
}

.footer-inner {
  width: calc(100% - 40px);
  max-width: 1120px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.footer-copyright {
  font-size: 10px;
  line-height: 14px;
  letter-spacing: 0.05em;
}

.footer-pagetop {
  cursor: pointer;
}

/* ==================================================
   5. Utilities（マージン調整、テキストカラーなど）
   ================================================== */

/* フォントウェイト別クラス */
.font-tsuku-light {
  font-family: "TsukuGoPro-L", sans-serif;
}

.font-tsuku-regular {
  font-family: "TsukuGoPro-R", sans-serif;
}

.font-tsuku-medium {
  font-family: "TsukuGoPro-M", sans-serif;
}

.font-tsuku-demi {
  font-family: "TsukuGoPro-D", sans-serif;
}

.font-tsuku-bold {
  font-family: "TsukuGoPro-B", sans-serif;
}

/* Optima Nova Regular */
.font-optima-regular {
  font-family: "OptimaNovaLTPro-Regular", sans-serif;
}

/* Copperplate Gothic Bold */
.font-copperplate-bold {
  font-family: "CopperplateGothicLTPro-32BC", sans-serif;
}

/* テキストアラインユーティリティ */
.text-left {
  text-align: left;
}

.text-center {
  text-align: center;
}

.text-right {
  text-align: right;
}

/* ul/liリセット用クラス */
.list-reset {
  list-style: none;
  margin: 0;
  padding: 0;
}

.list-reset > li {
  margin: 0;
  padding: 0;
}

/* ==================================================
   6. Animation
   ================================================== */

@keyframes jumpIn {
  0% {
    opacity: 0;
    transform: translateY(80px);
  }
  60% {
    opacity: 1;
    transform: translateY(-20px);
  }
  80% {
    transform: translateY(10px);
  }
  100% {
    transform: translateY(0);
  }
}

/* 初期状態：回転して少し下にずらす */
.fade-in {
  opacity: 0;
  transform: translateY(50px) rotate(-1deg);
  transition: opacity 1.2s ease-out, transform 1.2s ease-out;
}

/* 表示時にクラス追加でフェードイン */
.fade-in.visible {
  opacity: 1;
  transform: translateY(0) rotate(0deg);
}

/* ==================================================
   7. Media Queries (レスポンシブ対応まとめ)
   ================================================== */

@media (max-width: 768px) {

  /* ヘッダー */
  .header-inner {
    width: calc(100% - 40px);
    flex-direction: column;
  }

  .header-logo {
    margin: 0 auto 20px;
    max-width: 200px;
  }

  .header-heading {
    line-height: 1.2;
    margin-right: 0;
    text-align: center;
  }

  .global-nav > ul {
    position: fixed;
    top: 0;
    display: none; /* 初期は非表示 */
    flex-direction: column;
    background-color: #fff;
    width: 100%;
    height: 100%;
    margin-left: 0;
    z-index: 1000;
  }

  .global-nav > ul.active {
    display: flex; /* 開いたとき */
    align-items: center;
    justify-content: center;
  }

  .hamburger {
    display: flex; /* スマホで表示 */
  }

  .global-nav .main-visual {
    width: 100%;
    margin: 0;
  }

  /* BUSINESSセクション */
  #business > h2 {
    grid-row: auto;
    grid-column: auto;
    width: auto;
    writing-mode: unset;
    justify-content: center;
    margin-bottom: 70px;
  }

  #apparel {
    grid-row: auto;
    grid-column: auto;
  }

  .apparel-heading {
    background: none;
    padding-right: 6.8%;
  }

  .apparel-heading .lang-ja {
    margin: 24px 8px;
  }

  .apparel-body {
    grid-template-columns: 1fr;
    padding-top: 68px;
  }

  .apparel-body-lead {
    grid-row: auto;
    grid-column: auto;
  }

  .apparel-body-lead > h4 {
    display: none;
  }

  .apparel-body-text {
    grid-row: auto;
    grid-column: auto;
    padding: 35px 20px 10px;
  }

  .apparel-body-gallery {
    grid-row: auto;
    grid-column: auto;
    flex-wrap: wrap;
    justify-content: center;
  }

  .apparel-body-gallery > img:nth-child(-n+4) {
    width: calc(100% / 3);
  }

  .apparel-body-gallery > img:nth-child(n+4) {
    width: calc(100% / 2);
  }

  #equipment {
    grid-row: auto;
    grid-column: auto;
  }

  .equipment-heading {
    background: none;
    padding-left: 8.5%;
  }

  .equipment-heading .lang-ja {
    margin: 30px 4px;
  }

  .equipment-body {
    grid-template-columns: 1fr;
    padding-top: 78px;
  }

  .equipment-body-lead {
    grid-row: auto;
    grid-column: auto;
  }

  .equipment-body-lead > h4 {
    display: none;
  }

  .equipment-body-text {
    grid-row: auto;
    grid-column: auto;
    padding: 35px 20px 10px;
  }

  .equipment-body-gallery {
    grid-row: auto;
    grid-column: auto;
    flex-wrap: wrap;
    justify-content: center;
  }

  .equipment-body-gallery > img:nth-child(-n+4) {
    width: calc(100% / 3);
  }

  .equipment-body-gallery > img:nth-child(n+4) {
    width: calc(100% / 2);
  }

  #safety {
    grid-row: auto;
    grid-column: auto;
    grid-template-columns: 1fr;
  }

  .safety-lead {
    grid-row: auto;
    grid-column: auto;
  }

  .safety-lead > h4 {
    display: none;
  }

  .safety-text {
    grid-row: auto;
    grid-column: auto;
    padding: 35px 20px 10px;
 }

  .safety-gallery {
    grid-row: auto;
    grid-column: auto;
    flex-wrap: wrap;
    justify-content: center;
  }

  .safety-gallery > img:nth-child(-n+4) {
    width: calc(100% / 3);
  }

  .safety-gallery > img:nth-child(n+4) {
    width: calc(100% / 2);
  }

  /* PHILOSOPHYセクション */
  #philosophy {
    grid-template-columns: 1fr;
  }

  #philosophy > h2 {
    grid-row: auto;
    grid-column: auto;
    width: auto;
    writing-mode: unset;
    justify-content: center;
    margin-bottom: 70px;
  }

  #mvv {
    grid-row: auto;
    grid-column: auto;
    margin-left: 0;
  }

  #mvv::before,
  #mvv::after {
    width: calc(100% - 40px);
  }

  .mvv-content {
    width: calc(100% - 40px);
  }

  .mvv-content > p {
    line-height: 37px;
  }

  .mvv-content > p > br {
    display: none;
  }

  #sdgs {
    grid-row: auto;
    grid-column: auto;
    margin-left: auto;
    margin-right: auto;
    width: calc(100% - 40px);
  }

  #sdgs > p {
    line-height: 37px;
  }

  #message {
    grid-row: auto;
    grid-column: auto;
    margin-left: auto;
    margin-right: auto;
    width: calc(100% - 40px);
  }

  #message > figure {
    margin-left: auto;
    margin-right: auto;
  }

  /* OUTLINEセクション */
  #outline {
    grid-template-columns: 1fr;
  }

  #outline > h2 {
    width: auto;
    writing-mode: unset;
    justify-content: center;
    margin-bottom: 50px;
  }

  .outline-profile {
    padding-left: 20px;
    padding-right: 20px;
    width: calc(100% - 40px);
  }

  .outline-profile > table {
    table-layout: fixed;
  }

  .outline-profile > table th {
    width: auto;
  }

  /* HISTORYセクション */
  #history {
    grid-template-columns: 1fr;
  }

  #history > h2 {
    width: auto;
    writing-mode: unset;
    justify-content: center;
    margin-bottom: 70px;
  }

  .history-content {
    padding-left: 0;
    width: calc(100% - 40px);
    margin: 0 auto;
  }

  .history-content > h3 {
    margin-bottom: 54px;
  }

  .history-content > h3 > img {
    margin-right: auto;
    margin-left: auto;
  }

  .history-content::before {
    content: none;
  }

  .history-list {
    grid-template-columns: 80px 70px 1fr;
  }

  .history-list:not(:last-of-type) {
    padding-bottom: 32px;
  }

  .history-list-year {
    text-align: center;
  }

  .history-list:not(:last-of-type) .history-list-year::before {
    top: 14px;
    left: 82px;
  }

  .history-list-year::after {
    width: 7px;
    height: 7px;
    top: 11px;
    left: 79px;
  }

  .history-list-detail > p {
    margin-top: 1px;
    margin-left: 2px;
  }

  /* RECRUITセクション */
  #recruit {
    grid-template-columns: 1fr;
  }

  #recruit > h2 {
    width: auto;
    writing-mode: unset;
    justify-content: center;
    margin-bottom: 70px;
  }

  #recruit > h3::before {
    width: 100%;
    height: 300px;
    margin-top: 0;
  }

  #recruit > h3 > img {
    margin-right: auto;
    margin-left: auto;
  }

  .recruit-content {
    margin: 0;
  }

  .recruit-detail {
    padding-right: 20px;
    padding-left: 20px;
  }

  .recruit-detail > table {
    table-layout: fixed;
  }

  .recruit-detail > table th {
    width: auto;
  }

  /* CONTACTセクション */
  #contact > h2 > img {
    width: 80%;
    max-width: calc(208px * 0.8);
  }

  .contact-logo > img {
    width: 80%;
    max-width: calc(441px * 0.8);
  }
}

