@media screen and (max-width: 1299px) {
  .frp-contents {
    padding: 0 22px 0 var(--gap-pc);
  }

  ul.nav-main,
  ul.nav-sub {
    display: none;
  }

  ul.footer-nav-main-list,
  .footer-nav {
    display: none;
  }

  .footer-logo {
    margin: 0 auto;
  }

  .footer-copyright {
    margin-top: 22px;
  }
}

@media screen and (max-width: 1199px) {
  .banner-wrapper {
    flex-direction: column;
  }

  .banner-item {
    width: 100%;
  }

  .nav-mobile-wrapper {
    margin-top: var(--header-pc);
    padding: 0;
  }

  ul.nav-mobile {
    width: 100%;
    max-width: 100%;
    margin: 0 auto;
    padding: 22px 44px 0 44px;
    gap: 22px 44px;
    justify-content: flex-start;
    height: calc(100dvh - var(--header-pc));
    overflow-y: scroll;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  ul.nav-mobile li:last-child {
    margin-bottom: 55px;
  }
}

@media screen and (max-width: 959px) {
  .frp-wrapper {
    flex-direction: column;
    gap: 33px;
  }

  .frp-contents {
    width: 100%;
    padding: 0 var(--gap-pc);
  }

  .frp-image {
    width: 100%;
    padding: 0 var(--gap-pc);
  }

  section#news .container {
    flex-direction: column;
    gap: 55px;
  }

  section#news .news-wrapper {
    width: 100%;
    padding: 0;
  }

  section#news .topics-wrapper {
    width: 100%;
    padding: 0;
  }

  .products-list {
    flex-wrap: wrap;
  }

  .products-item {
    width: calc(50% - 11px);
  }

  section.frp,
  section.about,
  section.works,
  section.works-single,
  section.publications,
  section.faq {
    flex-direction: column;
    gap: 55px;
    padding-top: 0;
  }

  .sidebar {
    position: relative;
    width: 100%;
    top: auto;
    left: auto;
    padding: 0;
  }

  .contents {
    width: 100%;
    padding: 0 var(--gap-pc);
  }

  .topics-latest-image {
    float: none;
    margin: 0 auto;
  }

  .topics-latest-body {
    width: 100%;
    float: none;
    margin-top: 22px;
    margin-left: 0;
    padding-left: 0;
  }

  .topics-backnumber-item-image {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    float: none;
    max-width: 331px;
    margin: 0 auto;
  }

  .topics-backnumber-item-body {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    float: none;
    margin-left: 0;
    margin-top: 22px;
  }

  .topics-backnumber-item-title {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    padding-left: 0;
  }

  .topics-backnumber-item-published {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    padding-left: 0;
  }

  .topics-backnumber-item-description {
    padding: 11px 0 0 0;
  }

  .topics-latest-title h3 small {
    font-size: var(--fs-md);
  }

  .recent-works-list {
    gap: 55px;
  }

  .recent-works-item {
    gap: 22px;
    flex-direction: column;
  }

  .recent-works-item-wrapper {
    width: 100%;
  }

  .recent-works-item-body {
    padding-left: 0;
  }

  .recent-works-item-image {
    width: 100%;
  }
}

@media screen and (max-width: 899px) {
  .slogan-br {
    display: block !important;
  }
}

