@charset "UTF-8";

/* ======================
      common
  ======================= */
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap");

:root {
 --color-text: #1a1a1a;
 --color-blue: #004f99;
 --color-lightgray: #e6e6e6;
 --color-brand-1: #006eba;
 --color-brand-2: #deb04b;
--color-pastel-1: #dff2fc;
--color-pastel-2: #e9f7f0;
--color-pastel-3: #fef1ed;
--color-pastel-4: #e5eaf6;
--color-pastel-5: #f4f8e9;
}

body {
 font-family: "Noto Sans JP", sans-serif;
 font-weight: 400;
 color: var(--color-text);
 animation: fadeIn 2s ease 0s 1 normal;
}
@keyframes fadeIn {
 0% {
  opacity: 0;
 }
 100% {
  opacity: 1;
 }
}

@-webkit-keyframes fadeIn {
 0% {
  opacity: 0;
 }
 100% {
  opacity: 1;
 }
}

a {
 color: var(--color-text);
}

dl,
dt,
dd {
 margin: 0;
}

hr {
  border: none;
  border-top: 1px solid #b3b3b3;
}


.btn {
 display: flex;
 justify-content: center;
 align-items: center;
 padding: 0 24px;
 max-width: 220px;
 height: 40px;
 line-height: 40px;
 border-radius: 50px;
 margin: auto;
 white-space: nowrap;
 background: var(--color-blue);
 color: var(--color-white);
}

.btn:hover {
 background: var(--color-brand-2);
 translate: 0 -2px;
}

hgroup p {
 display: flex;
 justify-content: center;
 align-items: center;
 gap: 8px;
 position: relative;
 top: -8px;
 font-weight: 600;
}

hgroup p::before,
hgroup p::after {
 content: "";
 width: 18px;
 height: 1px;
 background: var(--color-text);
}

h2 {
 font-size: 1.6rem;
 font-weight: 700;
}

.bg-grey {
 background: var(--color-lightgray);
}

.bg-bl {
 background: var(--color-blue);
}

.color-bl {
 color: var(--color-blue);
}

.color-wh {
 color: var(--color-white);
}

@media screen and (min-width: 768px) {
 .pd {
  padding: 64px 0;
 }
}

@media screen and (max-width: 767px) {
 .pd {
  padding: 32px 0;
 }
}

.fadein {
 opacity: 0.1;
 -webkit-transform: translate(0, 50px);
 transform: translate(0, 50px);
 -webkit-transition: 0.8s;
 transition: 0.8s;
}
.fadein.scrollin {
 opacity: 1;
 -webkit-transform: translate(0, 0);
 transform: translate(0, 0);
}

/* ======================
      header
  ======================= */
header {
 position: fixed;
 width: 100%;
 left: 50%;
 translate: -50%;
 background: rgba(255, 255, 255, 0.8);
 backdrop-filter: blur(6px);
 z-index: 9;
}

header a,
header a::before,
header a::after,
header a img {
 transition: 0.2s;
}

header a:hover {
 translate: 0 -2px;
}

header nav a {
 position: relative;
}

header nav a:not(.btn)::after {
 content: "";
 display: block;
 height: 1px;
 width: 100%;
 background: var(--color-brand-1);
 scale: 0 1;
}

header nav a:not(.btn):hover::after {
 scale: 1;
}

header nav a:not(.btn)::before {
 content: "";
 display: block;
 position: absolute;
 bottom: -3px;
 height: 1px;
 width: 100%;
 background: var(--color-brand-2);
 scale: 0 1;
}

header nav a:not(.btn):hover::before {
 scale: 1;
}

header .inner {
 max-width: 98%;
 margin: auto;
}
@media screen and (max-width: 839px) {
 header .inner {
  max-width: 92%;
  margin: auto;
 }
}

/* ======================
      hamburger menu
  ======================= */

