@charset "UTF-8";
/* ===================================================
   数字で見る東洋建設 — style.css
   =================================================== */
/* ---------- Custom Properties ---------- */
:root {
  --color-bg: #B9D9F2;
  --color-bg-dark: #B0CFEA;
  --color-bg-card: #ffffff;
  --color-primary: #035B9C;
  --color-blue: #3478C5;
  --color-blue-light: #88BDE8;
  --color-green: #2D8C5A;
  --color-purple: #7265B5;
  --color-text: #000000;
  --color-text-muted: #5A7AA0;
  --color-footer-dark: #2B3A4E;
  --radius-card: 12px;
  --shadow-card: 0 2px 12px rgba(27, 60, 110, 0.10);
  --header-height: 88px;
  --content-width: 1140px;
  --gap-section: 60px;
}

/* ---------- Reset & Base ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Roboto", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  background-color: var(--color-bg);
  color: var(--color-text);
  font-size: 15px;
  line-height: 1.7;
  overflow-x: hidden;
}

img,
svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

ul,
ol {
  list-style: none;
}

sup {
  font-size: 0.65em;
  vertical-align: super;
}

/* ---------- Layout Helpers ---------- */
main > * {
  margin-inline: 10px;
}

.content-wrap {
  max-width: var(--content-width);
  margin-inline: auto;
  padding-inline: 24px;
}

/* ===================================================
   HEADER
   =================================================== */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: transparent;
  max-width: var(--content-width);
  margin-inline: auto;
}

.header-inner {
  display: flex;
  align-items: center;
  gap: 32px;
  max-width: calc(100% - 20px);
  margin: 16px auto 0;
  padding: 0 24px;
  height: 56px;
  background: var(--color-bg-card);
  border-radius: 40px;
  box-shadow: 0 2px 16px rgba(27, 60, 110, 0.12);
}

/* Logo */
.site-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.site-logo img {
  aspect-ratio: 4/1;
  width: 160px;
  height: auto;
}

.logo-mark {
  flex-shrink: 0;
}

.logo-text {
  font-size: 18px;
  font-weight: 900;
  color: var(--color-primary);
  white-space: nowrap;
}

/* Desktop nav */
.desktop-nav {
  margin-left: auto;
}

.desktop-nav ul {
  display: flex;
  align-items: center;
  gap: 36px;
}

.desktop-nav a {
  font-size: 16px;
  font-weight: 700;
  color: #2c3e50;
  white-space: nowrap;
  transition: opacity 0.2s;
}

.desktop-nav a:hover {
  opacity: 0.65;
}

/* Hamburger */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  margin-left: auto;
  flex-shrink: 0;
}

.hamburger-line {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--color-primary);
  border-radius: 2px;
  transition: transform 0.3s, opacity 0.3s;
  transform-origin: center;
}

.hamburger[aria-expanded=true] .hamburger-line:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.hamburger[aria-expanded=true] .hamburger-line:nth-child(2) {
  opacity: 0;
}

.hamburger[aria-expanded=true] .hamburger-line:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Mobile nav */
.mobile-nav {
  max-width: 1360px;
  margin: 4px auto 0;
  padding: 8px 24px 16px;
  background: var(--color-bg-card);
  border-radius: 0 0 20px 20px;
  box-shadow: 0 8px 20px rgba(27, 60, 110, 0.12);
}

.mobile-nav[hidden] {
  display: none;
}

.mobile-nav ul {
  display: flex;
  flex-direction: column;
}

.mobile-nav a {
  display: block;
  padding: 12px 4px;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-primary);
  border-bottom: 1px solid #E8F0F8;
}

.mobile-nav li:last-child a {
  border-bottom: none;
}

/* ===================================================
   HERO
   =================================================== */
.hero {
  min-height: 280px;
  padding-top: calc(var(--header-height) + 32px);
  padding-bottom: 80px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  background-color: #E3F2FD;
  position: relative;
  margin-left: 0;
  margin-right: 0;
}
.hero__content {
  width: 100%;
  position: relative;
}
.hero__wave {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 200px;
  overflow: hidden;
}
@media (max-width: 600px) {
  .hero__wave {
    height: 160px;
  }
}
.hero__wave img {
  width: 100%;
  height: 200px;
  object-fit: fill;
}
@media (max-width: 600px) {
  .hero__wave img {
    height: 160px;
  }
}

.hero-title {
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 900;
  color: var(--color-primary);
  letter-spacing: 0.02em;
  margin-bottom: 28px;
}

