*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --navy:#0f1d35;--blue:#2563eb;--blue-light:#3b82f6;--blue-pale:#dbeafe;--blue-50:#eff6ff;
  --accent:#0891b2;--accent-pale:#cffafe;
  --white:#ffffff;--g50:#f8fafc;--g100:#f1f5f9;--g200:#e2e8f0;--g300:#cbd5e1;--g400:#94a3b8;--g500:#64748b;--g600:rgb(71, 85, 105);--g700:#334155;--g800:#1e293b;--g900:#0f172a;
  --font-jp:'Noto Sans JP',sans-serif;--font-en:'Outfit',sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
}
html{scroll-behavior:smooth}
body{font-family:var(--font-jp);color:var(--g800);background:var(--white);-webkit-font-smoothing:antialiased}

video.bg {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  min-width: 100%;
  min-height: 100%;
  width: auto;
  height: auto;
  opacity: .4;
  z-index: -1;
}

@media print{
  *{animation:none!important;transition:none!important}
  .fade-up{opacity:1!important;transform:none!important}
  .nav{position:relative!important;box-shadow:none!important;backdrop-filter:none!important;border-bottom:2px solid var(--g300)}
  .hero-accent,.hero-accent2{display:none}
  section{padding:2.5rem 1.5rem;break-inside:avoid}
  .btn-primary,.btn-secondary,.nav-cta{border:1.5px solid var(--g800)!important;background:var(--white)!important;color:var(--g800)!important;box-shadow:none!important}
  a{color:var(--g800);text-decoration:none}
  body{font-size:10.5pt;line-height:1.6}
}


/* NAV */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--g200)}
.nav-inner{max-width:1160px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;height:64px}
.logo{width: 170px; padding-top: 21px; overflow: hidden; height: 0; background-image: url(../img/logo-bm.png); background-size: 100%; }
.logo .bl{color:var(--blue)}
.nav-links{display:flex;gap:1.8rem;list-style:none;align-items:center}
.nav-links a{color:var(--g600);text-decoration:none;font-size:.82rem;font-weight:500;transition:color .2s}
.nav-links a:hover{color:var(--blue)}
.nav-cta{background:var(--blue);color:var(--white)!important;padding:.45rem 1.2rem;border-radius:6px;font-size:.8rem;font-weight:600}

/* HAMBURGER */
.hamburger{display:none;flex-direction:column;justify-content:center;align-items:center;width:40px;height:40px;cursor:pointer;border:none;background:transparent;border-radius:6px;padding:4px;gap:5px;transition:background .2s}
.hamburger:hover{background:var(--g100)}
.hamburger span{display:block;width:22px;height:2px;background:var(--g700);border-radius:2px;transition:transform .3s var(--ease),opacity .2s}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.open span:nth-child(2){opacity:0}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* MOBILE MENU DRAWER */
.mobile-menu{
  display:none;
  position:fixed;
  top:64px;left:0;right:0;
  background:rgba(255,255,255,.98);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--g200);
  z-index:99;
  padding:0;
  max-height:0;
  overflow:hidden;
  transition:max-height .35s var(--ease);
}
.mobile-menu.open{max-height:320px}
.mobile-menu-inner{padding:1rem 1.5rem 1.5rem}
.mobile-menu ul{list-style:none;display:flex;flex-direction:column;gap:.2rem}
.mobile-menu ul li a{
  display:block;
  padding:.75rem .8rem;
  color:var(--g700);
  text-decoration:none;
  font-size:.92rem;
  font-weight:500;
  border-radius:8px;
  transition:background .15s,color .15s
}
.mobile-menu ul li a:hover{background:var(--g100);color:var(--blue)}
.mobile-menu .mobile-cta{
  display:block;
  margin-top:.8rem;
  background:var(--blue);
  color:var(--white)!important;
  text-align:center;
  padding:.8rem;
  border-radius:8px;
  font-size:.88rem;
  font-weight:600;
  text-decoration:none;
  transition:background .2s
}
.mobile-menu .mobile-cta:hover{background:var(--navy)}
/* overlay */
.nav-overlay{display:none;position:fixed;inset:0;top:64px;z-index:98;background:rgba(0,0,0,.2)}
.nav-overlay.open{display:block}

