/* ============ Sub pages shared ============ */

/* generic content block */
.rich{ max-width:760px; }
.rich p{ font-size:clamp(15px,1.5vw,17px); line-height:2.15; color:var(--txt-mut); margin-bottom:1.3em; }
.rich h3{ font-family:var(--f-disp); font-weight:800; font-size:clamp(20px,2.4vw,28px); margin:1.4em 0 .6em; }

/* two-col intro */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,80px); align-items:center; }
.split--rev .split__pic{ order:2; }
.split__pic{ aspect-ratio:4/5; min-height:360px; }
@media(max-width:860px){ .split{ grid-template-columns:1fr; } .split--rev .split__pic{ order:0; } .split__pic{ aspect-ratio:16/10; min-height:0; } }

/* profile table */
.ptable{ border-top:2px solid var(--ink); }
.section--dark .ptable, .section--green .ptable{ border-top-color:var(--yellow); }
.ptable > div{ display:grid; grid-template-columns:200px 1fr; gap:24px; padding:22px 4px; border-bottom:1px solid var(--paper-line); }
.section--dark .ptable > div{ border-bottom-color:var(--ink-3); }
.ptable dt{ font-weight:700; font-size:14px; letter-spacing:.04em; display:flex; gap:12px; align-items:baseline; }
.ptable dt .mono{ color:var(--green); }
.section--dark .ptable dt .mono{ color:var(--yellow); }
.ptable dd{ font-size:15px; line-height:1.95; color:var(--txt-mut); }
.section--dark .ptable dd{ color:var(--txt-lmut); }
@media(max-width:680px){ .ptable > div{ grid-template-columns:1fr; gap:6px; } }

/* greeting / message */
.greet{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(30px,5vw,72px); align-items:start; }
.greet__pic{ aspect-ratio:3/4; }
.greet__sign{ display:flex; align-items:baseline; gap:16px; margin-top:30px; }
.greet__sign small{ font-family:var(--f-mono); font-size:11px; color:var(--green); letter-spacing:.1em; }
.greet__sign b{ font-family:var(--f-disp); font-weight:700; font-size:24px; }
@media(max-width:820px){ .greet{ grid-template-columns:1fr; } .greet__pic{ aspect-ratio:16/11; max-width:420px; } }

/* service detail rows */
.sdetail{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,72px); align-items:center; padding:clamp(50px,7vw,90px) 0; border-bottom:1px solid var(--ink-3); scroll-margin-top:90px; }
.sdetail:nth-child(even) .sdetail__pic{ order:2; }
.sdetail__pic{ aspect-ratio:4/3; }
.sdetail__head{ display:flex; align-items:flex-end; gap:18px; margin-bottom:18px; }
.sdetail__head .bignum{ font-size:clamp(48px,6vw,86px); }
.sdetail__head h3{ font-family:var(--f-disp); font-weight:900; font-size:clamp(22px,2.8vw,34px); line-height:1.2; }
.sdetail__head small{ display:block; font-family:var(--f-mono); color:var(--yellow); letter-spacing:.16em; font-size:11px; margin-top:8px; }
.sdetail p{ color:var(--txt-lmut); line-height:2.05; font-size:15px; }
.sdetail__list{ display:flex; flex-wrap:wrap; gap:10px; margin-top:20px; }
.sdetail__list span{ font-family:var(--f-mono); font-size:11px; letter-spacing:.08em; padding:7px 12px; border:1px solid var(--ink-3); color:var(--txt-lmut); }
@media(max-width:820px){ .sdetail{ grid-template-columns:1fr; } .sdetail:nth-child(even) .sdetail__pic{ order:0; } .sdetail__pic{ aspect-ratio:16/10; } }