@media screen and (min-width: 840px) {
 .hamburger,
 .hamburger-menu {
  display: none;
 }
}
@media screen and (max-width: 839px) {
 header nav.flex {
  display: none;
 }
 .hamburger {
  position: relative;
  width: 24px;
  height: 10px;
  z-index: 999;
 }
 .hamburger.active {
  height: 16px;
 }
 .hamburger span {
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--color-text);
  transition: all 0.3s ease-in-out;
 }
 .hamburger span:nth-of-type(1) {
  top: 0;
 }
 .hamburger span:nth-of-type(2) {
  bottom: 0;
 }
 .hamburger.active span:nth-of-type(1) {
  transform: translateY(7px) rotate(45deg);
 }
 .hamburger.active span:nth-of-type(2) {
  transform: translateY(-7px) rotate(-45deg);
 }

 .hamburger-menu {
  transform-origin: top center;
  position: fixed;
  right: 0;
  width: 100vw;
  height: calc(100vh);
  transform: translateX(100vw);
  background: rgba(255, 255, 255, 0.96);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out, visibility 0s 0.2s;
 }
 .hamburger-menu.active {
  transform-origin: top center;
  transform: translateX(0);
  opacity: 1;
  visibility: visible;
  z-index: 9;
  transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out, visibility 0s;
 }
 .hamburger-menu ul {
  position: absolute;
  top: 0;
  left: 50%;
  translate: -50%;
  width: 90%;
  padding: 80px 0;
  border-radius: 16px;
  flex-direction: column;
  align-items: flex-end;
  letter-spacing: 1px;
 }
 .hamburger-menu ul li {
  text-align: center;
  line-height: 360%;
 }
}

/* ======================
      footer
  ======================= */
footer {
 position: relative;
}

footer.pd {
 padding: 64px 0 16px;
}

footer .flex p {
 margin:0;
}

@media screen and (max-width: 767px) {
footer .flex {
 align-items:center;
}
}

.back-to-top {
 position: absolute;
 top: -48px;
 right: 0;
 margin: 0 0 0 auto;
 width: 48px;
 height: 48px;
 background: #dce4ee;
 display: flex;
 align-items: center;
 justify-content: center;
}

.back-to-top::before {
 content: "";
 display: block;
 width: 12px;
 height: 12px;
 border-left: 2px solid var(--color-blue);
 border-bottom: 2px solid var(--color-blue);
 transform: translateY(2px) rotate(135deg);
}

.back-to-top:hover {
 background: var(--color-brand-2);
}

/* ======================
      main contents
  ======================= */
main {
 position: relative;
 top: 87px;
}
@media screen and (max-width: 767px) {
 main {
  top: 56px;
 }
}

.mv {
 position: relative;
 height: 640px;
 overflow: hidden;
}

/* スライドのコンテナ */
.mv-slides {
  position: relative;
  width: 100vw;
  height: 100%;
}

/* 各スライド */
.mv-slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
  z-index: 1; /* 非表示のスライド */
}

/* アクティブなスライド（フェードイン） */
.mv-slide.active {
  opacity: 1;
  z-index: 2; /* 最前面に表示 */
}

/* フェードアウトするスライド */
.mv-slide.fade-out {
  opacity: 0;
  z-index: 1; /* 背面に移動 */
}

/* picture要素のスタイル */
.mv-slide picture {
  display: unset;
}

/* img要素のスタイル */
.mv-slide img {
  min-height: 100%;
  width: 100vw;
  object-fit: cover;
  object-position: center;
}

.mv-overlay {
 position: absolute;
 inset: 0;
 top: 2rem;
 left: 3rem;
 z-index:3;
}

.mv-overlay-inner {
 display: flex;
 flex-direction: column;
 justify-content:space-between;
 align-items:flex-start;
 max-width: 90%;
 height:88%;
}

 .mv-overlay-inner svg {
  margin:0;
 }

.mv-overlay-inner .flex {
 align-items:center;
}

@media screen and (max-width: 767px) {
 .mv-overlay {
  width: 100%;
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  top: 2rem;
  left: 50%;
  translate: -50%;
 }

 .mv-overlay-inner .flex {
  gap:8px;
 }

  .mv-overlay-01 svg {
  width:56px;
 }
}

.mv-dots {
 position: absolute;
 left: 50%;
 bottom: 20px;
 transform: translateX(-50%);
 display: flex;
 gap: 6px;
}

.mv-dot {
 width: 8px;
 height: 8px;
 border-radius: 50%;
 background: rgba(255, 255, 255, 0.5);
}

.mv-dot.active {
 background: #fff;
}

.content-item {
 flex-basis: 33%;
 background-blend-mode: darken;
 background-color: rgba(0, 0, 0, 0.3);
 background-size: cover;
 background-position: center;
}

.content-item:nth-child(1) {
 background-image: url(../img/bg-company.jpg);
}

.content-item:nth-child(2) {
 background-image: url(../img/bg-service.png);
}

.content-item:nth-child(3) {
 background-image: url(../img/bg-works.jpg);
}