/* Anchor nav */
.anchor-nav {
  max-width: calc(100% - 20px);
  width: 800px;
  background: var(--color-bg-card);
  border-radius: 10px;
  padding: 16px 10px;
  box-shadow: 0 2px 12px rgba(27, 60, 110, 0.1);
  margin-left: auto;
  margin-right: auto;
}

.anchor-nav ul {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 64px;
}

.anchor-nav a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  font-size: 16px;
  font-weight: 500;
  color: #298fca;
  white-space: nowrap;
  border-bottom: 1px solid #298fca;
  padding: 4px 8px;
  transition: opacity 0.2s;
  width: 148px;
  max-width: 100%;
}
.anchor-nav a svg {
  color: #048;
}

.anchor-nav a:hover {
  opacity: 0.7;
}

/* ===================================================
   SECTION COMMON
   =================================================== */
.page-section {
  padding: 60px 0 96px;
  scroll-margin-top: calc(var(--header-height) + 16px);
}
.page-section.-first {
  padding: 0 0 96px;
}
.page-section.-end {
  padding: 0 0 48px;
}

.page-section + .page-section {
  padding-top: 0;
}

.section-header-wrap {
  text-align: center;
  margin-bottom: 40px;
}

.section-title {
  font-size: clamp(22px, 3vw, 28px);
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 16px;
}

/* Centered content wrapper inside sections */
.page-section > *:not(.-gutter) {
  max-width: var(--content-width);
  margin-inline: auto;
}

.page-wrapper {
  max-width: var(--content-width);
  margin-inline: auto;
  padding-inline: 24px;
}

/* Dots decoration */
.dots-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--color-blue-light);
}

.dot--mid {
  background: #5B9BD5;
}

.dot--dark {
  background: var(--color-primary);
}

/* Subsection title */
.subsection-title {
  font-size: 24px;
  font-weight: 700;
  color: var(--color-primary);
  text-align: center;
  margin-bottom: 1em;
}

/* ===================================================
   KPI CARDS  (共通カード)
   =================================================== */
.kpi-card {
  background: var(--color-bg-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: 28px 20px 24px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.kpi-card__label {
  font-size: 24px;
  font-weight: 900;
  color: var(--color-primary);
}

.kpi-card__icon {
  width: 160px;
  height: 160px;
  padding: 10px;
}
.kpi-card__icon img {
  aspect-ratio: 1/1;
  height: auto;
}

.kpi-card__icon svg {
  width: 100%;
  height: 100%;
}

.kpi-card__number {
  font-size: 14px;
  color: var(--color-primary);
  display: flex;
  align-items: baseline;
  gap: 2px;
  flex-wrap: wrap;
  justify-content: center;
}

.kpi-card__number strong {
  font-size: clamp(28px, 4.5vw, 48px);
  font-weight: 900;
  color: var(--color-primary);
  line-height: 1;
}

.kpi-card__number--inline {
  flex-wrap: wrap;
}

.kpi-card__note {
  font-size: 12px;
  color: var(--color-primary);
  margin-top: -8px;
}

.unit {
  font-size: 16px;
  font-weight: 500;
  color: var(--color-primary);
}

.number-sep {
  display: inline-block;
  width: 12px;
}

/* ===================================================
   企業情報 — KPI CARDS grid
   =================================================== */
.kpi-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
  margin-bottom: 50px;
}

/* ===================================================
   企業情報 — SEGMENT CHART
   =================================================== */
.chart-block {
  background: var(--color-bg-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  display: flex;
  align-items: center;
  gap: 32px;
  padding: 24px 32px;
  margin-bottom: 32px;
}

.chart-block__visual {
  flex-shrink: 0;
  width: 160px;
  height: 160px;
}

.donut-svg {
  width: 100%;
  height: 100%;
}

.chart-block__info {
  flex: 1;
  min-width: 0;
  width: 100%;
}

.chart-block__title {
  font-size: 24px;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 16px;
  text-align: center;
}

.chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
}

.chart-legend li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--color-primary);
}

.legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* ===================================================
   企業情報 — 業績ハイライト
   =================================================== */
.highlight-wrap {
  background: var(--color-bg-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: 32px;
  margin-bottom: 50px;
}

.highlight-wrap .subsection-title {
  margin-bottom: 24px;
}

.highlight-wrap .chart-container {
  height: 350px;
  max-width: 100%;
  margin-bottom: 32px;
}

.row-sales {
  background-color: rgba(0, 119, 192, 0.05);
  color: var(--color-blue);
  font-size: 15px;
}

.highlight-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
  margin-bottom: 50px;
}