/* HERO */
.hero{min-height:88vh;display:flex;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden;border-bottom:1px solid var(--g200);padding-top:64px;box-shadow: inset 0 0 50px 50px rgba(255, 255, 255, 1);}
.hero-content{position:relative;z-index:2;max-width:820px;padding:3rem 2rem}
.hero-label{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--g300);border-radius:999px;padding:.35rem 1.1rem;margin-bottom:1.8rem;font-size:.76rem;color:var(--g600);font-weight:500;background:var(--white)}
.hero-label .dot{width:6px;height:6px;background:var(--blue);border-radius:50%}
.hero h1{font-size:clamp(1.9rem,4.8vw,3.4rem);font-weight:900;color:var(--g900);line-height:1.35;letter-spacing:-.03em;margin-bottom:1.2rem;text-shadow: 0px 0px 5px rgba(255, 255, 255, 1);}
.hero .hl{color:var(--blue);position:relative;display:inline}
.hero .hl::after{content:'';position:absolute;bottom:2px;left:0;right:0;height:7px;background:var(--blue-pale);border-radius:3px;z-index:-1}
.hero-sub{font-size:clamp(.92rem,1.5vw,1.05rem);color:var(--g800);line-height:2;margin-bottom:2.2rem;text-shadow: 0px 0px 10px rgba(255, 255, 255, 1);}
.hero-btns{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}
.btn-p{display:inline-flex;align-items:center;gap:6px;background:var(--blue);color:var(--white);padding:.8rem 1.8rem;border-radius:7px;text-decoration:none;font-weight:600;font-size:.9rem;border:2px solid var(--blue);transition:all .2s; box-shadow: 4px 6px 6px rgba(71,85,105,.4)}
.btn-p:hover{background:var(--navy);border-color:var(--navy)}
.btn-s{display:inline-flex;align-items:center;gap:6px;background:var(--white);color:var(--g700);padding:.8rem 1.8rem;border-radius:7px;text-decoration:none;font-weight:500;font-size:.9rem;border:1.5px solid var(--g300);transition:all .2s}
.btn-s:hover{border-color:var(--blue);color:var(--blue)}

/* SHARED */
section{padding:4.5rem 2rem}
section.lowHead{padding:9rem 2rem 4.5rem}
.si{max-width:1100px;margin:0 auto}
.sl{font-family:var(--font-en);font-size:.7rem;font-weight:700;color:var(--blue);letter-spacing:.16em;text-transform:uppercase;margin-bottom:.4rem}
.st{font-size:clamp(1.35rem,2.6vw,1.9rem);font-weight:800;color:var(--g900);line-height:1.45;margin-bottom:.6rem}
.st .em{color:var(--blue)}
.sd{font-size:.92rem;color:var(--g500);line-height:1.85;max-width:600px;margin-bottom:2.2rem}

/* CHALLENGES */
.sec-alt{background:var(--g50);border-top:1px solid var(--g200);border-bottom:1px solid var(--g200)}
.sec-alt.p{background:var(--g200);border-top:1px solid var(--g200);border-bottom:1px solid var(--g200)}
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.1rem}
.ccard{background:var(--white);border:1px solid var(--g200);border-radius:10px;padding:1.6rem;transition:border-color .2s}
.ccard:hover{border-color:var(--blue)}
.ccard .ic{width:40px;height:40px;border-radius:9px;background:var(--blue-50);display:flex;align-items:center;justify-content:center;margin-bottom:.8rem;font-size:1.1rem}
.ccard h3{font-size:.9rem;font-weight:700;color:var(--g800);margin-bottom:.4rem;line-height:1.5}
.ccard p{font-size:.82rem;color:var(--g500);line-height:1.7}

/* APPROACH */
.agrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem;margin-top:.5rem}
.acard{border:1.5px solid var(--g200);border-radius:11px;padding:1.8rem;position:relative;background:var(--white);transition:all .25s}
.acard .num{font-family:var(--font-en);font-size:3.2rem;font-weight:800;color:var(--g100);position:absolute;top:6px;right:14px;line-height:1}
.acard:hover{border-color:var(--blue);box-shadow:0 4px 16px rgba(37,99,235,.05)}
.acard:hover .num{color:var(--blue-pale)}
.atag{display:inline-block;font-size:.66rem;font-weight:700;padding:.22rem .65rem;border-radius:4px;margin-bottom:.7rem}
.atag-ai{background:var(--blue);color:var(--white)}
.atag-g{background:var(--g100);color:var(--g500)}
.acard h3{font-size:1rem;font-weight:700;color:var(--g900);margin-bottom:.4rem}
.acard p{font-size:.84rem;color:var(--g500);line-height:1.75;margin-bottom:1rem}
.alink{color:var(--blue);font-weight:600;font-size:.82rem;text-decoration:none;display:inline-flex;align-items:center;gap:4px;transition:gap .2s}
.alink:hover{gap:8px}
.acard.feat{border-color:var(--blue);border-width:2px;background:var(--blue-50)}
.acard.feat .num{color:rgba(37,99,235,.1)}

