@charset "UTF-8";

/* Service-page additions: deliberately use the site's existing Mitsuba blue. */
:root {
  --service-blue: #3B6AA2;
  --service-deep: #1D4F8E;
  --service-ink: #23384e;
  --service-muted: #536b80;
  --service-paper: #f2f7fa;
  --service-line: #d8e3eb;
  --service-white: #fbfdfe;
}

/* Homepage opening: keep the familiar illustration, but put the local offer first. */
body.top .sec-main {
  overflow: visible;
  padding: clamp(30px, 4.5vw, 58px) 0 40px;
  background:
    radial-gradient(ellipse at 78% 49%, rgba(225, 237, 246, .72), transparent 41%),
    #fbfdfe;
}
body.top .sec-main .sec-main__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.04fr) minmax(0, .96fr);
  align-items: center;
  gap: clamp(20px, 4vw, 54px);
  max-width: 1240px;
  padding: 0 clamp(24px, 4vw, 56px);
}
body.top .sec-main .sec-main__inner::before { display: none; }
body.top .sec-main .main-img {
  grid-column: 2;
  grid-row: 1;
  width: 100%;
  max-width: 590px;
  margin: 0;
  padding: 0;
}
body.top .sec-main .main-img img { display: block; width: 100%; height: auto; }
body.top .sec-main .main-ttl {
  grid-column: 1;
  grid-row: 1;
  width: auto;
  margin: 0;
  padding: 0;
}
body.top .home-intro__location {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 17px;
  color: var(--service-blue);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
}
body.top .home-intro__location span {
  width: 22px;
  height: 1px;
  background: var(--service-blue);
}
body.top .home-intro .ttl-en { display: none !important; }
body.top .home-intro__brand {
  margin: 0 0 9px;
  color: #6885a0;
  font-family: Georgia, serif;
  font-size: 12px;
  letter-spacing: .13em;
}
body.top .home-intro__title {
  margin: 0 0 12px;
  color: var(--service-deep);
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(27px, 3.05vw, 40px);
  font-weight: 700;
  line-height: 1.48;
  letter-spacing: .015em;
}
body.top .home-intro__phrase { white-space: nowrap; }
body.top .home-intro__subheading {
  margin: 0 0 11px;
  color: #294b6d;
  font-size: clamp(15px, 1.45vw, 18px);
  font-weight: 700;
  line-height: 1.75;
}
body.top .home-intro__description {
  max-width: 570px;
  margin: 0 0 19px;
  color: #536b80;
  font-size: 14px;
  line-height: 1.9;
}
body.top .home-intro__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 17px; }
body.top .home-intro__actions a {
  display: inline-flex;
  min-height: 49px;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 12px 17px;
  color: var(--service-deep);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: color .18s ease, background-color .18s ease, transform .18s ease;
}
body.top .home-intro__actions a span { font-size: 18px; }
body.top .home-intro__actions .home-intro__primary {
  min-width: 218px;
  color: #fff;
  background: var(--service-deep);
}
body.top .home-intro__actions .home-intro__secondary { padding-right: 3px; padding-left: 3px; }
body.top .home-intro__actions a:hover,
body.top .home-intro__actions a:focus-visible { transform: translateY(-2px); }
body.top .home-intro__actions .home-intro__primary:hover,
body.top .home-intro__actions .home-intro__primary:focus-visible { color: #fff; background: var(--service-blue); }
body.top .home-intro__actions .home-intro__secondary:hover,
body.top .home-intro__actions .home-intro__secondary:focus-visible { color: #274f79; }
body.top .home-intro__actions a:focus-visible { outline: 3px solid #d49d4a; outline-offset: 3px; }
body.top .sec-main .scroll { display: none; }
body.top .service-entry {
  padding: 24px;
  background: #edf4f8;
}
body.top .service-entry__inner {
  display: flex;
  max-width: 1060px;
  justify-content: space-between;
  gap: 20px;
}
body.top .service-entry__eyebrow { align-self: center; margin: 0; }
body.top .service-entry__links { flex: 1; flex-direction: row; justify-content: flex-end; gap: 12px; }
body.top .service-entry__link { width: auto; min-width: 245px; }

.service-entry {
  position: relative;
  z-index: 1;
  padding: clamp(48px, 7vw, 94px) 24px;
  color: var(--service-ink);
  background: var(--service-paper);
}
.service-entry__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(250px, .95fr);
  gap: 26px 7vw;
  max-width: 1120px;
  margin: 0 auto;
  align-items: center;
}
.service-entry__eyebrow, .service-kicker {
  margin: 0 0 16px;
  color: var(--service-blue);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .16em;
}
.service-entry__eyebrow { grid-column: 1 / -1; margin-bottom: -12px; }
.service-entry__copy h1 {
  margin: 0 0 18px;
  color: var(--service-deep);
  font-size: clamp(27px, 4vw, 44px);
  line-height: 1.45;
  letter-spacing: .035em;
}
.service-entry__copy p {
  max-width: 610px;
  margin: 0;
  color: var(--service-muted);
  font-size: 15px;
  line-height: 2;
}
.service-entry__links { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.service-entry__link, .service-entry__consult {
  display: flex;
  width: 100%;
  min-height: 50px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 18px;
  border: 1px solid #c5d5e3;
  color: var(--service-deep);
  background: rgba(251,253,254,.75);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.service-entry__link:hover, .service-entry__link:focus-visible, .service-entry__consult:hover, .service-entry__consult:focus-visible {
  color: #fff;
  background: var(--service-deep);
  transform: translateY(-2px);
}
.service-entry .service-entry__link--primary { color: #fff; border-color: var(--service-deep); background: var(--service-deep); }
.service-entry__link--primary:hover, .service-entry__link--primary:focus-visible { color: var(--service-deep); background: var(--service-white); }
.service-entry a:focus-visible, .service-page a:focus-visible, .service-page summary:focus-visible {
  outline: 3px solid #d49d4a !important;
  outline-offset: 3px;
}

.service-page {
  --spacer: clamp(66px, 9vw, 120px);
  color: var(--service-ink);
  background: var(--service-white);
  overflow: hidden;
}
.service-page .mobile-break { display: none; }
.service-hero {
  position: relative;
  display: grid;
  min-height: 590px;
  grid-template-columns: minmax(320px, .92fr) minmax(0, 1.08fr);
  align-items: center;
  gap: clamp(28px, 6vw, 86px);
  max-width: 1260px;
  margin: 0 auto;
  padding: 60px 5.5vw 76px;
}
.service-hero__visual { position: relative; isolation: isolate; }
.service-hero__visual::before {
  position: absolute;
  z-index: -1;
  top: 10%;
  right: 8%;
  width: 78%;
  height: 82%;
  border-radius: 48% 52% 43% 57% / 42% 38% 62% 58%;
  background: #eaf2f7;
  content: "";
}
.service-hero__visual img { display: block; width: 100%; max-height: 470px; object-fit: contain; }
.service-hero__mark {
  position: absolute;
  right: 0;
  bottom: 1%;
  color: rgba(59,106,162,.15);
  font-family: Georgia, serif;
  font-size: clamp(90px, 14vw, 190px);
  line-height: .8;
  pointer-events: none;
}
.service-hero__content { max-width: 650px; padding: 26px 0; }
.service-kicker span { color: var(--service-muted); letter-spacing: .06em; }
.service-hero h1 {
  margin: 0 0 22px;
  color: var(--service-deep);
  font-size: clamp(30px, 4.15vw, 48px);
  line-height: 1.5;
  letter-spacing: .025em;
}
.service-hero__term { white-space: nowrap; }
@media (min-width: 768px) {
  body#consulting .service-hero {
    grid-template-columns: minmax(260px, .75fr) minmax(0, 1.25fr);
    gap: clamp(28px, 4vw, 56px);
    padding-left: clamp(24px, 3.5vw, 52px);
    padding-right: clamp(24px, 3.5vw, 52px);
  }
  body#consulting .service-hero h1 { font-size: clamp(30px, 2.6vw, 38px); }
  body#consulting .service-hero__subheading { font-size: .9em; }
}
.service-hero__intro { max-width: 620px; margin: 0 0 24px; color: var(--service-muted); font-size: 16px; line-height: 2.05; }
.service-page .service-button {
  display: inline-flex;
  min-width: 244px;
  min-height: 58px;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 15px 22px;
  color: #fff;
  background: var(--service-deep);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .04em;
  text-decoration: none;
  transition: background-color .2s ease, transform .2s ease;
}
.service-page .service-button:hover { color: #fff; background: var(--service-blue); transform: translateY(-2px); }
.service-button span { font-size: 20px; }
.service-hero__note { margin: 12px 0 0; color: var(--service-muted); font-size: 12px; }
.service-section { padding: var(--spacer) max(24px, calc((100% - 1120px) / 2)); }
.service-section__head { max-width: 720px; margin: 0 auto 44px 0; }
.service-problems .service-section__head { max-width: 1060px; }
.service-heading__phrase { display: inline-block; white-space: nowrap; }
.service-section__head .service-kicker { margin-bottom: 12px; }
.service-section__head h2 {
  margin: 0 0 14px;
  color: var(--service-deep);
  font-size: clamp(28px, 3.6vw, 42px);
  line-height: 1.5;
  letter-spacing: .04em;
}
.service-section__head > p:last-child { margin: 0; color: var(--service-muted); font-size: 15px; line-height: 1.95; }
.service-problems { background: var(--service-paper); }
.problem-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 1050px; gap: 0 46px; margin: 0; padding: 0; list-style: none; }
.problem-list li { display: grid; min-height: 82px; grid-template-columns: 46px 1fr; gap: 15px; align-items: center; border-top: 1px solid var(--service-line); color: var(--service-ink); font-size: 15px; line-height: 1.8; }
.problem-number { color: var(--service-blue); font-family: Georgia, serif; font-size: 16px; }
.service-scope .service-section__head { max-width: 1060px; margin-left: auto; margin-right: auto; }
.scope-list { max-width: 1060px; margin: 0 auto; padding: 0; list-style: none; border-top: 1px solid var(--service-line); }
.scope-list li { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 20px; align-items: baseline; padding: 23px 8px; border-bottom: 1px solid var(--service-line); }
.scope-list li > div { display: grid; grid-template-columns: minmax(210px, .8fr) minmax(0, 1.2fr); gap: 28px; align-items: baseline; }
.scope-index { color: var(--service-blue); font-family: Georgia, serif; font-size: 19px; }
.scope-list h3 { margin: 0; color: var(--service-deep); font-size: 18px; line-height: 1.6; }
.scope-list p { margin: 0; color: var(--service-muted); font-size: 14px; line-height: 1.9; }
.service-resource { display: block; width: 100%; max-width: 480px; margin: 32px auto 0; }
.service-resource picture, .service-resource img { display: block; width: 100%; height: auto; }
.service-resource img { border: 1px solid var(--service-line); }
.service-process { background: #edf4f8; }
.process-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; max-width: 1120px; margin: 0; padding: 0; list-style: none; }
.process-list li { position: relative; min-height: 205px; padding: 22px 22px 20px 0; }
.process-list li + li { padding-left: 24px; border-left: 1px solid #cbd9e4; }
.process-list li > span { color: var(--service-blue); font-family: Georgia, serif; font-size: 24px; }
.process-list h3 { margin: 17px 0 9px; color: var(--service-deep); font-size: 18px; }
.process-list p { margin: 0; color: var(--service-muted); font-size: 14px; line-height: 1.9; }
.case-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px; }
.case-panel { min-height: 330px; padding: clamp(24px, 3.4vw, 40px); background: var(--service-paper); border-top: 4px solid var(--service-blue); }
.case-panel--alt { background: #f5f7f8; border-color: #7897b6; }
.case-panel__meta { display: flex; justify-content: space-between; gap: 14px; color: var(--service-blue); font-size: 11px; font-weight: 700; letter-spacing: .12em; }
.case-panel h3 { margin: 26px 0 16px; color: var(--service-deep); font-size: 22px; line-height: 1.55; }
.case-panel > p { margin: 0; color: var(--service-muted); font-size: 14px; line-height: 2; }
.case-panel .case-disclosure { margin-top: 16px; padding-top: 13px; border-top: 1px solid var(--service-line); color: #52677b; font-size: 12px; }
.case-facts { margin: 0; border-top: 1px solid var(--service-line); }
.case-facts > .case-facts__result--table { display: block; }
.case-facts .case-facts__result--table > dt { margin-bottom: 12px; }
.case-results-table { width: 100%; border-collapse: collapse; font-size: 13px; line-height: 1.8; overflow-wrap: anywhere; }
.case-results-table th, .case-results-table td { padding: 12px 8px; border-bottom: 1px solid var(--service-line); vertical-align: top; text-align: left; }
.case-results-table thead th { color: var(--service-deep); background: #e6eef5; }
.case-results-table tbody th { width: 22%; color: var(--service-deep); font-weight: 700; }
.case-results-table td:nth-child(2) { width: 27%; }
.case-results-table ul { padding-left: 1.1em; }
@media (max-width: 767px) {
  .case-results-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .case-results-table tbody, .case-results-table tbody tr { display: block; }
  .case-results-table tbody tr { padding: 12px 0; border-bottom: 1px solid var(--service-line); }
  .case-results-table tbody th { display: block; width: auto; padding: 0 0 8px; border: 0; font-size: 14px; }
  .case-results-table td, .case-results-table td:nth-child(2) { display: grid; grid-template-columns: 4em minmax(0, 1fr); gap: 8px; width: auto; padding: 4px 0; border: 0; }
  .case-results-table td::before { content: attr(data-label); color: var(--service-deep); font-size: 11px; font-weight: 700; }
}
.case-facts > div {
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px solid var(--service-line);
}
.case-facts dt {
  color: var(--service-deep);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.8;
}
.case-facts dd { margin: 0; color: var(--service-muted); font-size: 13px; line-height: 1.9; }
.case-facts ul { margin: 0; padding-left: 1.2em; }
.case-facts li { padding-left: .15em; }
.case-facts li + li { margin-top: 4px; }
.case-facts__ai { background: rgba(255,255,255,.62); }
.case-facts__ai dt { color: #496984; }
.case-facts__proposal { border-bottom: 1px dashed #c5d5e3 !important; }
.case-facts__result dt { color: #617789; }
.case-facts__result dd { color: #5c7081; }
.service-expertise { background: var(--service-paper); }
.service-expertise .service-section__head { max-width: 850px; }
.expertise-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 26px; }
.expertise-card { padding: clamp(22px, 3vw, 36px); background: var(--service-white); border: 1px solid var(--service-line); }
.expertise-card__identity { display: flex; align-items: center; gap: 22px; padding-bottom: 24px; border-bottom: 1px solid var(--service-line); }
.expertise-card__identity img { width: 94px; height: 94px; flex: 0 0 auto; border-radius: 50%; object-fit: cover; }
.expertise-card__identity h3 { margin: 0 0 6px; color: var(--service-deep); font-size: 23px; }
.expertise-card__identity p { margin: 0; color: var(--service-muted); font-size: 13px; }
.expertise-history { margin: 0; padding: 10px 0 0; list-style: none; }
.expertise-history li { display: grid; grid-template-columns: 120px 1fr; gap: 14px; padding: 15px 0; border-bottom: 1px solid #e3ebf0; }
.expertise-history time { color: var(--service-blue); font-size: 12px; font-weight: 700; line-height: 1.8; }
.expertise-history p, .expertise-credentials p { margin: 0; color: var(--service-muted); font-size: 13px; line-height: 1.9; }
.expertise-credentials { padding-top: 18px; }
.expertise-credentials h4 { margin: 0 0 8px; color: var(--service-deep); font-size: 14px; }
.expertise-credentials p + p { margin-top: 8px; }
.faq-list { max-width: 920px; border-top: 1px solid var(--service-line); }
.faq-list details { border-bottom: 1px solid var(--service-line); }
.faq-list summary { position: relative; padding: 21px 48px 21px 4px; color: var(--service-deep); font-size: 16px; font-weight: 700; line-height: 1.7; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { position: absolute; top: 50%; right: 9px; color: var(--service-blue); font-size: 25px; font-weight: 400; content: "+"; transform: translateY(-50%); }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { max-width: 760px; margin: 0; padding: 0 45px 22px 4px; color: var(--service-muted); font-size: 14px; line-height: 1.95; }
.service-contact { padding: clamp(60px, 8vw, 100px) 24px; color: #fff; background: var(--service-deep); }
.service-contact__inner { max-width: 880px; margin: auto; text-align: center; }
.service-contact .service-kicker { color: #c8d9e9; }
.service-contact h2 { margin: 0 0 15px; color: #fff; font-size: clamp(28px, 4vw, 42px); line-height: 1.5; }
.service-contact__inner > p:not(.service-kicker) { max-width: 630px; margin: 0 auto 28px; color: #e1eaf1; font-size: 15px; line-height: 1.9; }
.service-page .service-button--light { color: var(--service-deep); background: #f4f8fb; }
.service-page .service-button--light:hover { color: var(--service-deep); background: #dce9f2; }

/* Reserve white space for the shared footer's heading, which extends above its frame. */
body#consulting #footer-contact .footer-box { padding-top: 64px; }

@media (max-width: 767px) {
  body.top .sec-main {
    margin-top: 0;
    padding: 25px 0 30px;
  }
  body.top .sec-main .sec-main__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    padding: 0 20px;
  }
  body.top .sec-main .main-ttl {
    grid-column: 1;
    grid-row: 1;
    padding: 0;
  }
  body.top .sec-main .main-img {
    grid-column: 1;
    grid-row: 2;
    width: min(88%, 350px);
    margin: 0 auto;
  }
  body.top .home-intro__location { margin-bottom: 12px; font-size: 11px; }
  body.top .home-intro__brand { margin-bottom: 6px; font-size: 11px; }
  body.top .home-intro__title {
    margin-bottom: 8px;
    font-size: clamp(20px, 6.1vw, 25px);
    line-height: 1.48;
    letter-spacing: 0;
  }
  body.top .home-intro__wide-break { display: none; }
  body.top .home-intro__subheading { margin-bottom: 8px; font-size: 14px; line-height: 1.7; }
  body.top .home-intro__description { margin-bottom: 14px; font-size: 13px; line-height: 1.8; }
  body.top .home-intro__actions { gap: 6px 12px; }
  body.top .home-intro__actions a { min-height: 46px; padding: 10px 13px; font-size: 12px; }
  body.top .home-intro__actions .home-intro__primary { min-width: 200px; }
  body.top .service-entry { padding: 19px 20px; }
  body.top .service-entry__inner { flex-direction: column; gap: 10px; }
  body.top .service-entry__eyebrow { font-size: 10px; }
  body.top .service-entry__links { flex-direction: column; gap: 7px; }
  body.top .service-entry__link { width: 100%; min-width: 0; min-height: 44px; }
  body#consulting #footer-contact .footer-box { padding-top: 48px; }
  .service-resource { max-width: 300px; }
  .service-entry { padding: 44px 22px; }
  .service-entry__inner { grid-template-columns: 1fr; gap: 17px; }
  .service-entry__eyebrow { grid-column: auto; margin-bottom: 0; font-size: 10px; }
  .service-entry__copy h1 { margin-bottom: 12px; font-size: 28px; }
  .service-entry__copy p { font-size: 14px; line-height: 1.9; }
  .service-entry__links { gap: 8px; }
  .service-entry__link, .service-entry__consult { min-height: 48px; font-size: 13px; }
  .service-page { --spacer: 68px; }
  .service-page .mobile-break { display: initial; }
  .service-hero { min-height: auto; grid-template-columns: 1fr; gap: 14px; padding: 28px 22px 58px; }
  .service-hero__visual { width: min(76%, 330px); margin: 0 auto; }
  .service-hero__visual img { max-height: 285px; }
  .service-hero__mark { font-size: 105px; }
  .service-hero__content { padding: 5px 0 0; }
  .service-hero .service-kicker { margin-bottom: 12px; font-size: 11px; }
  .service-hero h1 { margin-bottom: 15px; font-size: clamp(26px, 7vw, 34px); line-height: 1.55; }
  .service-hero__intro { margin-bottom: 20px; font-size: 14px; line-height: 1.95; }
  .service-page .service-button { min-height: 54px; font-size: 14px; }
  .service-section { padding: var(--spacer) 22px; }
  .service-section__head { margin-bottom: 28px; }
  .service-section__head h2 { font-size: 28px; }
  .service-problems .service-section__head h2 { font-size: clamp(26px, 7vw, 28px); }
  .service-section__head > p:last-child { font-size: 14px; }
  .problem-list { grid-template-columns: 1fr; }
  .problem-list li { min-height: 70px; font-size: 14px; }
  .scope-list li { grid-template-columns: 42px 1fr; gap: 8px 12px; padding: 18px 0; }
  .scope-list li > div { display: block; }
  .scope-list h3 { font-size: 16px; }
  .scope-list p { margin-top: 6px; font-size: 13px; }
  .process-list { grid-template-columns: 1fr 1fr; }
  .process-list li { min-height: 180px; padding: 17px 14px 20px 0; }
  .process-list li + li { padding-left: 15px; }
  .process-list li:nth-child(3) { padding-left: 0; border-left: 0; border-top: 1px solid #cbd9e4; }
  .process-list li:nth-child(4) { border-top: 1px solid #cbd9e4; }
  .process-list h3 { margin-top: 12px; font-size: 16px; }
  .process-list p { font-size: 13px; }
  .case-list, .expertise-grid { grid-template-columns: 1fr; gap: 17px; }
  .case-panel { min-height: auto; padding: 24px 21px; }
  .case-panel h3 { margin: 21px 0 12px; font-size: 20px; }
  .case-panel > p { font-size: 13px; }
  .case-facts > div { grid-template-columns: 1fr; gap: 3px; padding: 11px 0; }
  .case-facts dt { font-size: 11px; }
  .case-facts dd { font-size: 13px; }
  .expertise-card { padding: 20px 17px; }
  .expertise-card__identity { gap: 16px; }
  .expertise-card__identity img { width: 76px; height: 76px; }
  .expertise-card__identity h3 { font-size: 21px; }
  .expertise-history li { grid-template-columns: 1fr; gap: 4px; padding: 12px 0; }
  .faq-list summary { padding: 18px 38px 18px 2px; font-size: 14px; }
  .faq-list details p { padding: 0 28px 19px 2px; font-size: 13px; }
  .service-contact { padding: 62px 22px; }
  .service-contact h2 { font-size: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .service-entry__link, .service-entry__consult, .service-button, body.top .home-intro__actions a { transition: none; }
}