.highlight-grid .kpi-card {
  box-shadow: 0 1px 6px rgba(27, 60, 110, 0.08);
}

/* Harbor image placeholder */
.highlight-image {
  border-radius: var(--radius-card);
  background: url(./image/fig-crane@2x.webp) no-repeat;
  background-size: cover;
}

/* ===================================================
   企業情報 — BAR CHART（社員数推移）
   =================================================== */
.graph-block {
  background: var(--color-bg-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: 32px;
  margin-bottom: 50px;
}
.graph-block.-m0 {
  margin-bottom: 0px;
}

.graph-block .chart-block__title {
  text-align: center;
  margin-bottom: 8px;
}

.graph-note {
  font-size: 14px;
  color: #333333;
  text-align: left;
  margin-top: 24px;
}

.bar-chart {
  overflow-x: auto;
  padding-bottom: 4px;
}

.bar-chart__bars {
  display: flex;
  align-items: flex-end;
  gap: 20px;
  height: 160px;
  padding-bottom: 28px;
  position: relative;
}

.bar-chart__bars::after {
  content: "";
  position: absolute;
  bottom: 28px;
  left: 0;
  right: 0;
  height: 1px;
  background: #D0E0F0;
}

.bar-group {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  position: relative;
}

.bar-wrap {
  flex: 1;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  gap: 4px;
}

.bar-val {
  font-size: 11px;
  font-weight: 700;
  color: var(--color-primary);
  white-space: nowrap;
}

.bar {
  width: 100%;
  max-width: 60px;
  height: var(--h);
  background: var(--color-blue);
  border-radius: 4px 4px 0 0;
  transition: opacity 0.2s;
}

.bar:hover {
  opacity: 0.8;
}

.bar-year {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-top: 6px;
  position: absolute;
  bottom: 0;
}

/* ===================================================
   事業内容・業績 — BUSINESS GRID
   =================================================== */
.business-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 32px;
  margin-bottom: 50px;
}

.business-card:nth-child(-n+2) {
  grid-column: span 3;
}

.business-card:nth-child(n+3) {
  grid-column: span 2;
}

/* Business card */
.business-card {
  background: var(--color-bg-card);
  border-radius: 20px;
  box-shadow: var(--shadow-card);
  padding: 32px 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.business-card__title {
  font-size: 24px;
  font-weight: 900;
  color: var(--color-primary);
  text-align: center;
  line-height: 1.4;
}

.business-card__title--purple {
  color: #5c6bc0;
}

.business-card__title--green {
  color: #2d8c5a;
}

.business-card__desc {
  font-size: 18px;
  color: var(--color-text);
  line-height: 1.6;
  width: 100%;
}

.business-card__icon {
  width: 164px;
  height: 164px;
  padding: 10px;
  margin: 0 auto;
}

.business-card__icon img {
  aspect-ratio: 1/1;
  height: auto;
}

.business-card__number {
  font-size: 18px;
  font-weight: 900;
  color: var(--color-primary);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 4px;
}
.business-card__number.-gap0 {
  margin-top: -16px;
}

.business-card__number strong {
  font-size: 36px;
  font-weight: 900;
  color: var(--color-primary);
  line-height: 1.4;
}

.business-card__number .unit {
  padding-bottom: 4px;
  color: var(--color-primary);
  font-weight: 900;
}
.business-card__number .unit--purple {
  color: #5c6bc0;
}
.business-card__number .unit--green {
  color: #2d8c5a;
}

.business-card__number--purple strong,
.business-card__number--purple {
  color: #5c6bc0;
}

.business-card__number--green strong,
.business-card__number--green {
  color: #2d8c5a;
}

/* KPI banner — 全幅ソリッド帯 */
.kpi-banner {
  width: 100%;
  padding: 6px 12px;
  font-size: 24px;
  font-weight: 900;
  color: #fff;
  text-align: center;
  border-radius: 4px;
}

.kpi-banner--blue {
  background: #0077C0;
}

.kpi-banner--green {
  background: var(--color-green);
}

.kpi-banner--purple {
  background: var(--color-purple);
}

/* KPI badge */
.kpi-badge {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4px 0;
  font-size: 24px;
  font-weight: 900;
  text-align: center;
  width: 100%;
}

.kpi-badge--blue {
  background: #7bc0ed;
  color: #035b9c;
}

.kpi-badge--green {
  background: #78d1b3;
  color: #1f5e3d;
}

.kpi-badge--purple {
  background: #5c6bc0;
  color: #fff;
}

/* 施工実績レイアウト（アイコン左 + リスト右） */
.sekou-layout {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
  width: 100%;
  margin-top: 24px;
}
.sekou-layout .business-card__icon {
  flex-shrink: 0;
  margin: 0;
}

/* 施工実績リスト */
.sekou-list {
  display: inline-flex;
  flex-direction: column;
  gap: 12px;
}

.sekou-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.sekou-icon {
  width: 44px;
  height: 38px;
  flex-shrink: 0;
}

.sekou-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-green);
  white-space: nowrap;
}

