@charset "utf-8";
/* =========================
   Company (company.css)
   ========================= */

/* -------------------------
   Variables
------------------------- */
:root{
  --company-wrap: min(1200px, 92vw);
  --company-ink: #141414;
  --company-blue: #0e5fbe; /* ササコウ強調色 */

  /* MESSAGE 用 */
  --msg-bg:#4b4848;
  --gap: clamp(16px,3vw,32px);
  --imgW: clamp(300px, 40vw, 960px); /* 角写真の幅（≒画面の40%） */
}

/* =========================
   First Block（タイトル＋画像＋リード）
   ========================= */
.main{
  padding: clamp(48px, 7vw, 100px) 0 clamp(36px, 5vw, 80px);
}

.main .box{
  width: var(--company-wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr minmax(520px, 760px);
  align-items: end;
  gap: clamp(20px, 4vw, 64px);
}

.main h1{
  margin: 0;
  font-family: "Times New Roman","Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;
  font-weight: 500;
  font-size: clamp(48px, 8vw, 112px);
  line-height: 1;
  letter-spacing: .06em;
  color: var(--company-ink);
}

.main .img{ justify-self: end; }
.main .img img{
  display: block;
  width: 100%;
  height: auto;
}

/* リード文 */
.main > p{
  width: var(--company-wrap);
  margin: clamp(18px, 3vw, 36px) auto 0;
  font-size: clamp(18px, 2.4vw, 30px);
  line-height: 1.75;
  font-weight: bold;
  letter-spacing: .05em;
  color: var(--company-ink);
}
.main > p span{ color: var(--company-blue); }

/* Responsive (First Block) */
@media (max-width: 1024px){
  .main .box{
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .main .img{ justify-self: stretch; }
  .main h1{ font-size: clamp(44px, 12vw, 86px); }
  .main > p{ font-size: clamp(15px, 4vw, 20px); }
}
@media (max-width: 768px){
  /* リード文はSPで大きめに */
  .main > p{
    font-size: clamp(18px, 5.2vw, 22px);
    line-height: 1.9;
    padding-inline: 16px;
  }
}

/* =========================
   MESSAGE（挟み画像つきメッセージ）
   ========================= */
.message{
  position: relative;
  background: rgba(0,0,0,0.7);
  padding: 0;
  overflow: hidden;

  /* 画像の比率から高さを算出（1169x821） */
  --imgH: calc(var(--imgW) * 821 / 1169);

  /* wrapが中央寄せなので左右ガターを算出し、食い込み量を求める */
  --gutter: calc((100vw - var(--company-wrap)) / 2);
  --avoidL: clamp(0px, calc(var(--imgW) - var(--gutter)), var(--imgW));
  --avoidR: clamp(0px, calc(var(--imgW) - var(--gutter)), var(--imgW));
}

/* 角の写真（固定配置） */
.message .photo1,
.message .photo2{
  position:absolute; width:var(--imgW); z-index:1; pointer-events:none;
}
.message .photo1{ top:0; left:0; }
.message .photo2{ right:0; bottom:0; }
.message .photo1 img,.message .photo2 img{ display:block; width:100%; height:auto; }

/* 上段：左画像の食い込み分だけ回避して見出しを下揃え */
.message .hero{
  width: var(--company-wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, var(--avoidL)) 1fr;
  column-gap: var(--gap);
  align-items: end;
  justify-items: start;
  min-height: var(--imgH);
  padding-top: clamp(20px,4vw,48px);
}
.message .hero-heading{
  margin: 0 0 0 5vw;
  place-self: end start;
  text-align:left;
  z-index:2;
}
.message .hero-heading img{
  display:block;
  width: clamp(280px, 28vw, 740px);
  height:auto;
}

/* 本文 */
.message .wrap{
  width: var(--company-wrap);
  margin: clamp(56px, 7vw, 96px) auto 0;
  position: relative; z-index:2;
}
.message .wrap h3{
  margin:0 0 clamp(12px,2vw,18px);
  color:#f5f5f5; font-weight:700;
  font-size:clamp(18px,2.2vw,26px); letter-spacing:.08em;
}
.message .wrap p{
  color:#eaeaea;
  font-size:clamp(14px,1.6vw,18px);
  line-height:2; letter-spacing:.06em;
  max-width: none;
	margin-top: 60px;
}

/* 下段：右画像の食い込み分だけ回避して下揃え */
.message .bottom{
  width: var(--company-wrap);
  margin: clamp(28px,6vw,72px) auto clamp(40px,8vw,96px);
  display: grid;
  grid-template-columns: 1fr minmax(0, var(--avoidR));
  column-gap: var(--gap);
  align-items: end;
  position: relative; z-index:2;
}

/* 社長ブロック */
.message .president{
  display:flex; gap:clamp(16px,3vw,36px);
  align-items:flex-end; color:#fff; flex-wrap:nowrap;
}
.message .president .photo{ flex:0 0 clamp(140px,16vw,240px); }
.message .president .photo img{ display:block; width:100%; height:auto; background:#fff; }
.message .president .info{ flex:1 1 auto; min-width: clamp(200px, 28vw, 360px); }
.message .president h4{ margin:0; font-weight:800; font-size:clamp(14px,1.4vw,18px); line-height:1.35; }
.message .president .name{ margin:0; font-weight:800; font-size:clamp(22px,3vw,32px); line-height:1.1; white-space:nowrap; }

/* MESSAGE Responsive */
@media (max-width:1024px){
  .message .photo1,.message .photo2{ display:none; }
  .message .hero{ grid-template-columns: 1fr; min-height:auto; row-gap:var(--gap); }
  .message .bottom{ grid-template-columns: 1fr; min-height:auto; row-gap:var(--gap); }
  .message .wrap{ margin: clamp(28px,6vw,56px) auto 0; padding: 0 16px; }
  .message .bottom{ padding: 0 16px; }
}
@media (min-width:1360px){
  :root{ --imgW: clamp(320px, 40vw, 1040px); }
  .message .hero-heading img{ width: clamp(360px, 34vw, 820px); }
  .message .wrap h3{ font-size: clamp(22px, 2.2vw, 32px); }
  .message .wrap p { font-size: clamp(16px, 1.5vw, 22px); }
  .message .president .photo{ flex-basis: clamp(160px, 18vw, 260px); }
  .message .president h4{ font-size: clamp(16px, 1.6vw, 22px); }
  .message .president .name{ font-size: clamp(26px, 3.2vw, 36px); }
}
@media (min-width:1680px){
  .message .hero-heading img{ width: clamp(420px, 36vw, 900px); }
  .message .wrap p{ font-size: clamp(18px, 1.2vw, 24px); }
  .message .wrap{ margin-top: clamp(64px, 6vw, 120px); }
}

/* =========================
   HISTORY（沿革）
   ========================= */
.history{ padding: 90px 5vw; }
.history h2{
  max-width: 40vw;
  margin: 0 auto clamp(16px, 1.8vw, 24px) 0; /* 右寄せ＋見出し下の余白 */
  text-align: right;
}
.history h2 img{
  display:block;
  margin-left:auto; /* 画像も右寄せ */
}

/* PC：表=左 / 写真=右 */
.history .grid{
  display: grid;
  grid-template-columns: 3fr 1.5fr;          /* table : photo */
  gap: 24px;
  margin-top: 40px;
  align-items: start;
  grid-template-areas: "table photo";
}
.history .table-wrap{ grid-area: table; }
.history .photo{ grid-area: photo; }
.history .photo img{ max-width: 100%; height: auto; display: block; }

/* 表（HISTORY：OUTLINEと同一仕様） */
.history-table{
  width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}
.history-table th,
.history-table td{
  border-top:    1px solid #231815;
  border-bottom: 1px solid #231815;
  padding: 10px 15px;
  text-align: left;
  vertical-align: top;
  font-weight: normal;
  font-size: clamp(12px, 1.4vw, 22px); /* OUTLINE と同じ */
}
.history-table th{
  white-space: nowrap;
  width: 12em;                 /* 日付列を一定幅に */
  font-weight: 600;
  border-right: 1px solid #231815; /* 右側の罫線を追加 */
}
.history-table th small{
  font-weight: 400;
  opacity: .8;
  margin-left: .35em;
  font-size: .9em;
}

/* SP：縦並び＋smallで改行 */
@media (max-width: 900px){
  .history h2{ max-width: 74vw; }
  .history .grid{
    grid-template-columns: 1fr;
    grid-template-areas:
      "photo"
      "table";
  }
  .history-table th{ width: 9.5em; } /* 画面幅に合わせ微調整 */
}
@media (max-width: 768px){
  .history{ padding: 64px 5vw; }
  .history-table th{
    white-space: normal; /* 改行許可して small を折り返す */
    line-height: 1.35;
  }
  .history-table th small{
    display: block;      /* 強制改行 */
    margin: .2em 0 0;
    margin-left: 0;
    font-size: .9em;
    opacity: .85;
  }
}

/* =========================
   OUTLINE（会社情報）
   ========================= */
.outline{ padding: 90px 5vw; }
.outline h2{ max-width: 40vw; margin: 0 0 0 auto; }

/* PC：写真=左 / 表=右 */
.outline .grid{
  display:grid;
  grid-template-columns: 1.5fr 3fr;   /* photo : table */
  gap: 24px;
  margin-top: 40px;
  align-items: start;                  /* ★ 下揃え → 上揃え に変更 */
  grid-template-areas: "photo table";
}
.outline .grid > .photo{      grid-area: photo; }
.outline .grid > .table-wrap{ grid-area: table; }
.outline .grid > *{ min-width: 0; }

/* ★ 写真だけ上から40px下げる（PCのみ） */
@media (min-width: 901px){
  .outline .grid > .photo{
    margin-top: 40px;
  }
}

.table-wrap table{
  width:100%;
  table-layout: fixed;
  border-collapse: collapse;
}
.table-wrap td:first-child{ white-space:nowrap; width:10em; }
.table-wrap td:last-child{ overflow-wrap:anywhere; }
.photo img{ max-width:100%; height:auto; display:block; }

/* 2ブロック目も同じ配置 */
.outline .grid.grid2{
  grid-template-areas: "photo table";
  grid-template-columns: 1.5fr 3fr;
}

/* 表（OUTLINE） */
.outline table{
  border-collapse: collapse;
  table-layout: auto;
  width: 100%;
}
.outline table th{
  white-space: nowrap;
  width: 1%;
  border-right: 1px solid #231815;
}
.outline table td{
  white-space: normal;
  overflow-wrap: anywhere;
}
.outline table td,
.outline table th{
  border-bottom: 1px solid #231815;
  border-top:    1px solid #231815;
  padding: 10px 15px;
  text-align: left;
  font-weight: normal;
  font-size: clamp(12px,1.4vw,22px);
}

.outline .t2{ margin: 90px 0 0 auto; }

/* SP：見出し→写真→表 */
@media (max-width: 900px){
  .outline h2{ max-width: 74vw; }
  .outline .grid,
  .outline .grid.grid2{
    grid-template-columns: 1fr;
    grid-template-areas:
      "photo"
      "table";
    align-items: start;
  }
}