@media screen and (max-width: 768px) {
  :root {
    --menu-size: 77px;
    --menu-line: 3px;
    --menu-space: 12px;
  }

  .pc {
    display: none !important;
  }

  .sp {
    display: block !important;
  }

  header {
    height: var(--header-sp);
  }

  header nav {
    display: none;
  }

  main {
    padding-top: var(--header-sp);
  }

  .header-logo img {
    top: calc(50% - var(--logo-sp) / 2);
    left: 16px;
    width: auto;
    height: var(--logo-sp);
    margin-top: 0;
  }

  .mobile-logo img {
    top: 11px;
    left: 16px;
    width: auto;
    height: var(--logo-sp);
    margin-top: 1px;
  }

  .nav-toggle::after,
  .nav-toggle::before {
    position: absolute;
    top: calc(50% - 1px);
    width: calc(var(--menu-size) / 2);
    border-radius: 1.5px;
  }

  .slogan {
    font-size: var(--fs-2xl);
  }

  .lead-copy {
    font-size: var(--fs-base);
    margin-top: 16px;
  }

  .slogan-wrapper {
    top: calc(50% - 124px);
    padding: 22px var(--gap-sp) 23px var(--gap-sp);
  }

  section.keyvisual {
    height: calc(100dvh - var(--header-sp));
  }

  .slideshow-list {
    height: calc(100dvh - var(--header-sp));
  }

  .slideshow-item {
    height: calc(100dvh - var(--header-sp));
  }

  ul.slick-dots {
    gap: 11px;
  }

  ul.slick-dots li {
    width: 11px;
    height: 11px;
  }

  .container {
    padding: 0 var(--gap-sp);
  }

  section#overview {
    padding: 33px 0;
  }

  h2 {
    font-size: var(--fs-xxl);
  }

  h2 sup {
    font-size: var(--fs-xs);
  }

  .overview-description {
    font-size: var(--fs-base);
    margin-top: 16px;
  }

  section#frp {
    padding: 33px 0;
  }

  h3 {
    font-size: var(--fs-xxl);
  }

  .frp-contents {
    padding: 0 var(--gap-sp);
  }

  .frp-image {
    padding: 0 var(--gap-sp);
  }

  .frp-description {
    margin-top: 16px;
  }

  p {
    font-size: var(--fs-base);
  }

  button.button-default {
    max-width: 176px;
    height: 44px;
    border: 2px solid var(--color-primary);
    border-radius: 22px;
    line-height: 39px !important;
    margin-top: 16px;
  }

  section#news {
    padding: 33px 0;
  }

  .title-wrapper {
    margin-bottom: 11px;
  }

  .news-item {
    padding: 11px 0;
  }

  .news-info time {
    font-size: var(--fs-sm);
  }

  .news-category-item span {
    font-size: var(--fs-xs);
  }

  .news-title-text-wrapper {
    margin-top: 5.5px;
  }

  .news-title-text {
    font-size: var(--fs-base);
  }

  .topics-image {
    display: none;
  }

  .topics-item {
    padding: 11px 0;
  }

  .topics-title-text-wrapper {
    width: 100%;
  }

  .topics-description {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    margin-top: 5.5px;
  }

  .link-wrapper {
    margin-top: 22px;
    flex-direction: column;
    gap: 16px;
  }

  .link-wrapper a {
    width: 100%;
    height: 176px;
    padding-top: 0;
  }

  .link-item-text {
    font-size: var(--fs-xxl);
  }

  section#products {
    padding: 33px 0;
  }

  .products-title-wrapper {
    gap: 5.5px 33px;
    flex-direction: column;
  }

  .products-list {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-top: 16px;
  }

  .products-item {
    width: calc(50% - 8px);
  }

  .products-title-text {
    font-size: var(--fs-md);
  }

  .banner-wrapper {
    gap: 16px;
    margin-top: 16px;
  }

  .banner-item {
    height: 220px;
  }

  .banner-item-text {
    font-size: var(--fs-xxl);
  }

  .banner-item-description {
    font-size: var(--fs-base);
  }

  footer {
    padding: 22px var(--gap-sp) 16px var(--gap-sp);
  }

  .footer-wrapper {
    gap: 16px;
    padding: 0 var(--gap-sp);
  }

  .footer-logo img {
    width: 100%;
    height: auto;
    max-width: 331px;
    margin: 0 auto;
  }

  .footer-copyright {
    font-size: var(--fs-xxs);
    margin-top: 11px;
  }

  .nav-mobile-wrapper {
    margin-top: var(--header-sp);
  }

  ul.nav-mobile {
    padding: 22px 22px 0 22px;
    gap: 33px;
    height: auto;
    max-height: calc(100dvh - var(--header-sp));
  }

  .nav-mobile-main-title {
    font-size: var(--fs-md);
    padding-left: 27.5px;
    margin-bottom: 2.75px;
  }

  .nav-mobile-main-title::before {
    width: 16px;
  }

  .nav-mobile-sub {
    padding-left: 27.5px;
  }

  .nav-mobile-sub-title {
    font-size: var(--fs-base);
  }

  .nav-mobile-list-title {
    font-size: var(--fs-sm);
    margin-bottom: 0;
    padding-left: 16px;
  }

  .nav-mobile-list-title::before {
    font-size: var(--fs-sm);
  }

  .nav-mobile-sub-item {
    margin-bottom: 0;
  }

  section.hero h1 {
    font-size: var(--fs-xxl);
  }

  section.hero {
    height: 187px;
  }

  .breadcrumbs {
    font-size: var(--fs-sm);
    padding: 11.5px 0;
  }

  a.home {
    padding-left: 22px;
    background-size: 16px 16px;
    background-position: left 50%;
  }

  .sidebar-title {
    padding: 14px 0 14px var(--gap-sp);
  }

  .sidebar-title span {
    font-size: var(--fs-md);
  }

  ul.sidebar-list li {
    padding: 9.5px 0 9.5px var(--gap-sp);
  }

  ul.sidebar-list li span {
    font-size: var(--fs-base);
  }

  .sidebar-product-title {
    padding: 9.5px 0 9.5px var(--gap-sp);
  }

  .sidebar-product-title span {
    font-size: var(--fs-base);
  }

  ul.sidebar-product-list {
    display: flex !important;
    flex-direction: column !important;
    gap: 0;
    padding: 5.5px 0;
    border-bottom: 1px solid var(--color-gray);
    background-color: rgba(0, 0, 0, 0.055);
  }

  ul.sidebar-product-list a:last-child li {
    border-bottom: none;
  }

  ul.sidebar-product-list li {
    padding: 2.75px 0 2.75px calc(var(--gap-sp) + 16px);
  }

  ul.sidebar-product-list li span {
    font-size: var(--fs-sm);
  }

  section.frp,
  section.about,
  section.works,
  section.publications,
  section.faq {
    gap: 0;
    padding-bottom: 0;
  }

  .contents {
    width: 100%;
    padding: 33px 0;
  }

  .contents h2 {
    font-size: var(--fs-xxl);
    padding-top: 22px;
    padding-bottom: 5.5px;
    margin-bottom: 22px;
  }

  .contents p {
    font-size: var(--fs-base);
  }

  .section-image {
    margin-bottom: 16px;
  }

  .presence .section-image-title {
    padding-bottom: 0;
    margin-bottom: 11px;
  }

  .section-image-title h3 {
    font-size: var(--fs-xl);
    padding-bottom: 5.5px;
    margin-bottom: 0;
  }

  .section-image-description {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    margin-bottom: 16px;
  }

  .section-image-subtitle h4 {
    font-size: var(--fs-md);
    margin-bottom: 5.5px;
  }

  .section-description {
    margin-bottom: 16px;
  }

  .section-image-caption {
    font-size: var(--fs-sm);
  }

  .section-image.quarter {
    width: 49%;
    float: left;
    margin-right: 2%;
  }

  .section-image.quarter:nth-child(4n+4) {
    float: right;
    margin-right: 0 !important;
  }

  .section-image.quarter:nth-child(2n+1) {
    margin-right: 0 !important;
  }

  .contact-wrapper {
    margin-top: 33px;
  }

  .contact-head h5 {
    font-size: var(--fs-xl);
  }

  .contact-head {
    margin-bottom: 16px;
  }

  .contact-body {
    gap: 16px 33px;
    flex-direction: column;
  }

  .contact-logo {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
  }

  .contact-logo img {
    max-width: 100%;
    max-height: 88px;
  }

  .contact-name h4 {
    font-size: var(--fs-md);
  }

  .greeting-image {
    width: 100%;
    max-width: 100%;
    height: auto;
    float: none;
    margin-left: 0;
    margin-bottom: 16px;
  }

  table.history-table tbody tr th {
    width: 110px;
    padding: 9.5px 0;
    font-size: var(--fs-base);
  }

  table.history-table tbody tr td {
    width: calc(100% - 110px);
    height: auto;
    padding: 9.5px 0 9.5px 0;
    font-size: var(--fs-base);
  }

  section.news-archive {
    padding: 33px 0;
  }

  .news-pager {
    margin-top: 33px;
  }

  .page-numbers {
    font-size: var(--fs-base);
    line-height: 40px;
  }

  section.page-static {
    padding: 33px 0;
  }

  .news-single__meta {
    margin-bottom: 5.5px;
  }

  .news-single__title {
    font-size: var(--fs-xl);
  }

  .news-single__head {
    padding-bottom: 11px;
    margin-bottom: 22px;
  }

  .page-body {
    min-height: calc(100vh - 572px);
  }

  section.topics-archive {
    padding: 33px 0;
  }

  section.topics-archive h2 {
    font-size: var(--fs-xxl);
    padding-bottom: 5.5px;
    margin-bottom: 16px;
  }

  .topics-latest {
    margin-top: 16px;
  }

  .topics-latest-pdf {
    gap: 5.5px;
    margin-top: 5.5px;
  }

  .topics-latest-pdf span {
    font-size: var(--fs-sm);
  }

  .topics-latest-pdf img {
    width: 16px;
    margin-top: 3px;
  }

  .topics-latest-body {
    margin-top: 11px;
  }

  .topics-latest-title h3 {
    font-size: var(--fs-xl);
    margin-bottom: 16px;
    gap: 0 16px;
  }

  .topics-latest-title h3 small {
    font-size: var(--fs-base);
  }

  .topics-latest-description {
    margin-bottom: 16px;
  }

  .topics-backnumber {
    gap: 22px;
  }

  .topics-backnumber-item {
    width: calc(50% - 11px);
  }

  .topics-backnumber-item-pdf span {
    font-size: var(--fs-sm);
  }

  .topics-backnumber-item-title h4 {
    font-size: var(--fs-xl);
  }

  .topics-backnumber-item-published span {
    font-size: var(--fs-base);
  }

  .topics-backnumber-item-body {
    margin-top: 11px;
  }

  section.works-archive {
    padding: 33px 0;
  }

  section.works-archive h2 {
    font-size: var(--fs-xxl);
    padding-bottom: 5.5px;
    margin-bottom: 16px;
  }

  button.button-works {
    margin-bottom: 16px;
  }

  table.works-tbl th {
    padding: 5.5px;
  }

  table.works-tbl td {
    padding: 5.5px;
  }

  .recent-works-list {
    margin-top: 16px;
  }

  .recent-works-item-header {
    gap: 16px;
  }

  .recent-works-item-no {
    width: 66px;
    font-size: var(--fs-base);
    line-height: 32px;
  }

  .recent-works-item-construction {
    font-size: var(--fs-base);
  }

  .recent-works-item-location {
    font-size: var(--fs-base);
  }

  .recent-works-item-body {
    margin-top: 16px;
  }

  .recent-works-item-title {
    font-size: var(--fs-xl);
    margin-bottom: 16px;
  }

  .recent-works-item-description {
    font-size: var(--fs-base);
  }

  .sidebar-item-wrapper {
    padding: 0;
    gap: 16px;
  }

  .sidebar-item-no {
    font-size: var(--fs-base);
  }

  .sidebar-item-body {
    overflow: hidden;
    position: relative;
    width: auto;
    height: auto;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 0;
  }

  section.works-single {
    padding: 0;
    gap: 0;
  }

  section.works-single h2 {
    font-size: var(--fs-xxl);
  }

  section.works-single h3 {
    font-size: var(--fs-md);
  }

  .works-hr {
    margin: 5.5px 0 16px 0;
  }

  .works-article-section-images {
    margin-top: 16px;
    gap: 16px 0;
  }

  .works-article-section-image.half {
    width: 100%;
    padding-right: 0;
    float: none;
  }

  .works-article-section-image.half:nth-child(2n) {
    padding-left: 0;
    float: none;
  }

  .works-article-section-image img {
    margin-bottom: 5.5px;
  }

  .works-article-image-caption {
    font-size: var(--fs-sm);
  }

  .works-article-section-heading {
    font-size: var(--fs-base);
  }

  .works-article-description {
    margin-top: 55px;
  }

  .publications-item {
    flex-direction: column;
    gap: 16px;
    border-bottom: 1px solid var(--color-primary);
    padding-bottom: 22px;
    margin-bottom: 22px;
  }

  .publications-item-image {
    margin: 0 auto;
  }

  .publications-item-body {
    width: 100%;
  }

  .publications-item-body h4 {
    font-size: var(--fs-lg);
    margin-bottom: 16px;
  }

  .publications-item-description {
    margin-bottom: 16px;
  }

  .publications-item-pdf {
    font-size: var(--fs-base);
    margin-bottom: 11px;
  }

  .publications-item-table-of-contents-wrapper {
    margin-top: 0;
  }

  .publications-item-table-of-contents h5 {
    font-size: var(--fs-md);
    padding-top: 16px;
    margin-top: 16px;
    margin-bottom: 5.5px;
    border-top: 1px dashed var(--color-gray);
  }

  .publications-item-table-of-contents h6 {
    font-size: var(--fs-base);
  }

  .publications-item-table-of-contents ul li {
    font-size: var(--fs-base);
    padding-left: 42px;
  }

  .publications-item-button {
    font-size: var(--fs-base);
  }

  .section-wrapper h3 {
    padding-bottom: 0;
    margin-bottom: 16px;
  }

  .publications-item-description:not(:has(+ *)) {
    margin-bottom: 0;
  }

  .references-list {
    overflow: hidden;
    position: relative;
    width: 100%;
    height: auto;
    margin-top: 55px;
  }

  .section-wrapper h3 {
    font-size: var(--fs-xl);
  }

  table.references-tbl th {
    font-size: var(--fs-base);
    padding: 5.5px;
  }

  table.references-tbl td {
    font-size: var(--fs-base);
    padding: 5.5px;
  }

  table.references-tbl th:nth-child(2),
  table.references-tbl td:nth-child(2) {
    width: auto;
    min-width: 88px;
    max-width: max-content;
    text-align: center;
  }

  span.faq-item__question {
    font-size: var(--fs-base);
  }

  span.faq-item__answer {
    font-size: var(--fs-base);
  }

  summary.faq-item__q::before {
    top: 18px;
  }

  summary.faq-item__q {
    padding-left: 44px;
  }

  details.faq-item {
    padding: 16px 0;
  }

  .faq-item__a {
    width: calc(100% - 44px);
    margin-top: 16px;
    margin-left: 44px;
    padding: 16px 0 0 0;
  }

  span.faq-item__badge--a {
    top: 3px;
  }

  .faq-description {
    margin-bottom: 16px;
  }

  .page-body h2 {
    font-size: var(--fs-xxl);
    padding-bottom: 5.5px;
    margin-bottom: 16px;
  }

  .page-body p {
    font-size: var(--fs-base);
  }

  table.contact-tbl th {
    width: 100%;
    display: block;
  }

  table.contact-tbl th p {
    font-size: var(--fs-base);
    font-weight: 500;
    margin-bottom: 5.5px;
  }

  table.contact-tbl td {
    font-size: var(--fs-base);
    width: 100%;
    display: block;
  }

  .submit-wrapper p {
    margin-bottom: 0 !important;
  }

  input[type="submit"] {
    margin-top: 16px;
  }

  .page-body h4 {
    font-size: var(--fs-xl);
    padding-bottom: 5.5px;
    margin-bottom: 16px;
  }

  .privacy-policy-list {
    margin-top: 22px;
    gap: 16px;
  }

  .privacy-policy-item__title {
    font-size: var(--fs-md);
    margin-bottom: 5.5px;
  }

  .privacy-policy-item__description {
    font-size: var(--fs-base);
    padding-left: 22px;
  }

  .page-body--copyright {
    min-height: auto !important;
  }

  .page-body__action {
    margin-top: 11px;
  }

  .overview-description small {
    font-size: var(--fs-xs);
    margin-top: 16.5px;
  }

  .sign .position {
    font-size: var(--fs-sm);
  }

  .sign .name {
    font-size: var(--fs-xl);
  }

  .member-type {
    width: 100%;
    height: auto;
    float: none;
    border-bottom: 1px solid var(--color-gray);
    padding-bottom: 3px;
    margin-bottom: 6px;
  }

  .member-list {
    width: 100%;
    height: auto;
    float: none;
    margin-left: 0;
    column-count: 2;
  }

  .member-item {
    width: auto;
    height: auto;
    float: none;
    font-size: var(--fs-base);
    font-weight: 400;
    line-height: 1.75;
    letter-spacing: 0.05em;
  }
}

@media screen and (max-width: 499px) {
  .products-item {
    width: 100%;
  }

  .section-image.half {
    width: 100%;
    float: none;
    margin-right: 0;
  }

  .topics-backnumber-item {
    width: 100%;
  }

  .topics-backnumber {
    gap: 55px 22px;
  }

  .member-list {
    column-count: 1;
  }
}