/* ============================================================
   RESET
   ============================================================ */
.ms-custom-layout *, .ms-custom-layout *::before, .ms-custom-layout *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body.ms-custom-layout img { display: block; max-width: 100%; }
html body.admin-bar          { margin-top: 0 !important; }
html body.admin-bar #wpadminbar { position: fixed !important; top: 0 !important; }

/* ============================================================
   TOKENS
   ============================================================ */
:root {
  --G:    #1B8A3C;   /* メイングリーン */
  --Gd:   #126B2D;   /* ダーク */
  --Gm:   #28A650;   /* ミディアム */
  --Gl:   #EFF8F2;   /* 薄緑 */
  --ink:  #1A1A1A;
  --ink2: #5A5A5A;
  --white:#FFFFFF;
  --off:  #F9FBF9;   /* ほぼ白・薄緑ベース */
  --rule: #D8EAD8;   /* グリーン寄りのルール */
  --ja:  'Noto Sans JP', sans-serif;
  --se:  'Noto Serif JP', serif;
  --en:  'Oswald', sans-serif;
}
body.ms-custom-layout {
  margin: 0;
  font-family: var(--ja); color: var(--ink);
  background: var(--white); line-height: 1.8;
  overflow-x: hidden; width: 100%;
}

/* ============================================================
   OPENING — 白ベース・グリーンブランド
   ============================================================ */
#ms2-op {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--white);
  display: flex; align-items: center; justify-content: center;
  transition: opacity .6s ease .9s, visibility .6s ease .9s;
}
#ms2-op.done { opacity: 0; visibility: hidden; pointer-events: none; }

.op-wrap { text-align: center; }

.op-logo {
  width: 160px; margin: 0 auto 18px;
  opacity: 0; transform: translateY(10px) scale(.96);
  animation: op-logo .7s cubic-bezier(.16,1,.3,1) .1s forwards;
}
.op-logo img { width: 100%; height: auto; }
@keyframes op-logo {
  to { opacity: 1; transform: none; }
}

.op-name {
  font-family: var(--se); font-size: 20px; font-weight: 700;
  color: var(--ink); letter-spacing: .1em;
  opacity: 0; animation: op-fade .5s ease .4s forwards;
}
.op-en {
  font-family: var(--en); font-size: 10px; font-weight: 200;
  letter-spacing: .36em; text-transform: uppercase;
  color: var(--ink2); margin-top: 6px;
  opacity: 0; animation: op-fade .5s ease .5s forwards;
}
@keyframes op-fade { to { opacity: 1; } }

.op-bar {
  height: 2px; background: var(--G);
  width: 0; margin: 18px auto 0;
  animation: op-bar .5s ease .55s forwards;
}
@keyframes op-bar { to { width: 72px; } }

/* 非トップ用ワイプ */
#ms2-wipe {
  position: fixed; inset: 0; z-index: 9999;
  pointer-events: none; visibility: hidden; opacity: 0;
}
#ms2-wipe::before,
#ms2-wipe::after {
  content: '';
  position: absolute; left: 0; width: 100%;
}
#ms2-wipe::before {
  top: 0; height: 100%;
  background: #fff;
  transform: translateY(-100%);
}
#ms2-wipe::after {
  top: 0; height: 6px;
  background: linear-gradient(90deg, #d6eadc, var(--G), #d6eadc);
  opacity: .8;
  transform: translateY(-120%);
}
#ms2-wipe.run-close,
#ms2-wipe.run-open { visibility: visible; opacity: 1; }
#ms2-wipe.run-close::before { animation: wipe-close .52s cubic-bezier(.65,0,.35,1) forwards; }
#ms2-wipe.run-close::after  { animation: line-close .52s cubic-bezier(.65,0,.35,1) forwards; }
#ms2-wipe.run-open::before  { transform: translateY(0); animation: wipe-open .62s cubic-bezier(.65,0,.35,1) forwards; }
#ms2-wipe.run-open::after   { transform: translateY(0); animation: line-open .62s cubic-bezier(.65,0,.35,1) forwards; }
#ms2-wipe.done { visibility: hidden; opacity: 0; }
@keyframes wipe-close { to { transform: translateY(0); } }
@keyframes line-close { to { transform: translateY(100vh); } }
@keyframes wipe-open  { to { transform: translateY(100%); } }
@keyframes line-open  { to { transform: translateY(100vh); } }

/* ============================================================
   SKIP
   ============================================================ */
.skip {
  position: absolute; top: -50px; left: 0; z-index: 9998;
  background: var(--G); color: #fff;
  padding: 8px 16px; font-size: 13px; text-decoration: none; transition: top .2s;
}
.skip:focus { top: 0; }

/* ============================================================
   HEADER
   ============================================================ */