.content-item a {
 position: relative;
 display: block;
 height: 300px;
}

.content-item a:hover {
 backdrop-filter: blur(6px);
}

.content-item .inner {
 position: absolute;
 top: 56%;
 left: 50%;
 translate: -50% -50%;
 width: 100%;
}

.content-item hgroup p::before,
.content-item hgroup p::after {
 background: var(--color-white);
}

.content-item .txt {
 position: absolute;
 bottom: -16px;
 left: 50%;
 translate: -50% -50%;
 width: 100%;
 font-size: 0.8rem;
}

/* contact */

.contact-area span {
 background: #b3b3b3;
}

@media screen and (min-width: 821px) {
 .contact-area span {
  width: 1px;
  margin: 0 64px;
 }
}

@media screen and (max-width: 820px) {
 .contact.pd {
  padding: 64px 0;
 }
 .contact-area span {
  width: 240px;
  max-width: 90%;
  height: 1px;
  margin: 32px auto;
 }
}

.contact-item {
 display: flex;
 flex-direction: column;
 justify-content: space-between;
 align-items: center;
 gap: 16px;
}
.contact-item p {
 text-box-trim: trim-both;
 text-box-edge: cap alphabetic;
 margin: 0;
}
.contact-item:nth-child(1) a {
 font-size: 2rem;
 height: 40px;
}
.contact-item a:nth-child(1) {
 display: flex;
 align-items: center;
 gap: 8px;
}

.contact-item:nth-child(1) a::before {
 content: "";
 width: 18px;
 height: 18px;
 background-image: url(../img/icon-tel.svg);
 background-size: contain;
 background-repeat: no-repeat;
}

.contact-item:nth-child(3) a::before {
 content: "";
 padding: 8px 10px;
 background-image: url(../img/icon-mail.svg);
 background-position: center;
 background-size: contain;
 background-repeat: no-repeat;
}

/* ======================
      subpage
  ======================= */

.subpage-ttl {
 position: relative;
 background: var(--color-blue);
 color: var(--color-white);
 display: flex;
 align-items: center;
 height: 100px;
 padding-bottom: 12px;
}

.subpage-ttl::before {
 content: "";
 display: block;
 position: absolute;
 bottom: 24px;
 height: 1px;
 width: 100%;
 background: var(--color-white);
}

.subpage-ttl::after {
 content: "";
 display: block;
 position: absolute;
 bottom: 20px;
 height: 1px;
 width: 100%;
 background: var(--color-brand-2);
}

.subpage-ttl h1 {
 font-size: 1.8rem;
 padding-left: 40px;
}

.subpage-ttl p {
 margin: 0;
 top: 0;
 left: 24px;
}
.subpage-ttl p::before,
.subpage-ttl p::after {
 background: var(--color-white);
}
@media screen and (max-width: 767px) {
.subpage .font-l {
 font-size:1.24rem;
 font-feature-settings:"palt";
}
}

/* Subpage  - Company */

.company dl {
 border-top: 1px solid #b3b3b3;
 width: 100%;
 display: flex;
 flex-wrap: wrap;
}

.company dt,
.company dd {
 padding: 16px 24px;
 border-bottom: 1px solid #b3b3b3;
}

.company dt {
 flex-basis: 20%;
 display:flex;
 justify-content:center;
 align-items:center;
 background: #f2f2f2;
 box-sizing: border-box;
 margin: 0;
 text-align: center;
}

.company dd {
 flex-basis: 80%;
 box-sizing: border-box;
 margin: 0;
}

@media screen and (max-width: 767px) {
 .company dl {
  flex-direction: column;
 }

 .company dt {
display:block;
}

 .company dt,
 .company dd {
  padding: 4px 16px;
  text-align: left;
 }

 .company dd {
  padding-bottom: 16px;
 }

 .map iframe {
  height: 240px;
 }
}

/* Subpage  - Service */

.box-area .box {
 padding: 40px;
}

.box-area .box img {
 margin: 0;
 width: 180px;
}

.box-area .box p {
 font-size: 1.24rem;
}

.box-area .box .flex {
 width: 640px;
 max-width: 90%;
 margin: auto;
}

.box-area .box:nth-child(1) {
  background: var(--color-pastel-1);
}

.service .box:nth-child(2) {
  background: var(--color-pastel-2);
}

.service .box:nth-child(3) {
  background: var(--color-pastel-3);
}

.service .box:nth-child(4) {
  background: var(--color-pastel-4);
}