/* works gallery */
.filters{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:40px; }
.filters button, .filters a{
  display:inline-flex; align-items:center;
  font-family:var(--f-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  padding:10px 18px; border:1px solid var(--paper-line); background:transparent; cursor:pointer; color:var(--txt-mut);
  transition:.2s;
}
.filters button:hover, .filters a:hover{ border-color:var(--ink); color:var(--ink); }
.filters button.on, .filters a.on{ background:var(--ink); color:var(--yellow); border-color:var(--ink); }

/* 絞り込み/ページ送りクリック時の簡易ローディング（クリック→遷移中に表示） */
.koubu-quickload{
  position:fixed; inset:0; z-index:9998;
  display:flex; align-items:center; justify-content:center;
  background:rgba(18,19,22,.55); backdrop-filter:blur(2px);
  opacity:0; visibility:hidden; transition:opacity .2s var(--ease), visibility .2s var(--ease);
}
.koubu-quickload.on{ opacity:1; visibility:visible; }
.koubu-quickload__ring{
  width:46px; height:46px; border-radius:50%;
  border:3px solid rgba(246,206,33,.25); border-top-color:var(--yellow);
  animation:koubuSpin .7s linear infinite;
}

/* pagination */
.works__pager{ display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin-top:48px; }
.works__pager .page-numbers{
  display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:44px; padding:0 12px;
  border:1px solid var(--paper-line); font-family:var(--f-mono); font-size:13px; letter-spacing:.06em; color:var(--txt-mut);
  transition:.2s;
}
.works__pager a.page-numbers:hover{ border-color:var(--ink); color:var(--ink); }
.works__pager .page-numbers.current{ background:var(--ink); color:var(--yellow); border-color:var(--ink); }
.works__pager .page-numbers.dots{ border-color:transparent; }
.wgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.wtile{ background:var(--ink); overflow:hidden; transition:transform .35s var(--ease); }
.wtile.hide{ display:none; }
.wtile:hover{ transform:translateY(-6px); }
.wtile .ph{ aspect-ratio:4/3; transition:transform .6s var(--ease); }
.wtile:hover .ph{ transform:scale(1.06); }
.wtile__b{ padding:18px 20px 22px; color:#fff; }
.wtile__b .tag{ color:var(--yellow); margin-bottom:10px; }
.wtile__b h3{ font-size:16px; font-weight:700; line-height:1.5; }
.wtile__b p{ color:var(--txt-lmut); font-size:12.5px; margin-top:6px; }
@media(max-width:900px){ .wgrid{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:560px){ .wgrid{ grid-template-columns:1fr; } }

/* recruit */
.rec__lead{ font-family:var(--f-disp); font-weight:900; font-size:clamp(24px,4vw,44px); line-height:1.45; }
.rec__lead .hi{ color:var(--yellow); }
.flow{ display:grid; gap:0; counter-reset:step; }
.flow__item{ display:grid; grid-template-columns:90px 1fr; gap:24px; padding:26px 0; border-top:1px solid var(--paper-line); }
.flow__item:last-child{ border-bottom:1px solid var(--paper-line); }
.flow__num{ font-family:var(--f-en); font-size:40px; color:var(--green); }
.flow__item h3{ font-size:18px; font-weight:700; margin-bottom:6px; }
.flow__item p{ color:var(--txt-mut); font-size:14px; }

/* contact form */
.contact__grid{ display:grid; grid-template-columns:1.3fr .9fr; gap:clamp(34px,5vw,72px); align-items:start; }
.form{ display:grid; gap:22px; }
.field{ display:grid; gap:8px; }
.field label{ font-weight:700; font-size:13px; letter-spacing:.04em; display:flex; align-items:center; gap:10px; }
.field .req{ font-family:var(--f-mono); font-size:9px; letter-spacing:.08em; background:var(--yellow); color:var(--ink); padding:3px 7px; }
.field .opt{ font-family:var(--f-mono); font-size:9px; letter-spacing:.08em; border:1px solid var(--paper-line); color:var(--txt-mut); padding:3px 7px; }
.field input, .field textarea, .field select{
  font-family:var(--f-jp); font-size:15px; padding:15px 16px; border:1.5px solid var(--paper-line);
  background:#fff; color:var(--txt-dark); width:100%; transition:border-color .2s;
}
.field input:focus, .field textarea:focus, .field select:focus{ outline:none; border-color:var(--green); }
.field textarea{ min-height:160px; resize:vertical; }
.form__note{ font-size:12px; color:var(--txt-mut); }
.cinfo{ background:var(--ink); color:#fff; padding:clamp(28px,4vw,40px); }
.cinfo h3{ font-family:var(--f-en); font-size:26px; color:var(--yellow); margin-bottom:6px; }
.cinfo .ja{ font-family:var(--f-disp); font-weight:700; font-size:15px; margin-bottom:26px; }
.cinfo__row{ padding:18px 0; border-top:1px solid var(--ink-3); }
.cinfo__row small{ font-family:var(--f-mono); font-size:10px; letter-spacing:.14em; color:var(--yellow); display:block; margin-bottom:6px; }
.cinfo__row b{ font-weight:500; font-size:15px; line-height:1.7; display:block; }
.cinfo__phone{ font-family:var(--f-en); font-size:32px; color:#fff; letter-spacing:.01em; }
@media(max-width:860px){ .contact__grid{ grid-template-columns:1fr; } }

/* map placeholder */
.mapbox{ aspect-ratio:21/9; min-height:300px; }
@media(max-width:680px){ .mapbox{ aspect-ratio:4/3; } }

/* works single (施工事例 詳細) */
.works-single{ max-width:880px; margin:0 auto; }
.works-single__meta{ display:flex; align-items:center; gap:14px; margin-bottom:24px; }
.works-single__meta .mono{ color:var(--txt-mut); font-size:12px; letter-spacing:.1em; }
.works-single__cover{ margin-bottom:34px; }
.works-single__cover img{ width:100%; height:auto; display:block; }
.works-single__body{ margin-bottom:10px; }
.works-single__body img{ height:auto; margin:1.4em 0; }
.works-nav{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px; border-top:1px solid var(--paper-line); padding-top:26px; margin-top:40px; }
.works-nav a{ color:var(--txt-mut); font-size:13px; transition:color .2s; }
.works-nav a:hover{ color:var(--green); }
.works-nav .btn{ color:#fff; }
@media(max-width:680px){ .works-nav{ grid-template-columns:1fr; text-align:center; } .works-nav div{ text-align:center !important; } }

/* maps side-by-side (本社 / ヤード) */
.mapgrid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:30px; }
.mapgrid iframe{ width:100%; height:100%; min-height:340px; aspect-ratio:16/10; border:0; display:block; }
@media(max-width:760px){ .mapgrid{ grid-template-columns:1fr; gap:16px; } .mapgrid iframe{ min-height:280px; } }

/* section intros for content pages */
.pintro{ max-width:680px; margin-bottom:clamp(30px,4vw,50px); }
.pintro .lead{ margin-top:14px; }

/* news list (お知らせ一覧) */
.newslist{ border-top:1px solid var(--paper-line); }
.newslist a{
  display:grid; grid-template-columns:120px 1fr auto; align-items:center; gap:22px;
  padding:22px 6px; border-bottom:1px solid var(--paper-line);
  transition:background .2s var(--ease), padding-left .25s var(--ease);
}
.newslist a:hover{ background:var(--paper-2); padding-left:16px; }
.newslist .date{ font-family:var(--f-mono); font-size:12px; letter-spacing:.06em; color:var(--green); }
.newslist .ttl{ display:block; font-weight:700; font-size:15px; line-height:1.6; }
.newslist .ex{ display:block; color:var(--txt-mut); font-size:13px; line-height:1.7; margin-top:5px; }
.newslist .ar{ color:var(--green); font-size:18px; transition:transform .25s var(--ease); }
.newslist a:hover .ar{ transform:translateX(5px); }
@media(max-width:680px){
  .newslist a{ grid-template-columns:1fr; gap:6px; }
  .newslist .ar{ display:none; }
}

/* legal / policy pages */
.legal{ max-width:880px; }
.legal h2{
  font-family:var(--f-disp); font-weight:800; font-size:clamp(18px,2.2vw,24px);
  margin:2em 0 .7em; padding-bottom:.5em; border-bottom:1px solid var(--paper-line);
  display:flex; align-items:baseline; gap:12px;
}
.legal h2:first-child{ margin-top:0; }
.legal p{ font-size:clamp(14px,1.4vw,16px); line-height:2.1; color:var(--txt-mut); margin-bottom:1.1em; }

/* Contact Form 7（マルチステップ）— 新デザインに合わせたスタイル
   想定マークアップ： <label>見出し<span class="req/any">…</span>[入力]</label> */
.cform .wpcf7-form > p,
.cform .wpcf7-form > label{ display:block; margin:0 0 22px; }
/* フィールド見出し（label） */
.cform label{ font-weight:700; font-size:13px; letter-spacing:.04em; color:var(--txt-dark); display:block; }
/* 必須 / 任意 バッジ */
.cform .req, .cform .any{
  display:inline-block; font-family:var(--f-mono); font-size:9px; letter-spacing:.06em;
  line-height:1.4; padding:3px 7px; margin-left:8px; vertical-align:middle;
}
.cform .req{ background:var(--yellow); color:var(--green-ink); }
.cform .any{ border:1px solid var(--paper-line); color:var(--txt-mut); font-weight:500; }
/* 入力欄（見出しの下にブロック配置） */
.cform .wpcf7-form-control-wrap{ display:block; margin-top:8px; }
.cform input[type="text"], .cform input[type="email"], .cform input[type="tel"],
.cform input[type="url"], .cform input[type="number"], .cform input[type="date"],
.cform textarea, .cform select{
  font-family:var(--f-jp); font-size:15px; padding:15px 16px;
  border:1.5px solid var(--paper-line); background:#fff; color:var(--txt-dark);
  width:100%; transition:border-color .2s;
}
.cform input::placeholder, .cform textarea::placeholder{ color:#a9a496; }
.cform input:focus, .cform textarea:focus, .cform select:focus{ outline:none; border-color:var(--green); }
.cform textarea{ min-height:160px; resize:vertical; }

/* マルチステップ確認画面：入力値の表示（[multiform]） */
.cform .wpcf7-multiform{
  display:block; margin-top:2px; padding:13px 16px;
  background:var(--paper-2); border:1px solid var(--paper-line);
  color:var(--txt-dark); font-size:15px; line-height:1.8;
  white-space:pre-wrap; word-break:break-word; min-height:50px;
}

/* プライバシーポリシー同意（チェックボックス）行 */
.cform label.policy{ text-align:center; font-weight:500; }
.cform .wpcf7-checkbox .wpcf7-list-item{ display:inline-block; margin:0; }
.cform .wpcf7-checkbox .wpcf7-list-item label{ display:inline-flex; align-items:center; gap:10px; cursor:pointer; font-weight:500; }
.cform .wpcf7-checkbox input[type="checkbox"]{ width:18px; height:18px; accent-color:var(--green); }
.cform .wpcf7-list-item-label{ font-size:14px; }

/* 送信／確認ボタン（マルチステップ） */
.cform .wpcf7-submit,
.cform input[type="submit"]{
  display:block; width:100%; max-width:360px; margin:8px auto 0;
  padding:18px 34px; font-weight:700; letter-spacing:.06em; font-size:15px; text-align:center;
  cursor:pointer; border:0; background:var(--yellow); color:var(--green-ink);
  transition:background .25s var(--ease);
}
.cform .wpcf7-submit:hover,
.cform input[type="submit"]:hover{ background:#fff; }
/* マルチステップの「戻る」ボタン */
.cform .wpcf7-previous{
  background:transparent !important; color:var(--txt-mut) !important;
  border:1.5px solid var(--paper-line) !important; margin-top:12px !important;
}
.cform .wpcf7-previous:hover{ border-color:var(--ink) !important; color:var(--ink) !important; background:transparent !important; }

/* バリデーション・確認画面・送信中 */
.cform .wpcf7-not-valid-tip{ color:#c0392b; font-size:12px; margin-top:4px; }
.cform .wpcf7-form-control.wpcf7-not-valid{ border-color:#c0392b !important; }
.cform .wpcf7-response-output{
  margin:18px 0 0 !important; padding:14px 16px; font-size:13px; line-height:1.7;
  border:1px solid var(--paper-line) !important;
}
.cform .wpcf7-spinner{ margin:14px auto 0; display:block; }