/* SERVICES */
.svgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.3rem}
.svcard{background:var(--white);border:1px solid var(--g200);border-radius:11px;padding:1.8rem;transition:border-color .2s}
.svcard:hover{border-color:var(--blue)}
.svcard .badge{display:inline-block;font-size:.66rem;font-weight:700;padding:.22rem .65rem;border-radius:4px;margin-bottom:.8rem}
.svcard .badge.new{background:var(--blue);color:var(--white)}
.svcard .badge.sub{background:var(--g100);color:var(--g500)}
.svcard h3{font-size:1.05rem;font-weight:700;color:var(--g900);margin-bottom:.5rem}
.svcard p{font-size:.84rem;color:var(--g500);line-height:1.8;margin-bottom:1rem}
.svcard .link{color:var(--blue);font-size:.82rem;font-weight:600;text-decoration:none}

/* NUMBERS */
.nums{text-align:center;border-bottom:1px solid var(--g200)}
.ng{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1.5rem;margin-top:2rem}
.ni .val{font-family:var(--font-en);font-size:2.6rem;font-weight:800;color:var(--blue);line-height:1}
.ni .val span{font-size:.95rem;font-weight:500;color:var(--g400);margin-left:2px}
.ni .lab{font-size:.82rem;color:var(--g500);margin-top:.35rem}

/* COMPANY */
.comp-inner{display:flex;gap:2.5rem;align-items:center}
.comp-text{flex:1}
.comp-vis{flex:1;background:var(--white);border:1px solid var(--g200);border-radius:11px;padding:2.2rem;text-align:center}
.comp-logo{width: 170px; padding-top: 21px; overflow: hidden; margin: 0 auto; height: 0; background-image: url(../img/logo-bm.png); background-size: 100%; }
.comp-tag{font-size:.8rem;color:var(--g500);letter-spacing:.08em;margin-top:.2rem}

/* NEWS */
.nlist{display:flex;flex-direction:column;gap:.5rem;margin-top:1.2rem}
.nitem{display:flex;align-items:center;gap:1.3rem;padding:.9rem 1.1rem;border:1px solid var(--g200);border-radius:7px;text-decoration:none;background:var(--white);transition:border-color .2s}
.nitem:hover{border-color:var(--blue)}
.ndate{font-family:var(--font-en);font-size:.76rem;color:var(--g400);white-space:nowrap;font-weight:500}
.ntitle{font-size:.86rem;color:var(--g700);font-weight:500;flex:1}
.narrow{color:var(--g400);font-size:.8rem}
#irp-press-list8 > div { margin-bottom: .5rem;}

/* CTA */
.fcta{text-align:center;padding:3.5rem 2rem;border-top:3px solid var(--blue);background:var(--blue-50)}
.fcta h2{font-size:clamp(1.2rem,2.4vw,1.7rem);font-weight:800;color:var(--g900);margin-bottom:.6rem}
.fcta p{font-size:.92rem;color:var(--g500);margin-bottom:1.8rem}
.fcta-btns{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}

footer{border-top:1px solid var(--g200);padding:1.5rem 2rem;text-align:center; background-color: var(--g50);}
footer .fl{display:flex;gap:1.2rem;justify-content:center;margin-bottom:.6rem;flex-wrap:wrap}
footer .fl a{color:var(--g500);text-decoration:none;font-size:.72rem}
footer .fl a:hover{color:var(--blue)}
footer .fc{font-size:.7rem;color:var(--g400)}

@media(max-width:768px){.agrid{grid-template-columns:1fr}.comp-inner{flex-direction:column}.nav-links{display:none}}
@media(max-width:900px){[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}}
.fade-up{opacity:0;transform:translateY(20px);transition:all .55s var(--ease)}.fade-up.visible{opacity:1;transform:translateY(0)}

@media(max-width:768px){
  .agrid{grid-template-columns:1fr}
  .comp-inner{flex-direction:column}
  /* デスクトップナビを非表示、ハンバーガーを表示 */
  .nav-links{display:none}
  .hamburger{display:flex}
  .mobile-menu{display:block}
}
@media(max-width:900px){[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}}
.fade-up{opacity:0;transform:translateY(20px);transition:all .55s var(--ease)}.fade-up.visible{opacity:1;transform:translateY(0)}