.service .box:nth-child(5) {
  background: var(--color-pastel-5);
}

@media screen and (max-width: 767px) {
 .service p {
  font-size: 1.26rem;
 }
 .box-area .box {
  padding: 40px 0 24px;
 }
 .box-area .box .flex {
  gap: 8px;
  text-align: center;
 }

 .box-area .box p {
  font-size: 1rem;
 }
}

/* Subpage  - Works */

.card {
 padding: 24px;
 flex-basis: calc(100% / 2 - 80px);
}

.dummy {
 padding: 0 24px;
 flex-basis: calc(100% / 2 - 80px);
 height:0;
}

.card img {
height:340px;
 width:100%;
 object-fit:cover;
}

@media screen and (max-width: 820px) {
.card img {
height:240px;
}
}

 table {
    width: 100%;
    border-collapse: collapse;
  }

  th, td {
    padding: 10px 15px;
    border: 1px solid #ddd;
    text-align: left;
    vertical-align: top;
  }

  th {
    background-color: var(--color-blue);
    color: #fff;
    font-weight: bold;
    white-space: nowrap;
  }

  td.date, td.client, td.term {
    white-space: nowrap; /* 改行なし */
  }

  td.name {
    word-break: break-word; /* 工事名称は折り返す */
  }

  tr:nth-child(even) td {
    background-color: #f4f4f4;
  }


  /* モバイル向けカード型 */
  @media (max-width: 768px) {
    table, thead, tbody, th, td, tr {
      display: block;
    }

    thead tr {
      display: none; /* ヘッダーは非表示 */
    }

    tr {
      margin-bottom: 1em;
      border: 1px solid #ddd;
      border-radius: 6px;
      background-color: #fff;
      padding: 10px;
    }

    td {
      display: flex;
      justify-content: flex-start;
      padding: 6px 10px;
      border: none;
      border-bottom: 1px solid #eee;
    }

    td:last-child {
      border-bottom: none;
    }

    td::before {
      content: attr(data-label);
      font-weight: bold;
      width: 40%;
      flex-shrink: 0;
      color: #555;
     flex-basis:100px;
    }

    td.name::before {
      width: 35%;
    }

    tr:nth-child(even) td {
      background-color: #fff; /* カード内は均一色 */
    }
  }

/* Subpage  - Contact */

form {
 max-width: 600px;
 margin: 0 auto;
 padding: 20px;
}

.required-note {
 color: #c00;
}

.required-asterisk {
 color: #c00;
 margin-right: 4px;
}

.form-group {
 margin-bottom: 24px;
}

label {
 display: block;
 font-weight: bold;
 margin-bottom: 8px;
}

input[type="text"],
input[type="email"],
input[type="tel"],
textarea {
 width: 100%;
 padding: 12px;
 border: 1px solid #ccc;
 border-radius: 4px;
 box-sizing: border-box;
 font-size: 16px;
 outline: none;
 transition: border-color 0.3s;
}

input:focus,
textarea:focus {
 border-color: #007bff;
}

input::placeholder,
textarea::placeholder {
 color: #aaa;
}

.checkbox-group {
 display: flex;
 flex-direction: column;
}

.checkbox-container {
 display: flex;
 align-items: center;
 margin-bottom: 8px;
 cursor: pointer;
 position: relative;
 padding-left: 25px;
}

.checkbox-container input[type="checkbox"] {
 -webkit-appearance: none;
 -moz-appearance: none;
 appearance: none;
 position: absolute;
 left: 0;
 width: 16px;
 height: 16px;
 border: 1px solid #444;
 background-color: #fff;
 cursor: pointer;
 outline: none;
 z-index: 1;
}

.checkbox-container input[type="checkbox"]:checked {
 background-color: var(--color-blue);
 border-color: var(--color-blue);
}

.checkbox-container input[type="checkbox"]:checked::before {
 content: "✓";
 display: block;
 color: white;
 text-align: center;
 font-size: 14px;
 line-height: 15px;
}

.submit-button-container {
 text-align: center;
}

button[type="submit"] {
 background-color: var(--color-blue);
 color: var(--color-white);
 padding: 12px 60px;
 border: none;
 border-radius: 50px;
 cursor: pointer;
 font-size: 16px;
 transition: 0.2s;
}

button[type="submit"]:hover {
 background-color: var(--color-brand-2);
 translate: 0 -2px;
}

.contact hr {
 border-top:3px dotted #ccc;
}