.hd { position: fixed; top: 0; left: 0; width: 100%; z-index: 800; background: rgba(255,255,255,.97); backdrop-filter: blur(12px); border-bottom: 1px solid var(--rule); transition: box-shadow .3s; }
.hd.sd { box-shadow: 0 2px 20px rgba(27,138,60,.12); }
body.admin-bar .hd { top: 32px; }
@media screen and (max-width:782px){ body.admin-bar .hd { top: 46px; } }

.hd, .hd * { box-sizing: border-box; font-family: 'Noto Sans JP', sans-serif; }
.ms-hd__in {
  height: 64px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 clamp(18px,3.5vw,52px);
  gap: 14px;
}
.hd-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0; }
.hd-logo img { height: 36px !important; width: auto !important; object-fit: contain; display: block; }
.hd-logo__name { font-size: 14px; font-weight: 700; color: var(--ink); letter-spacing: .07em; line-height: 1.3; font-family: var(--ja); }
.hd-logo__name small { display: block; font-size: 9px; font-weight: 400; color: var(--ink2); letter-spacing: .12em; margin-top: 0; }

.ms-hd__nav { flex: 1; display: flex; justify-content: flex-end; min-width: 0; }
.hd-nav { display: flex !important; align-items: center; flex-wrap: nowrap; gap: clamp(12px,2vw,28px); list-style: none; margin: 0; padding: 0; }
.hd-nav li { list-style: none; margin: 0; padding: 0; }
.hd-nav a { white-space: nowrap; display: inline-flex; align-items: center; line-height: 1; font-size: 12.5px; font-weight: 500; letter-spacing: .1em; color: var(--ink2); text-decoration: none; transition: color .2s; }
.hd-nav a:hover { color: var(--G); }
.hd-nav .cta { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; line-height: 1; background: var(--G); color: #fff !important; padding: 9px 22px; border-radius: 2px; font-size: 12.5px; font-weight: 700 !important; transition: background .2s !important; }
.hd-nav .cta:hover { background: var(--Gd) !important; }

.hd-ham { display: none; background: none; border: none; cursor: pointer; padding: 8px; flex-direction: column; gap: 5px; margin-left: auto; }
.hd-ham span { display: block; width: 24px; height: 2px; background: var(--ink); border-radius: 1px; transition: .3s; }
.hd-ham.open span:nth-child(1){ transform: rotate(45deg) translate(5px,5px); }
.hd-ham.open span:nth-child(2){ opacity: 0; }
.hd-ham.open span:nth-child(3){ transform: rotate(-45deg) translate(5px,-5px); }

.sp-nav { display: none; position: fixed; top: 64px; left: 0; width: 100%; background: #fff; border-bottom: 2px solid var(--G); z-index: 799; }
body.admin-bar .sp-nav { top: 96px; }
@media screen and (max-width:782px){ body.admin-bar .sp-nav { top: 110px; } }
.sp-nav.open { display: block; }
.sp-nav a { display: block; padding: 14px 24px; font-size: 14px; font-weight: 500; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--rule); transition: background .15s; }
.sp-nav a:hover { background: var(--Gl); color: var(--G); }

/* ============================================================
   FV
   ============================================================ */
.fv {
  position: relative; width: 100vw;
  height: 100svh; min-height: 560px;
  overflow: hidden;
}
body.admin-bar .fv {
  margin-top: 32px;
  height: calc(100svh - 32px);
  min-height: 528px;
}
@media screen and (max-width:782px){
  body.admin-bar .fv {
    margin-top: 46px;
    height: calc(100svh - 46px);
    min-height: 500px;
  }
}

.fv-bg { position: absolute; inset: 0; }
.fv-bg img {
  width: 100%; height: 100%; object-fit: cover; object-position: 65% center;
  transform: scale(1.07);
  animation: zoom 9s ease forwards;
}
@keyframes zoom { to { transform: scale(1); } }

.fv-ov {
  position: absolute; inset: 0;
  background:
    linear-gradient(105deg, rgba(0,0,0,.68) 0%, rgba(0,0,0,.34) 50%, rgba(0,0,0,.04) 100%),
    linear-gradient(to top, rgba(0,0,0,.35) 0%, transparent 50%);
}

/* テキストエリア */
.fv-body {
  position: relative; z-index: 2; height: 100%;
  display: flex; flex-direction: column; justify-content: center;
  padding: calc(64px + clamp(18px,2.8vh,34px)) clamp(28px,6vw,100px) clamp(28px,4.2vh,56px);
}
.fv-body > * { opacity: 0; animation: up .85s cubic-bezier(.16,1,.3,1) forwards; }
.fv-eyebrow { animation-delay: .55s; }
.fv-h1      { animation-delay: .75s; }
.fv-desc    { animation-delay: .95s; }
.fv-btns    { animation-delay: 1.15s; }
@keyframes up { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:none; } }