.sekou-num {
  font-size: 36px;
  font-weight: 900;
  color: var(--color-green);
  line-height: 1;
  font-family: "Noto Sans JP", sans-serif;
}

.sekou-unit {
  font-size: 16px;
  font-weight: 700;
  color: var(--color-green);
  white-space: nowrap;
}

/* Text links */
.text-link {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-blue);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s;
  border-color: var(--color-blue);
}

.text-link:hover {
  border-color: transparent;
}

.text-link--sm {
  font-size: 12px;
}

.text-links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: auto;
}

.btn-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 22px;
  border-radius: 30px;
  border: 2px solid currentColor;
  font-size: 16px;
  font-weight: 400;
  text-decoration: none;
  transition: background-color 0.2s, color 0.2s;
}
.btn-pill--blue {
  color: var(--color-primary);
}
.btn-pill--blue:hover {
  background-color: var(--color-primary);
  color: #fff;
}
.btn-pill--green {
  color: #2d8c5a;
}
.btn-pill--green:hover {
  background-color: #2d8c5a;
  color: #fff;
}
.btn-pill--purple {
  color: #5c6bc0;
}
.btn-pill--purple:hover {
  background-color: #5c6bc0;
  color: #fff;
}

.business-card--gx .text-link {
  font-size: 16px;
  color: #5c6bc0;
}
.business-card--gx .text-link:hover {
  border-color: #5c6bc0;
}

/* ===================================================
   事業内容・業績 — 主な完成工事テーブル
   =================================================== */
.completed-works-section {
  background: #fff;
  padding-block: 40px;
}

.completed-works {
  margin-bottom: 0;
}

.completed-works__title {
  font-size: 24px;
  font-weight: 900;
  color: #035b9c;
  text-align: center;
  line-height: 1.4;
  margin-bottom: 24px;
}

.table-scroll {
  overflow-x: auto;
  width: 880px;
  max-width: 100%;
  margin: 0 auto;
}

.works-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0 3px;
  background: transparent;
  font-size: 16px;
}

.works-table thead tr {
  background: #004488;
  color: #fff;
}

.works-table th {
  padding: 10px 20px;
  font-weight: 700;
  background: #004488;
}

.works-table th:first-child {
  width: 9%;
  min-width: 60px;
  font-size: 18px;
  padding: 10px 10px;
  text-align: center;
}

.works-table th:nth-child(2) {
  width: 20%;
  min-width: 160px;
  font-size: 18px;
  text-align: center;
}

.works-table th:last-child {
  font-size: 16px;
  text-align: left;
}
.works-table th:last-child.-subname {
  text-align: center;
}

.works-table tbody tr:nth-child(even),
.works-table tbody tr:nth-child(odd) {
  background: transparent;
}

.works-table td {
  padding: 10px 20px;
  vertical-align: middle;
  border: none;
  line-height: 1.4;
}

.works-table td {
  background: #eceff1;
  color: #212121;
  font-size: 16px;
}
.works-table td.-type {
  color: #fff;
}
.works-table td.-type.-c1 {
  background-color: var(--color-blue);
}
.works-table td.-type.-c2 {
  background-color: var(--color-green);
}
.works-table td.-owner {
  background: #cfd8dc;
  color: #004488;
  font-weight: 500;
  font-size: 16px;
  text-align: center;
  white-space: nowrap;
  width: 27%;
  min-width: 160px;
}

/* ===================================================
   事業内容・業績 — 完成工事の工種比率
   =================================================== */
.kosei-panel {
  background: #e6f2ff;
  padding: 45px 35px;
  border-radius: 0;
  margin-bottom: 32px;
}

.kosei-header {
  border-left: 6px solid #004488;
  padding-left: 18px;
  margin-bottom: 40px;
}

.kosei-header__title {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  color: #003366;
  letter-spacing: 0.05em;
}

.kosei-chart-unit {
  margin-bottom: 50px;
}

.kosei-chart-unit__label {
  display: block;
  font-size: 18px;
  font-weight: 900;
  color: #003366;
  margin-bottom: 15px;
  border-bottom: 2px solid rgba(0, 68, 136, 0.1);
  padding-bottom: 5px;
}

