/* Project — ページ/セクション固有のまとまり（FLOCSS: p-）*/
.p-hero { position: relative; overflow: hidden;
  background-image: linear-gradient(95deg, rgba(255,255,255,0.95) 0%, rgba(255,255,255,0.72) 40%, rgba(255,255,255,0.18) 68%, rgba(255,255,255,0) 100%), url("../img/img_tori_fv_pc.webp");
  background-size: cover; background-position: center; background-repeat: no-repeat; }
.p-hero__inner { position: relative; max-width: 1400px; margin: 0 auto; padding: 80px 48px; min-height: 90vh; display: flex; align-items: center; }
.p-hero__content { max-width: 960px; }
/* text-wrap: balance — u-br-pc が消えるスマホ幅で「グ/ローバル」のような
   語中改行を避け、文節単位で折り返させる。未対応ブラウザは通常の折り返しになる。 */
.p-hero__title { margin: 0; color: #0E3F9E; font-weight: 900; font-size: clamp(30px, 3.6vw, 48px); line-height: 1.28; letter-spacing: 0.01em; text-wrap: balance; }
.p-hero__title-accent { color: #0E3F9E; }
.p-hero__lead { margin: 30px 0 0; color: #3A4459; font-size: clamp(15px, 1.3vw, 18px); line-height: 1.95; max-width: 620px; }
.p-hero__actions { display: flex; gap: 16px; margin-top: 40px; }
.p-services { background: repeating-linear-gradient(45deg, transparent 0 34px, rgba(125,176,255,0.05) 34px 35px), repeating-linear-gradient(-45deg, transparent 0 34px, rgba(125,176,255,0.05) 34px 35px), linear-gradient(180deg, #1E5FC4, #0E3F9E); padding: 90px 40px; }
.p-services__title { margin: 0; color: #fff; font-weight: 900; font-size: 34px; letter-spacing: 0.02em; }
/* レイアウト: 左に導入、右に事業リスト */
.p-services__layout { display: grid; grid-template-columns: 0.82fr 1.18fr; gap: 56px; align-items: start; }
.p-services__lead { margin: 22px 0 32px; color: #E6EEFB; font-size: 15px; line-height: 2; max-width: 380px; }
.p-services__list { display: grid; gap: 20px; }
.p-svc-item { display: grid; grid-template-columns: 190px 1fr; gap: 26px; align-items: center; padding: 20px; border-radius: 18px; background: rgba(255,255,255,0.045); border: 1px solid rgba(125,176,255,0.18); transition: border-color 200ms ease, background 200ms ease; }
.p-svc-item:hover { border-color: rgba(125,176,255,0.5); background: rgba(255,255,255,0.07); }
.p-svc-item__figure { height: 150px; border-radius: 12px; }
.p-svc-item__title { margin: 0 0 8px; color: #fff; font-weight: 700; font-size: 19px; }
.p-svc-item__desc { margin: 0; color: #E6EEFB; font-size: 14px; line-height: 1.9; }
.p-stats { padding: 0 40px; }
.p-stats__panel { max-width: 1100px; margin: -72px auto 0; position: relative; z-index: 5; background: #fff; border-radius: 20px; box-shadow: 0 24px 50px rgba(11,31,68,0.16); border: 1px solid #E8EDF4; padding: 36px 48px; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0; align-items: center; }
.p-stats__item { text-align: center; padding: 0 16px; }
.p-stats__label { color: #6B7689; font-size: 13px; font-weight: 700; }
.p-stats__value { margin-top: 10px; color: #1E5FC4; font-weight: 800; font-family: 'Inter', sans-serif; font-size: 40px; line-height: 1; }
.p-stats__unit { font-size: 18px; }
.p-stats__note { color: #9AA6B7; font-size: 12px; margin-top: 8px; }
.p-stats__item--divider { text-align: center; padding: 0 16px; border-left: 1px solid #EDF1F7; border-right: 1px solid #EDF1F7; }
.p-stats__caption { max-width: 1100px; margin: 14px auto 0; text-align: center; color: #9AA6B7; font-size: 11.5px; }
.p-why__intro { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 48px; align-items: center; margin-bottom: 50px; }
.p-why__title { margin: 0; color: #1E5FC4; font-weight: 900; font-size: 32px; line-height: 1.45; }
.p-why__lead { margin: 20px 0 0; color: #4A5468; font-size: 15px; line-height: 2; max-width: 580px; }
.p-why__intro-figure { display: grid; place-items: center; }
.p-why__intro-figure img { display: block; width: 100%; max-width: 360px; aspect-ratio: 1 / 1; height: auto; object-fit: contain; }
.p-why__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.p-why__card { background: #fff; border: 1px solid #E8EDF4; border-radius: 18px; overflow: hidden; box-shadow: 0 8px 22px rgba(11,31,68,0.06); }
.p-why__card-media { height: 200px; overflow: hidden; }
.p-why__card-img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* 写真ではなくイラストを載せる場合（余白を活かして全体を見せる） */
.p-why__card-media--illust { display: grid; place-items: center; background: linear-gradient(155deg, #F3F8FE 0%, #E3EDFA 100%); }
.p-why__card-img--illust { width: 88%; height: 88%; object-fit: contain; }
.p-why__card-body { padding: 24px 26px 28px; }
.p-why__card-no { display: inline-block; color: #2E6FE0; font-family: 'Inter', sans-serif; font-weight: 800; font-size: 14px; letter-spacing: 0.12em; margin-bottom: 10px; }
.p-why__card-title { margin: 0 0 10px; color: #1E5FC4; font-weight: 700; font-size: 18px; }
.p-why__card-desc { margin: 0; color: #4A5468; font-size: 14px; line-height: 1.95; }
.p-works-teaser__head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 40px; }
.p-works-teaser__title { margin: 0; color: #1E5FC4; font-weight: 900; font-size: 32px; }
.p-works-teaser__body { padding: 20px 22px; }
.p-works-teaser__desc { margin: 0; color: #6B7689; font-size: 13px; line-height: 1.75; }
.p-cta { position: relative; padding: 80px 40px; background: radial-gradient(90% 110% at 85% 10%, rgba(46,111,224,0.55), transparent 60%), repeating-linear-gradient(45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), repeating-linear-gradient(-45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), linear-gradient(150deg, #0E3F9E, #1E5FC4); overflow: hidden; }
.p-cta__inner { max-width: 1100px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 40px; }
.p-cta__title { margin: 0 0 14px; color: #fff; font-weight: 900; font-size: 30px; line-height: 1.45; }
.p-cta__text { margin: 0; color: #E6EEFB; font-size: 15px; line-height: 1.9; }
.p-subhero { position: relative; background: radial-gradient(90% 110% at 85% 0%, rgba(46,111,224,0.5), transparent 60%), repeating-linear-gradient(45deg, transparent 0 36px, rgba(125,176,255,0.07) 36px 37px), repeating-linear-gradient(-45deg, transparent 0 36px, rgba(125,176,255,0.07) 36px 37px), linear-gradient(150deg, #0E3F9E, #1E5FC4); overflow: hidden; }
.p-subhero__accent { position: absolute; right: -28px; top: 50%; transform: translateY(-50%); width: 360px; max-width: 40%; opacity: 0.22; pointer-events: none; }
.p-subhero__inner { position: relative; z-index: 1; max-width: 1200px; margin: 0 auto; padding: 60px 40px 64px; text-align: center; }
.p-subhero__title { margin: 0; color: #fff; font-weight: 900; font-size: 40px; letter-spacing: 0.04em; }
.p-message__grid { display: grid; grid-template-columns: 1fr 0.9fr; gap: 56px; align-items: center; }
.p-message__eyebrow { color: #1A5FC8; font-size: 12px; font-weight: 700; letter-spacing: 0.26em; font-family: 'Inter', sans-serif; margin-bottom: 14px; }
.p-message__title { margin: 0 0 26px; color: #1E5FC4; font-weight: 900; font-size: 30px; line-height: 1.5; }
.p-message__text { margin: 0 0 18px; color: #4A5468; font-size: 15px; line-height: 2.05; }
.p-message__text--last { margin: 0 0 26px; color: #4A5468; font-size: 15px; line-height: 2.05; }
.p-message__signature { display: flex; align-items: center; gap: 14px; }
.p-message__role { color: #6B7689; font-size: 13px; }
.p-message__name { color: #1A2233; font-weight: 700; font-size: 20px; }
.p-message__photo { display: grid; place-items: center; }
.p-message__photo-img { display: block; width: 100%; max-width: 420px; aspect-ratio: 1 / 1; height: auto; object-fit: contain; }
.p-message__grid--reverse { grid-template-columns: 0.9fr 1fr; }
.p-message__grid--reverse .p-message__photo { order: 1; }
.p-message__grid--reverse .p-message__body { order: 2; }
.p-profile { max-width: 900px; margin: 0 auto; }
.p-profile__head { text-align: center; margin-bottom: 44px; }
.p-profile__table { background: #fff; border-radius: 16px; border: 1px solid #E8EDF4; overflow: hidden; box-shadow: 0 10px 30px rgba(11,31,68,0.06); }
.p-profile__row { display: grid; grid-template-columns: 200px 1fr; border-bottom: 1px solid #EDF1F7; }
.p-profile__th { padding: 20px 28px; background: #F7FAFD; color: #1E5FC4; font-weight: 700; font-size: 14px; }
.p-profile__td { padding: 20px 28px; color: #3A4459; font-size: 15px; }
.p-profile__td-en { color: #9AA6B7; font-size: 12px; font-family: 'Inter', sans-serif; }
.p-profile__td--address { padding: 20px 28px; color: #3A4459; font-size: 15px; line-height: 1.8; }
.p-profile__row--last { display: grid; grid-template-columns: 200px 1fr; }
.p-profile__td--multiline { padding: 20px 28px; color: #3A4459; font-size: 15px; line-height: 1.85; }
/* 会社情報テーブル内の箇条書き（事業内容など） */
.c-bullet-list { margin: 0; padding: 20px 28px; list-style: none; color: #3A4459; font-size: 15px; line-height: 1.85; }
.c-bullet-list__item { position: relative; padding-left: 18px; }
.c-bullet-list__item + .c-bullet-list__item { margin-top: 8px; }
.c-bullet-list__item::before { content: ""; position: absolute; top: 0.68em; left: 0; width: 6px; height: 6px; border-radius: 50%; background: #2E6FE0; }
.p-cta--compact { position: relative; padding: 76px 40px; background: radial-gradient(90% 110% at 85% 10%, rgba(46,111,224,0.55), transparent 60%), repeating-linear-gradient(45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), repeating-linear-gradient(-45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), linear-gradient(150deg, #0E3F9E, #1E5FC4); overflow: hidden; }
.p-cta__title--compact { margin: 0; color: #fff; font-weight: 900; font-size: 28px; line-height: 1.45; }
.p-subhero__inner--narrow { position: relative; z-index: 1; max-width: 1000px; margin: 0 auto; padding: 60px 40px 64px; text-align: center; }
.p-subhero__title--lg { margin: 0 0 18px; color: #fff; font-weight: 900; font-size: 40px; letter-spacing: 0.04em; }
.p-subhero__lead { margin: 0; color: #E6EEFB; font-size: 15px; line-height: 1.95; }
.p-service-rows { max-width: 1200px; margin: 0 auto; padding: 90px 40px 30px; }
.p-service-rows__list { display: grid; gap: 80px; }
.p-service-row { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.p-service-row__media { display: grid; place-items: center; }
.p-service-row__media-img { display: block; width: 100%; max-width: 420px; aspect-ratio: 1 / 1; height: auto; object-fit: contain; }
.p-service-row__media--right { order: 2; }
.p-service-row__num-wrap { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.p-service-row__num { color: #2E6FE0; font-weight: 800; font-size: 16px; font-family: 'Inter', sans-serif; letter-spacing: 0.1em; }
.p-service-row__num-line { height: 1px; width: 56px; background: #C9D7EA; }
.p-service-row__title { margin: 0 0 16px; color: #1E5FC4; font-weight: 900; font-size: 28px; }
.p-service-row__desc { margin: 0 0 22px; color: #4A5468; font-size: 15px; line-height: 2.05; }
.p-service-row__points { display: grid; gap: 11px; }
.p-service-row__text--first { order: 1; }
.p-flow { margin-top: 80px; background: #F5F8FC; border-top: 1px solid #E8EDF4; border-bottom: 1px solid #E8EDF4; padding: 80px 40px; }
.p-flow__card { background: #fff; border: 1px solid #E8EDF4; border-radius: 16px; padding: 30px 26px; }
.p-flow__num { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 12px; background: linear-gradient(135deg, #2E6FE0, #1E5FC4); color: #fff; font-weight: 800; font-family: 'Inter', sans-serif; font-size: 17px; margin-bottom: 20px; }
.p-flow__desc { margin: 0; color: #4A5468; font-size: 13.5px; line-height: 1.85; }
.p-disclaimer { max-width: 1200px; margin: 0 auto; padding: 50px 40px 0; }
.p-filter { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 34px; }
.p-filter__chip { padding: 9px 18px; border-radius: 999px; border: 1px solid #DCE7F3; background: #fff; color: #4A5468; font-size: 13px; font-weight: 700; font-family: "Noto Sans JP", sans-serif; cursor: pointer; transition: color 160ms ease, border-color 160ms ease, background 160ms ease; }
.p-filter__chip:hover { border-color: #2E6FE0; color: #2E6FE0; }
.p-filter__chip.is-active { background: linear-gradient(135deg, #2E6FE0, #1E5FC4); border-color: transparent; color: #fff; }
.p-works-list { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
.p-works-intro { max-width: 1200px; margin: 0 auto 40px; padding: 0 40px; }
.p-works-video { display: block; width: 100%; height: auto; margin-top: 36px; border-radius: 16px; box-shadow: 0 16px 40px rgba(11,31,68,0.12); background: #000; }
.p-works-video__caption { margin: 10px 2px 0; color: #6B7689; font-size: 12.5px; }
.p-cta--spaced { margin-top: 80px; position: relative; padding: 76px 40px; background: radial-gradient(90% 110% at 85% 10%, rgba(46,111,224,0.55), transparent 60%), repeating-linear-gradient(45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), repeating-linear-gradient(-45deg, transparent 0 32px, rgba(125,176,255,0.07) 32px 33px), linear-gradient(150deg, #0E3F9E, #1E5FC4); overflow: hidden; }
.p-contact { max-width: 1200px; margin: 0 auto; padding: 80px 40px 90px; }
.p-contact__grid { display: grid; grid-template-columns: 0.82fr 1.18fr; gap: 56px; align-items: start; }
.p-contact__heading { margin: 0 0 22px; color: #1E5FC4; font-weight: 900; font-size: 22px; }
.p-contact__methods { display: grid; gap: 16px; margin-bottom: 28px; }
.p-contact__office { background: #0E3F9E; border-radius: 14px; padding: 24px 24px; }
.p-contact__office-label { color: #7DB0FF; font-size: 11px; font-weight: 700; letter-spacing: 0.2em; font-family: 'Inter', sans-serif; margin-bottom: 12px; }
.p-contact__office-name { color: #fff; font-weight: 700; font-size: 15px; margin-bottom: 8px; }
.p-contact__office-address { color: #A9BDDC; font-size: 13px; line-height: 1.85; }
.p-contact__form-wrap { background: #fff; border: 1px solid #E8EDF4; border-radius: 18px; box-shadow: 0 16px 40px rgba(11,31,68,0.08); padding: 40px 40px; }
.p-contact__done { text-align: center; padding: 36px 20px; animation: tohriPop 280ms ease; }
.p-contact__done-icon { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; background: linear-gradient(135deg, #2E6FE0, #1E5FC4); margin: 0 auto 22px; }
.p-contact__done-title { margin: 0 0 12px; color: #1E5FC4; font-weight: 900; font-size: 22px; }
.p-contact__done-text { margin: 0 0 26px; color: #4A5468; font-size: 14px; line-height: 1.9; }
.p-contact__done-back { display: inline-block; padding: 13px 32px; border-radius: 10px; background: #F5F8FC; border: 1px solid #D7E0EC; color: #1E5FC4; font-weight: 700; font-size: 14px; }
.p-contact__figure { margin: 0 0 24px; display: grid; place-items: center; }
.p-contact__figure-img { display: block; width: 100%; max-width: 320px; aspect-ratio: 1 / 1; height: auto; object-fit: contain; }

/* トップページ 動画セクション */
.p-video { max-width: 1000px; margin: 0 auto; padding: 0 40px; }
.p-video__caption { margin: 12px 2px 0; text-align: center; color: #6B7689; font-size: 13px; }