.fv-eyebrow {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--en); font-size: 11px; font-weight: 200;
  letter-spacing: .28em; text-transform: uppercase;
  color: rgba(255,255,255,.7); margin-bottom: 20px;
}
.fv-eyebrow::before { content:''; width: 30px; height: 1px; background: var(--Gm); flex-shrink: 0; }

.fv-h1 {
  font-family: var(--se);
  font-size: clamp(44px, 6.8vmin, 78px);
  font-weight: 900; color: #fff; line-height: 1.22; letter-spacing: .05em;
}
.fv-h1 em { font-style: normal; color: #6EDDA0; } /* グリーンアクセント */

.fv-desc {
  font-size: clamp(14px, 1.55vmin, 18px); color: rgba(255,255,255,.82);
  line-height: 2; margin-top: clamp(14px, 2vh, 22px); max-width: 520px;
  border-left: 3px solid var(--Gm); padding-left: 16px;
}

.fv-actions {
  margin-top: clamp(18px, 3vh, 34px);
}
.fv-btns { display: flex; gap: 14px; flex-wrap: wrap; }
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: clamp(11px, 1.6vmin, 14px) clamp(22px, 2.8vmin, 32px);
  font-size: clamp(12px, 1.25vmin, 14px); font-weight: 700; letter-spacing: .1em;
  border-radius: 2px; text-decoration: none; cursor: pointer;
  transition: background .2s, transform .18s;
}
.btn-g  { background: var(--G); color: #fff; }
.btn-g:hover  { background: var(--Gd); transform: translateX(3px); }
.btn-wh { background: rgba(255,255,255,.15); color: #fff; border: 1px solid rgba(255,255,255,.5); }
.btn-wh:hover { background: rgba(255,255,255,.25); }

/* バッジ */
.fv-badge {
  position: absolute; right: clamp(96px, 8vw, 150px); bottom: clamp(86px, 11vh, 128px); z-index: 3;
  width: 132px; height: 132px; border-radius: 50%;
  background: var(--G);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 3px; text-decoration: none; color: #fff; text-align: center;
  box-shadow: 0 8px 32px rgba(27,138,60,.55);
  opacity: 0; animation: badge 1s cubic-bezier(.16,1,.3,1) 1.4s forwards;
  transition: transform .3s;
}
@keyframes badge { from{opacity:0;transform:scale(.5);} to{opacity:1;transform:scale(1);} }
.fv-badge:hover { transform: scale(1.08) rotate(3deg); }
.fv-badge .b-small  { font-size: 11px; font-weight: 500; opacity: .85; letter-spacing: .08em; }
.fv-badge .b-main   { font-size: 19px; font-weight: 900; line-height: 1.35; }
.fv-badge .b-link   { font-size: 10px; font-weight: 500; opacity: .85; letter-spacing: .06em; }
.fv-badge--sp { display: none; }

/* スクロール */
.fv-scroll {
  position: absolute; right: 20px; top: 50%; transform: translateY(-50%);
  z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none;
  opacity: 0; animation: up .8s ease 1.6s forwards;
}
.fv-scroll-txt { writing-mode: vertical-lr; font-size: 9px; letter-spacing: .24em; color: rgba(255,255,255,.55); font-family: var(--en); font-weight: 200; }
.fv-scroll-bar { width: 1px; height: 52px; background: linear-gradient(to bottom,rgba(255,255,255,.5),transparent); animation: sbar 2s ease-in-out infinite; }
@keyframes sbar { 0%{transform:scaleY(0);transform-origin:top} 45%{transform:scaleY(1);transform-origin:top} 55%{transform:scaleY(1);transform-origin:bottom} 100%{transform:scaleY(0);transform-origin:bottom} }

@media(prefers-reduced-motion:reduce){
  .fv-bg img, .fv-body>*, .fv-badge, .fv-scroll, .op-logo, .op-name, .op-en, .op-bar { animation:none!important; opacity:1!important; transform:none!important; }
}

/* ============================================================
   セクション共通
   ============================================================ */
.sec-hd { display: flex; align-items: baseline; gap: 14px; padding-bottom: 14px; border-bottom: 2px solid var(--ink); margin-bottom: 0; }
.sec-hd__ja { font-family: var(--se); font-size: 20px; font-weight: 700; }
.sec-hd__en { font-family: var(--en); font-size: 11px; font-weight: 300; color: var(--G); letter-spacing: .22em; text-transform: uppercase; }

/* ============================================================
   REVEAL
   ============================================================ */
.rv   { opacity:0; transform:translateY(22px); transition:opacity .7s ease,transform .7s ease; }
.rv-l { opacity:0; transform:translateX(-36px); transition:opacity .7s ease,transform .7s ease; }
.rv-r { opacity:0; transform:translateX(36px);  transition:opacity .7s ease,transform .7s ease; }
.rv-s { opacity:0; transform:scale(.95);         transition:opacity .7s ease,transform .7s ease; }
.rv.on, .rv-l.on, .rv-r.on, .rv-s.on { opacity:1; transform:none; }
.d1 { transition-delay: .1s; }
.d2 { transition-delay: .2s; }
.d3 { transition-delay: .32s; }
.d4 { transition-delay: .44s; }
@media(prefers-reduced-motion:reduce){ .rv,.rv-l,.rv-r,.rv-s{ opacity:1;transform:none;transition:none; } }

/* ============================================================
   NEWS
   ============================================================ */
.news { background: var(--white); padding: clamp(52px,5.5vw,72px) clamp(28px,6vw,80px); }
.news__in { max-width: 1100px; margin: 0 auto; }
.news__list { list-style: none; }
.news__item { display: grid; grid-template-columns: 108px 70px 1fr; gap: 12px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--rule); font-size: 14px; }
.news__item:first-child { border-top: 1px solid var(--rule); margin-top: 0; }
.news__dt  { font-family: var(--en); font-size: 12px; font-weight: 300; color: var(--ink2); letter-spacing: .04em; }
.news__cat { font-size: 10px; font-weight: 700; letter-spacing: .08em; padding: 3px 8px; background: var(--G); color: #fff; text-align: center; white-space: nowrap; border-radius: 1px; }
.news__lnk { color: var(--ink); text-decoration: none; transition: color .2s; }
.news__lnk:hover { color: var(--G); }
.news__more-wrap { text-align: right; margin-top: 20px; }
.news__more { font-family: var(--en); font-size: 11px; font-weight: 300; letter-spacing: .2em; text-transform: uppercase; color: var(--ink2); text-decoration: none; display: inline-flex; align-items: center; gap: 8px; transition: color .2s; }
.news__more::after { content: '→'; }
.news__more:hover { color: var(--G); }

/* ============================================================
   PHILOSOPHY — グリーンアクセントバンド
   ============================================================ */
.phil {
  background: var(--G);
  padding: clamp(52px,5.5vw,72px) clamp(28px,6vw,80px);
  text-align: center;
  position: relative; overflow: hidden;
}
.phil::before {
  content: 'SINCERITY';
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--en); font-size: clamp(80px,12vw,160px); font-weight: 600;
  color: rgba(255,255,255,.06); letter-spacing: .1em;
  pointer-events: none; user-select: none;
}
.phil__q {
  font-family: var(--se);
  font-size: clamp(26px,3.5vw,44px);
  font-weight: 900; color: #fff;
  line-height: 1.55; letter-spacing: .06em;
  position: relative; z-index: 1;
}
.phil__bar { width: 48px; height: 3px; background: rgba(255,255,255,.5); margin: 24px auto; position: relative; z-index: 1; }
.phil__txt { font-size: 15px; color: rgba(255,255,255,.84); line-height: 2.2; max-width: 560px; margin: 0 auto; position: relative; z-index: 1; }
.sp-br { display: none; }

/* ============================================================
   ABOUT
   ============================================================ */
.about { display: grid; grid-template-columns: 1fr 1fr; width: 100%; overflow: hidden; }
.about__img { overflow: hidden; min-height: clamp(360px,46vw,580px); }
.about__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 9s ease; }
.about:hover .about__img img { transform: scale(1.04); }
.about__body { background: #111; padding: clamp(56px,6vw,96px) clamp(36px,5vw,76px); display: flex; flex-direction: column; justify-content: center; position: relative; overflow: hidden; }
.about__wm { position: absolute; right: -20px; bottom: -10px; font-family: var(--en); font-size: clamp(80px,11vw,150px); font-weight: 600; color: rgba(255,255,255,.04); line-height: 1; white-space: nowrap; pointer-events: none; user-select: none; }
.about__ey { font-family: var(--en); font-size: 10px; font-weight: 300; letter-spacing: .3em; text-transform: uppercase; color: var(--Gm); margin-bottom: 18px; }
.about__h { font-family: var(--se); font-size: clamp(22px,2.6vw,34px); font-weight: 900; color: #fff; line-height: 1.6; letter-spacing: .04em; }
.about__bar { width: 40px; height: 3px; background: var(--G); margin: 22px 0; }
.about__txt { font-size: 14px; line-height: 2.2; color: rgba(255,255,255,.68); max-width: 380px; }
.about__btn { display: inline-flex; align-items: center; gap: 10px; margin-top: 36px; background: var(--G); color: #fff; text-decoration: none; padding: 14px 30px; font-size: 13px; font-weight: 700; letter-spacing: .1em; border-radius: 2px; transition: background .2s; width: fit-content; }
.about__btn:hover { background: var(--Gd); }

/* ============================================================
   RECRUIT
   ============================================================ */
.rec { display: grid; grid-template-columns: clamp(260px,28vw,400px) 1fr 1fr 1fr; width: 100%; overflow: hidden; min-height: clamp(380px,50vw,600px); }
.rec__body { background: rgba(15,15,15,.9); display: flex; flex-direction: column; justify-content: center; padding: clamp(48px,5vw,80px) clamp(28px,3.5vw,52px); position: relative; overflow: hidden; }
.rec__wm { position: absolute; left: -12px; bottom: -6px; font-family: var(--en); font-size: clamp(70px,9vw,120px); font-weight: 600; color: rgba(255,255,255,.05); line-height: 1; pointer-events: none; user-select: none; white-space: nowrap; }
.rec__ey { font-family: var(--en); font-size: 10px; font-weight: 300; letter-spacing: .3em; text-transform: uppercase; color: var(--Gm); margin-bottom: 16px; }
.rec__h { font-family: var(--se); font-size: clamp(18px,2.2vw,26px); font-weight: 900; color: #fff; line-height: 1.65; letter-spacing: .04em; }
.rec__bar { width: 36px; height: 3px; background: var(--G); margin: 18px 0; }
.rec__txt { font-size: 13px; color: rgba(255,255,255,.7); line-height: 2.2; }
.rec__btn { display: inline-flex; align-items: center; gap: 8px; margin-top: 28px; background: var(--G); color: #fff; text-decoration: none; padding: 12px 26px; font-size: 13px; font-weight: 700; letter-spacing: .1em; border-radius: 2px; transition: background .2s; width: fit-content; }
.rec__btn:hover { background: var(--Gd); }
.rec__photo { overflow: hidden; }
.rec__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .65s ease; }
.rec__photo:hover img { transform: scale(1.06); }

/* ============================================================
   WORKS — 白背景
   ============================================================ */
.works { background: var(--white); padding: clamp(64px,7vw,100px) clamp(28px,6vw,80px); }
.works__in { max-width: 1200px; margin: 0 auto; }
.works__hd { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 36px; flex-wrap: wrap; gap: 12px; }
.works__hd-ttl { font-family: var(--se); font-size: clamp(22px,2.8vw,32px); font-weight: 900; }
.works__hd-en  { font-family: var(--en); font-size: 11px; font-weight: 300; letter-spacing: .2em; color: var(--G); text-transform: uppercase; display: block; margin-top: 5px; }
.works__more a { font-size: 12px; color: var(--ink2); text-decoration: none; display: inline-flex; align-items: center; gap: 6px; letter-spacing: .06em; transition: color .2s; }
.works__more a::after { content: '→'; }
.works__more a:hover { color: var(--G); }
.works__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
.works__card { background: var(--off); overflow: hidden; }
.works__card-img { overflow: hidden; aspect-ratio: 16/10; }
.works__card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .65s ease; }
.works__card:hover .works__card-img img { transform: scale(1.05); }
.works__card-body { padding: 14px 18px 20px; }
.works__cat { font-size: 10px; font-weight: 700; letter-spacing: .1em; background: var(--G); color: #fff; padding: 2px 9px; display: inline-block; margin-bottom: 8px; border-radius: 1px; }
.works__title { font-size: 14px; font-weight: 500; line-height: 1.65; color: var(--ink); }
.works__date  { font-family: var(--en); font-size: 11px; color: var(--ink2); margin-top: 5px; letter-spacing: .04em; }
.works__more2 { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 11px; color: var(--G); text-decoration: none; font-weight: 700; letter-spacing: .06em; transition: gap .2s; }
.works__more2::after { content: '→'; }
.works__more2:hover { gap: 10px; }
.works__all { text-align: center; margin-top: 48px; }
.works__allbtn { display: inline-flex; align-items: center; gap: 10px; background: var(--G); color: #fff; text-decoration: none; padding: 15px 52px; font-size: 14px; font-weight: 700; letter-spacing: .1em; border-radius: 2px; transition: background .2s; }
.works__allbtn:hover { background: var(--Gd); }

/* ============================================================
   COMPANY — 薄緑ベース
   ============================================================ */
.company { background: var(--Gl); padding: clamp(64px,7vw,100px) clamp(28px,6vw,80px); }
.company__in { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(48px,6vw,96px); align-items: start; }
.company__table { width: 100%; border-collapse: collapse; margin-top: 28px; }
.company__table tr { border-bottom: 1px solid var(--rule); }
.company__table tr:first-child { border-top: 1px solid var(--rule); }
.company__table th { font-size: 13px; font-weight: 700; color: var(--ink2); padding: 16px 20px 16px 0; width: 110px; vertical-align: top; white-space: nowrap; }
.company__table td { font-size: 14px; padding: 16px 0; line-height: 1.9; }
.company__map { border-radius: 6px; overflow: hidden; box-shadow: 0 4px 28px rgba(27,138,60,.12); }
.company__map iframe { display: block; width: 100%; height: 380px; border: none; }

/* ============================================================
   CONTACT — 白背景
   ============================================================ */
.contact {
  background:
    radial-gradient(circle at 86% 16%, rgba(27, 138, 60, .1), rgba(27, 138, 60, 0) 45%),
    #f9fbf9;
  padding: clamp(64px,7vw,96px) clamp(28px,6vw,80px);
}
.contact__in {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(34px,4.8vw,78px);
  align-items: center;
}
.contact__ey { font-family: var(--en); font-size: 10px; font-weight: 300; letter-spacing: .28em; text-transform: uppercase; color: var(--G); margin-bottom: 12px; }
.contact__h { font-family: var(--se); font-size: clamp(28px,3.1vw,40px); font-weight: 900; margin-bottom: 16px; line-height: 1.35; }
.contact__txt { font-size: 14px; line-height: 2.1; color: var(--ink2); }
.contact__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin-top: 18px;
}
.contact__chips li {
  border: 1px solid #c8dfcf;
  background: #fff;
  color: var(--ink2);
  font-size: 12px;
  padding: 6px 10px;
  line-height: 1;
}
.contact__panel {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}
.contact__panel-lead {
  font-size: 15px;
  line-height: 1.9;
  color: var(--ink2);
  margin-bottom: 14px;
  font-weight: 700;
}
.contact__fbtn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--G);
  color: #fff;
  text-decoration: none;
  padding: 15px 38px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .1em;
  border-radius: 2px;
  transition: background .2s;
}
.contact__fbtn:hover { background: var(--Gd); }
.contact .contact__panel .contact__fbtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: 10px;
  background: var(--G);
  color: #fff;
  text-decoration: none;
  padding: 17px 22px;
  font-size: clamp(18px, 2vw, 24px);
  font-family: var(--se);
  font-weight: 700;
  letter-spacing: .05em;
  border-radius: 2px;
  transition: background .2s;
}
.contact .contact__panel .contact__fbtn:hover { background: var(--Gd); }
.contact__sbtn {
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  border: 1px solid #b9d9c3;
  text-decoration: none;
  color: var(--ink);
  background: #f8fcf9;
  padding: 12px 18px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
  transition: border-color .2s, color .2s, background .2s;
}
.contact__sbtn:hover {
  border-color: var(--G);
  color: var(--G);
  background: #fff;
}
.contact__meta {
  margin-top: 12px;
  font-size: 12px;
  line-height: 1.85;
  color: var(--ink2);
}

/* ============================================================
   FOOTER
   ============================================================ */
.ft { background: #111; }
.ft__top { padding: clamp(48px,5.5vw,72px) clamp(28px,6vw,80px); display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 44px; }
.ft__logo { display: flex; align-items: center; gap: 10px; text-decoration: none; margin-bottom: 20px; }
.ft__logo img { height: 32px; width: auto; filter: brightness(0) invert(1); opacity: .9; }
.ft__logo-name { font-size: 13px; font-weight: 700; color: #fff; letter-spacing: .07em; }
.ft__addr { font-size: 12px; color: rgba(255,255,255,.36); line-height: 2.2; font-style: normal; }
.ft__nh { font-family: var(--en); font-size: 9px; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: var(--Gm); margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid rgba(255,255,255,.1); }
.ft__nl { list-style: none; }
.ft__nl li { margin-bottom: 9px; }
.ft__nl a { font-size: 12px; color: rgba(255,255,255,.42); text-decoration: none; transition: color .2s; }
.ft__nl a:hover { color: #fff; }
.ft__btm { border-top: 1px solid rgba(255,255,255,.07); padding: 18px clamp(28px,6vw,80px); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.ft__copy { font-size: 11px; color: rgba(255,255,255,.22); font-family: var(--en); letter-spacing: .06em; }
.ft__sub-links { display: flex; gap: 18px; list-style: none; }
.ft__sub-links a { font-size: 11px; color: rgba(255,255,255,.24); text-decoration: none; transition: color .2s; }
.ft__sub-links a:hover { color: rgba(255,255,255,.65); }

/* ============================================================
   SUB PAGE
   ============================================================ */
.ms-page { padding-top: 0; background: var(--white); }
.ms-page > .ms-page-sec:first-child { padding-top: calc(clamp(58px, 6vw, 92px) + 64px); }
body.admin-bar .ms-page > .ms-page-sec:first-child { padding-top: calc(clamp(58px, 6vw, 92px) + 96px); }
@media screen and (max-width:782px){
  body.admin-bar .ms-page > .ms-page-sec:first-child { padding-top: calc(clamp(58px, 6vw, 92px) + 110px); }
}

.ms-page-hero {
  position: relative;
  min-height: clamp(240px, 40vw, 360px);
  display: flex;
  align-items: flex-end;
  padding: clamp(48px, 7vw, 88px) clamp(28px, 6vw, 80px);
  overflow: hidden;
  background-image:
    linear-gradient(108deg, rgba(0,0,0,.7) 0%, rgba(0,0,0,.42) 52%, rgba(0,0,0,.2) 100%),
    var(--ms-page-hero-image);
  background-size: cover, cover;
  background-position: center, center;
  background-repeat: no-repeat, no-repeat;
}
.ms-page-hero__in { position: relative; z-index: 1; color: #fff; max-width: 1100px; width: 100%; margin: 0 auto; }
.ms-page-hero__en { font-family: var(--en); font-size: 11px; font-weight: 300; letter-spacing: .26em; text-transform: uppercase; color: rgba(255,255,255,.75); }
.ms-page-hero__ja { font-family: var(--se); font-size: clamp(30px, 4.4vw, 54px); font-weight: 900; margin-top: 8px; letter-spacing: .05em; line-height: 1.35; }
.ms-page-hero__lead { margin-top: 14px; font-size: clamp(13px, 1.25vw, 15px); color: rgba(255,255,255,.88); line-height: 2; max-width: 620px; }

.ms-page-sec { padding: clamp(58px, 6vw, 92px) clamp(28px, 6vw, 80px); }
.ms-page-sec--soft { background: var(--Gl); }
.ms-page-in { max-width: 1100px; margin: 0 auto; }
.ms-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 56px); }
.ms-card { background: var(--off); border: 1px solid var(--rule); padding: 24px; }
.ms-list { list-style: none; }
.ms-list li + li { margin-top: 9px; }
.ms-list li { font-size: 14px; line-height: 1.9; color: var(--ink2); }

.ms-form { background: var(--off); border: 1px solid var(--rule); padding: clamp(20px, 3.2vw, 34px); }
.ms-form__row + .ms-form__row { margin-top: 18px; }
.ms-form__label { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.ms-form__req { font-size: 10px; font-weight: 700; letter-spacing: .08em; color: #fff; background: var(--G); padding: 2px 7px; }
.ms-form__input, .ms-form__textarea {
  width: 100%;
  border: 1px solid #c8dcc8;
  background: #fff;
  font-size: 14px;
  color: var(--ink);
  padding: 12px 14px;
  border-radius: 2px;
}
.ms-form__textarea { min-height: 180px; resize: vertical; }
.ms-form__note { font-size: 12px; color: var(--ink2); line-height: 1.9; }
.ms-form__check { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; color: var(--ink2); line-height: 1.8; }
.ms-form__alert { margin-bottom: 16px; padding: 12px 14px; font-size: 13px; line-height: 1.8; border-radius: 2px; }
.ms-form__alert--ok { background: #e9f7ef; color: #155a2c; border: 1px solid #b9e5c7; }
.ms-form__alert--ng { background: #fff1f1; color: #7b2020; border: 1px solid #f1b9b9; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:980px){
  .fv-body { padding: calc(64px + clamp(16px,2.8vh,28px)) clamp(20px,5vw,42px) clamp(20px,3.2vh,36px); }
  .fv-h1 { font-size: clamp(42px, 7.2vw, 58px); }
  .fv-desc { font-size: 14px; line-height: 2; }
  .fv-badge { width: 114px; height: 114px; }
  .fv-badge .b-main { font-size: 16px; }
  .fv-badge .b-small,
  .fv-badge .b-link { font-size: 9px; }
  .about { grid-template-columns: 1fr; }
  .about__img { min-height: 300px; }
  .rec { grid-template-columns: 1fr 1fr; grid-template-rows: auto 1fr; }
  .rec__body { grid-column: 1/-1; }
  .rec__photo { min-height: 200px; }
  .contact__in { grid-template-columns: 1fr; gap: 28px; }
  .company__in { grid-template-columns: 1fr; }
  .ft__top { grid-template-columns: 1fr 1fr; }
  .ms-grid-2 { grid-template-columns: 1fr; }
}
@media (max-height: 860px) and (max-width: 980px){
  .fv-body {
    padding-top: calc(64px + 12px);
    padding-bottom: 20px;
  }
  .fv-h1 { font-size: clamp(38px, 5.4vmin, 58px); }
  .fv-desc { margin-top: 12px; line-height: 1.85; }
  .fv-btns { margin-top: 16px; }
  .fv-badge--pc {
    width: 110px;
    height: 110px;
    bottom: 58px;
  }
  .fv-badge .b-main { font-size: 16px; }
  .fv-badge .b-small,
  .fv-badge .b-link { font-size: 9px; }
}
@media (min-width: 981px){
  .fv-eyebrow {
    font-size: clamp(12px, .72vw, 14px);
    margin-bottom: clamp(22px, 2.1vh, 30px);
  }
  .fv-h1 {
    font-size: clamp(76px, 5.1vw, 98px);
    line-height: 1.12;
  }
  .fv-desc {
    font-size: clamp(18px, 1.18vw, 22px);
    max-width: 680px;
    margin-top: clamp(18px, 2.2vh, 28px);
  }
  .fv-actions {
    margin-top: clamp(24px, 3.3vh, 42px);
  }
  .btn {
    padding: clamp(14px, 1.15vw, 18px) clamp(30px, 2.35vw, 44px);
    font-size: clamp(14px, .88vw, 16px);
  }
  .fv-badge--pc { width: 132px; height: 132px; }
  .ms-grid-2 {
    align-items: start;
  }
  .ms-grid-2 > .ms-form__row + .ms-form__row {
    margin-top: 0;
  }
}
@media(max-width:640px){
  .fv {
    min-height: 640px;
  }
  body.admin-bar .fv {
    min-height: 600px;
  }
  .fv-body {
    justify-content: center;
    align-items: flex-start;
    padding: calc(64px + 18px) 16px 24px;
    text-align: left;
  }
  .fv-eyebrow {
    width: min(94%, 340px);
    margin-bottom: 12px;
    font-size: 10px;
    letter-spacing: .15em;
  }
  .fv-h1 {
    width: min(94%, 340px);
    font-size: clamp(48px, 12vw, 62px);
    line-height: 1.08;
  }
  .fv-desc {
    width: min(94%, 340px);
    margin-top: 10px;
    font-size: 12px;
    line-height: 1.82;
    border-left-width: 2px;
    padding-left: 10px;
  }
  .fv-actions {
    position: absolute;
    left: 16px;
    bottom: 24px;
    width: calc(100% - 32px);
    margin-top: 0;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 10px;
  }
  .fv-btns {
    margin-top: 0;
    width: 164px;
    flex-direction: column;
    gap: 8px;
  }
  .btn {
    width: 100%;
    min-width: 0;
    justify-content: center;
    padding: 10px 8px;
    font-size: 11px;
    letter-spacing: .06em;
  }
  .fv-scroll {
    display: none;
  }
  .fv-badge--pc {
    display: none;
  }
  .fv-badge--sp {
    display: flex;
    position: static;
    width: 96px;
    height: 96px;
    opacity: 1;
    animation: none;
    transform: none;
  }
  .fv-badge .b-small { font-size: 8px; }
  .fv-badge .b-main  { font-size: 14px; }
  .fv-badge .b-link  { font-size: 8px; }
  .sp-br { display: block; }

  @media (max-width: 420px) {
    .fv-h1 { font-size: clamp(44px, 12vw, 54px); }
    .fv-actions { left: 10px; bottom: 20px; width: calc(100% - 20px); gap: 8px; }
    .fv-btns { width: 152px; }
    .fv-badge--sp {
      width: 90px;
      height: 90px;
    }
  }

  body.page:not(.home):not(.blog) .hd {
    position: sticky;
    top: 0;
  }
  body.page:not(.home):not(.blog).admin-bar .hd {
    top: 46px;
  }
  body.page:not(.home):not(.blog) .ms-page > .ms-page-sec:first-child {
    padding-top: clamp(58px, 6vw, 92px);
  }
  body.page:not(.home):not(.blog).admin-bar .ms-page > .ms-page-sec:first-child {
    padding-top: calc(clamp(58px, 6vw, 92px) + 46px);
  }
  body.page:not(.home):not(.blog) .sp-nav { top: 64px; }
  body.page:not(.home):not(.blog).admin-bar .sp-nav { top: 110px; }
  .ms-hd__nav { display: none; }
  .hd-nav { display: none; }
  .hd-ham { display: flex; }
  .works__grid { grid-template-columns: 1fr; gap: 0; }
  .works__card { border-bottom: 2px solid var(--Gl); }
  .rec { grid-template-columns: 1fr; }
  .rec .rec__photo:nth-child(n+3) { display: none; }
  .ft__top { grid-template-columns: 1fr; }
  .news__item { grid-template-columns: 96px 62px 1fr; font-size: 13px; gap: 8px; }
  .company__table th { width: 88px; font-size: 12px; }
}