.kosei-chart-container {
  position: relative;
  height: 120px;
  width: 100%;
}

.kosei-data-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 60px;
  background: #fff;
  padding: 35px;
}

.kosei-data-group h4 {
  font-size: 15px;
  margin: 0 0 15px;
  border-bottom: 2px solid #e6f2ff;
  padding-bottom: 8px;
  color: #003366;
}

.kosei-data-item {
  display: flex;
  align-items: center;
  font-size: 13px;
  padding: 7px 0;
  color: #333;
  border-bottom: 1px solid #f8fafc;
}

.kosei-color-chip {
  width: 12px;
  height: 12px;
  display: inline-block;
  margin-right: 12px;
  flex-shrink: 0;
}

.kosei-item-name {
  flex-grow: 1;
  text-align: left;
}

.kosei-item-val {
  font-weight: 900;
  color: #003366;
  width: 55px;
  text-align: right;
}

/* ===================================================
   働く環境 — 有資格者
   =================================================== */
.qualifications-block {
  background: var(--color-bg-card);
  border-radius: 20px;
  box-shadow: var(--shadow-card);
  padding: 48px 10px;
  margin-bottom: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
}

.qualifications-block .subsection-title {
  font-size: 24px;
  font-weight: 900;
  margin-bottom: 0;
}

.qual-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, 400px);
  justify-content: center;
  column-gap: 10%;
  row-gap: 16px;
  width: 100%;
  max-width: 100%;
}

.qual-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 0;
  border-bottom: none;
  width: 400px;
  max-width: 100%;
}

.-medal {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}

.qual-name {
  flex: 1;
  font-size: 20px;
  font-weight: 500;
  color: var(--color-primary);
}

.qual-num {
  font-size: 20px;
  font-weight: 500;
  color: #333;
  white-space: nowrap;
  min-width: 70px;
  text-align: right;
}

/* ===================================================
   働く環境 — KPI grid
   =================================================== */
.work-kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 32px;
}

/* ===================================================
   働く環境 — 新卒採用実績
   =================================================== */
.recruit-block {
  background: var(--color-bg-card);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
}

.note-section {
  display: flex;
  flex-direction: column;
  gap: 16px;
  font-size: 14px;
  margin-top: 32px;
  margin-bottom: 0;
  border-radius: var(--radius-card);
}
.note-section__ttl {
  text-align: center;
  font-weight: 700;
}
.note-section__lead {
  margin-top: 15px;
  padding-bottom: 3px;
  border-bottom: 1px solid #000;
  font-weight: 700;
}
.note-section__sublead {
  font-weight: 700;
  margin-bottom: -10px;
}
.note-section .-indent p {
  text-indent: -1em;
  margin-left: 1em;
}

/* ===================================================
   FOOTER
   =================================================== */
.site-footer {
  margin-top: 0;
  background: #fff;
}

.footer-upper {
  background: #fff;
  padding: 24px 40px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
  max-width: 1200px;
  margin: 0 auto;
}

.footer-logo {
  display: block;
}
.footer-logo img {
  aspect-ratio: 160/42;
  width: 160px;
  height: auto;
}

.footer-nav ul {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0;
}

.footer-nav li + li::before {
  content: "｜";
  padding: 0 10px;
  color: #ccc;
}

.footer-nav a {
  font-size: 14px;
  color: #000;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: opacity 0.2s;
}

.footer-nav a:hover {
  opacity: 0.7;
}

.footer-lower {
  background: #263238;
  text-align: center;
  padding: 16px;
}

.footer-lower p {
  font-size: 14px;
  color: #fff;
}

/* ===================================================
   PAGE TOP BUTTON
   =================================================== */
.page-top {
  position: fixed;
  bottom: 32px;
  right: 28px;
  width: 48px;
  height: 48px;
  background: var(--color-blue);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(27, 60, 110, 0.25);
  z-index: 90;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s, transform 0.3s;
  transform: translateY(8px);
}

.page-top.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.page-top:hover {
  background: var(--color-primary);
}

.segment-cards {
  display: flex;
  gap: 30px;
  align-items: flex-start;
  margin-bottom: 50px;
}
.segment-cards__fig {
  width: calc(33.3% - 15px);
  aspect-ratio: 36/40;
  border-radius: var(--radius-card);
  background: url(./image/fig-ship@2x.webp) no-repeat;
  background-size: cover;
  background-position: center center;
}
.segment-cards__main {
  display: flex;
  padding: 32px 40px;
  justify-content: center;
  align-items: flex-start;
  gap: 10px;
  align-self: stretch;
  flex: 1;
  min-width: 0;
  margin-bottom: 0;
}

.section-freshers {
  display: flex;
  align-items: center;
  gap: 20px;
  align-self: stretch;
  justify-content: center;
  margin-bottom: 0;
}
.section-freshers__main {
  min-width: 0;
  width: 620px;
  max-width: 100%;
}
.section-freshers__main .more {
  text-align: center;
}
@media (max-width: 600px) {
  .section-freshers__sub {
    width: 100%;
  }
}

/* ===================================================
   セグメント別売上構成比 — Chart.js ドーナツグラフ
   =================================================== */
/* ドーナツグラフ本体のラッパー — 縦積みレイアウト */
/* canvas ラッパー */
.chart-container {
  width: 100%;
  margin: 0 auto 24px;
  position: relative;
}
.chart-container canvas {
  display: block;
}
.chart-container.-segmentc {
  aspect-ratio: 71/58;
  width: 570px;
  max-width: 100%;
  z-index: 2;
}
.chart-container.-empc {
  height: 380px;
}
.chart-container.-recc {
  aspect-ratio: 62/50;
  width: 100%;
  margin: 0;
}
.chart-container.-gendc {
  aspect-ratio: 1/1;
  width: 320px;
  max-width: 100%;
  margin: 0;
}

/* segmentChart 外部 tooltip — body 直下に配置して z-index を確保 */
#seg-chart-tooltip {
  position: absolute;
  z-index: 9999;
  pointer-events: none;
  background: rgba(27, 60, 110, 0.92);
  color: #fff;
  font-size: 13px;
  padding: 8px 14px;
  border-radius: 8px;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.1s;
  transform: translate(-50%, calc(-100% - 10px));
}

/* データリスト — グラフ下の一覧テーブル */
.data-list-container {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 4px 20px;
}

.data-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 0;
  font-size: 14px;
  color: #333;
  border-bottom: 1px solid #e2e8f0;
}
.data-item:last-child {
  border-bottom: none;
}

.color-chip {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 2px;
  flex-shrink: 0;
}

.item-name {
  flex: 1;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  color: var(--color-primary);
  font-size: 14px;
}

.item-sales {
  font-family: "Roboto", "Noto Sans JP", sans-serif;
  font-weight: 900;
  font-size: 15px;
  color: #004080;
  white-space: nowrap;
}

.item-percent {
  font-family: "Roboto", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 15px;
  color: #666;
  width: 44px;
  text-align: right;
  white-space: nowrap;
}

/* ===================================================
   社員数推移グラフ・テーブル
   =================================================== */
.data-table-wrapper {
  width: 100%;
  overflow-x: auto;
  margin-bottom: 16px;
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  min-width: 560px;
}
.data-table th,
.data-table td {
  padding: 12px 10px;
  border-bottom: 1px solid #eef2f6;
  text-align: right;
}
.data-table th {
  font-weight: bold;
  text-align: left;
  width: 200px;
  color: var(--color-primary);
}
.data-table thead td {
  background-color: #f1f8ff;
  text-align: center;
  font-weight: bold;
  color: var(--color-primary);
}

.main-metrics-group {
  border-bottom: 2px solid var(--color-primary);
}

.row-employee {
  background-color: rgba(0, 119, 192, 0.05);
  font-size: 15px;
}
.row-employee th {
  color: var(--color-primary);
}

.sub-metrics-group th {
  color: #555;
  background-color: #fcfcfc;
  font-size: 13px;
  font-weight: 700;
}
.sub-metrics-group td {
  color: #666;
  font-size: 13px;
}

.plus {
  color: var(--color-primary);
}

.minus {
  color: #d32f2f;
}

.waiting {
  color: #999;
}

/* ===================================================
   受注高・売上高グラフ
   =================================================== */
.charts-row {
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
  margin-bottom: 32px;
}

.chart-unit {
  flex: 1 1 0;
  min-width: 280px;
}

.chart-title {
  font-size: 18px;
  font-weight: 900;
  color: var(--color-primary);
  text-align: center;
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 2px solid #eef2f6;
}

.charts-row .chart-container {
  height: 360px;
  max-width: 100%;
  margin: 0;
}

.table-section-title {
  font-size: 18px;
  font-weight: 900;
  color: var(--color-primary);
  text-align: center;
  margin: 32px 0 14px;
}

.row-label-group {
  text-align: left !important;
  padding-left: 15px !important;
  font-weight: 900;
  width: 90px;
}

.data-table thead th {
  text-align: center;
  width: auto;
}

.bg-order-head {
  background-color: #e6f0ff;
  color: #004080;
}

.bg-sales-head {
  background-color: #e6f5eb;
  color: #006633;
}

.bg-order-row {
  background-color: #fcfdfe;
}

.bg-sales-row {
  background-color: #fcfefd;
}

.val-total-order {
  color: #004080;
  font-weight: 900;
  background-color: #f0f7ff;
}
.val-total-order td {
  font-family: "Roboto", sans-serif;
}

.val-total-sales {
  color: #006633;
  font-weight: 900;
  background-color: #f0fff4;
}
.val-total-sales td {
  font-family: "Roboto", sans-serif;
}

.br-pc {
  display: inline-block;
}

.br-sp {
  display: none;
}

/* ===================================================
   RESPONSIVE — Tablet (≤900px)
   =================================================== */
@media (max-width: 900px) {
  :root {
    --content-width: 100%;
  }
  .desktop-nav {
    display: none;
  }
  .hamburger {
    display: flex;
  }
  .kosei-chart-unit__label {
    font-size: 16px;
  }
  .kosei-header__title,
  .qualifications-block .subsection-title {
    font-size: 18px;
  }
  .kpi-card__label,
  .subsection-title,
  .chart-block__title,
  .business-card__title,
  .kpi-badge,
  .kpi-banner,
  .completed-works__title {
    font-size: 20px;
  }
  .kpi-cards {
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 32px;
  }
  .highlight-grid {
    grid-template-columns: 1fr 1fr;
  }
  .highlight-image {
    grid-column: 1/-1;
    min-height: 180px;
  }
  .highlight-wrap,
  .graph-block {
    padding: 32px 24px;
  }
  .segment-cards,
  .highlight-wrap,
  .graph-block {
    margin-bottom: 32px;
  }
  .work-kpis {
    grid-template-columns: repeat(3, 1fr);
  }
  .segment-cards {
    gap: 12px;
  }
  .sgment-cards__fig {
    width: calc(33.3% - 6px);
  }
  .sekou-layout {
    gap: 30px;
    margin-top: 0;
  }
  .sekou-layout .business-card__icon {
    width: 40%;
    aspect-ratio: 1/1;
  }
  .sekou-layout .business-card__icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    justify-content: center;
  }
}
/* ===================================================
   RESPONSIVE — Mobile (≤600px)
   =================================================== */
@media (max-width: 600px) {
  .br-pc {
    display: none;
  }
  .br-sp {
    display: inline-block;
  }
  .header-inner {
    margin: 10px 12px 0;
    padding: 0 16px;
    border-radius: 28px;
  }
  .logo-text {
    font-size: 16px;
  }
  .hero {
    padding-top: calc(var(--header-height) + 0px);
    padding-bottom: 32px;
  }
  .hero-title {
    font-size: 24px;
    margin-bottom: 1.5em;
  }
  .anchor-nav {
    padding: 10px 10px;
  }
  .anchor-nav ul {
    gap: 20px;
    flex-wrap: wrap;
    justify-content: center;
  }
  .anchor-nav a {
    width: auto;
    font-size: 13px;
  }
  .page-section {
    padding: 40px 0 56px;
  }
  .page-section.-first {
    padding: 0px 0 56px;
  }
  .page-section + .page-section {
    padding-top: 0;
  }
  .section-header-wrap {
    margin-bottom: 24px;
  }
  .dots-row {
    width: 75%;
    margin-left: auto;
    margin-right: auto;
  }
  .kpi-cards {
    grid-template-columns: 1fr;
    margin-bottom: 24px;
    gap: 24px;
  }
  .chart-block {
    flex-direction: column;
    text-align: center;
    padding: 20px;
  }
  .chart-block__visual {
    width: 140px;
    height: 140px;
  }
  .chart-legend {
    justify-content: center;
  }
  .highlight-grid {
    grid-template-columns: 1fr;
    margin-bottom: 24px;
    gap: 24px;
  }
  .highlight-image {
    aspect-ratio: 3/2;
    background-position: right 30%;
  }
  .business-grid {
    grid-template-columns: 1fr;
    gap: 24px;
    margin-bottom: 24px;
  }
  .business-card:nth-child(-n+2),
  .business-card:nth-child(n+3) {
    grid-column: auto;
  }
  .work-kpis {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .work-kpis .kpi-card__label {
    font-size: 17px;
  }
  .footer-upper {
    padding: 24px 20px;
  }
  .footer-nav ul {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }
  .footer-nav li + li::before {
    display: none;
  }
  .data-table th.-sp-th {
    width: 140px;
  }
  .page-top {
    bottom: 20px;
    right: 16px;
    width: 40px;
    height: 40px;
  }
  .kosei-header {
    margin-bottom: 24px;
  }
  .chart-title,
  .table-section-title,
  .kosei-chart-unit__label {
    font-size: 15px;
  }
  .kosei-header__title,
  .qualifications-block .subsection-title {
    font-size: 16px;
  }
  .kpi-card__label,
  .subsection-title,
  .chart-block__title,
  .business-card__title,
  .kpi-badge,
  .kpi-banner,
  .completed-works__title {
    font-size: 18px;
  }
  .item-name {
    text-align: left;
  }
  .works-table {
    table-layout: fixed;
  }
  .works-table th,
  .works-table td {
    padding: 8px 10px;
    font-size: 13px !important;
  }
  .works-table th:first-child,
  .works-table td:first-child {
    width: 11%;
    white-space: normal;
  }
  .works-table th:nth-child(2),
  .works-table td:nth-child(2) {
    width: 29%;
    min-width: unset;
    white-space: normal;
  }
  .works-table th:last-child,
  .works-table td:last-child {
    width: 60%;
  }
  .kosei-panel {
    padding: 30px 20px;
  }
  .kosei-data-list {
    grid-template-columns: 1fr;
    gap: 30px;
    padding: 20px;
  }
  .qualifications-block {
    padding: 30px 20px;
    margin-bottom: 24px;
  }
  .qual-list {
    row-gap: 10px;
  }
  .qual-name {
    font-size: 16px;
  }
  .qual-num {
    font-size: 16px;
    min-width: 70px;
  }
  .btn-pill {
    width: 100%;
    justify-content: center;
  }
  .btn-pill--sm {
    font-size: 12px;
    padding: 7px 14px;
    line-height: 1.5;
  }
  .business-card {
    padding: 20px 16px;
  }
  .sekou-layout {
    flex-direction: column;
    align-items: center;
    gap: 16px;
  }
  .business-card__desc {
    font-size: 15px;
  }
  .business-card__icon {
    margin: 0 auto;
    width: 100px;
    height: 100px;
    padding: 0;
  }
  .business-card__number {
    margin-top: -1em;
  }
  .kpi-card {
    padding: 20px 16px;
    gap: 8px;
  }
  .kpi-card__icon {
    width: 100px;
    height: 100px;
    padding: 10px;
  }
  .segment-cards {
    gap: 16px;
    flex-direction: column-reverse;
  }
  .segment-cards__fig {
    width: 100%;
    aspect-ratio: 5/3;
    background-position: left 70%;
  }
  .segment-cards__main {
    padding: 24px 3px;
    width: 100%;
  }
  .data-list-container {
    margin-left: 19px;
    margin-right: 19px;
  }
  .chart-container {
    max-width: 100%;
    margin: 0;
  }
  .chart-container.-segmentc {
    width: 100%;
    aspect-ratio: auto;
    height: 320px;
  }
  .chart-container.-empc {
    margin-bottom: 30px;
  }
  .chart-container.-recc {
    aspect-ratio: auto;
    height: 320px;
  }
  .chart-container.-gendc {
    width: 100%;
    aspect-ratio: auto;
    height: 320px;
  }
  .data-item {
    font-size: 13px;
  }
  .item-sales,
  .item-percent {
    font-size: 13px;
  }
  .kosei-chart-unit {
    margin-bottom: 32px;
  }
  .charts-row {
    flex-direction: column;
  }
  .chart-unit {
    min-width: 0;
    width: 100%;
  }
  .charts-row {
    gap: 50px;
    margin-bottom: 50px;
  }
  .recruit-block {
    padding: 32px 8px;
  }
  .section-freshers {
    display: block;
  }
  .section-freshers__main {
    width: 100%;
  }
  .section-freshers__sub {
    margin-top: 2em;
    width: 100%;
  }
  .section-freshers .more {
    width: 70%;
    margin: auto;
  }
  .recruit-note {
    font-size: 12px;
  }
  .number-sep {
    display: block;
    width: 100%;
  }
}
/* ===================================================
   RESPONSIVE — Narrow (≤430px)
   =================================================== */
@media (max-width: 430px) {
  .qual-list {
    grid-template-columns: 1fr;
    column-gap: 0;
  }
  .qual-item {
    width: 100%;
  }
}