/* ============================================================
   トップページ（front-page.php）2026年10月 改訂版
   ・functions.php でトップページだけ読み込む
   ・<div class="tp tp-home"> の中だけに効く
   ・英字ラベル（.tp-en・Jost）と h2（.tp-ttl・淡い青マーカー）、
     .tp-wrap／.tp-sec／.tp-btn は style.css「36. トップページ」の共通部分を使う
   ============================================================ */

/* ---------- 色・余白 ---------- */
.tp-home{
  --navy-deep:#00265e; --navy-mid:#1d5fbf;
  --ink:#141b2b; --sub:#46516a; --pale:#f2f6fb; --line:#dbe3ee; --mark:#d3e2f6;
  --gut:clamp(20px,5vw,64px);
  color:var(--ink); font-size:16px; line-height:1.95; letter-spacing:.03em;
}
.tp-home img{ max-width:100%; height:auto; display:block; }
.tp-home h1, .tp-home h2, .tp-home h3, .tp-home p, .tp-home dd, .tp-home li{ word-break:auto-phrase; text-wrap:pretty; }
.tp-home .u-sp{ display:none; }
@media (max-width:900px){ .tp-home .u-pc{ display:none; } }
@media (max-width:640px){ .tp-home .u-sp{ display:inline; } }

/* ---------- 「〜を見る」リンク（下線＋線の矢印） ---------- */
.tp-home .more{ display:inline-flex; align-items:center; gap:14px; font-weight:700; color:var(--navy); font-size:15px;
  padding-bottom:4px; border-bottom:1px solid currentColor; }
.tp-home .more i{ position:relative; width:24px; height:1px; border:0; border-radius:0; background:currentColor; display:block; transition:width .25s; }
.tp-home .more i::after{ content:""; position:absolute; right:0; top:-3px; width:7px; height:7px;
  border-top:1px solid currentColor; border-right:1px solid currentColor; transform:rotate(45deg); }
.tp-home .more:hover i{ width:36px; background:currentColor; }

/* ---------- ボタン ---------- */
.tp-home .tp-btn{ min-width:0; }

/* =========================================================
   ① ファーストビュー（Mission）：テキスト＋円形の写真
   ========================================================= */
.tp-home .fv{ position:relative; overflow:hidden; margin-top:var(--tp-hd); min-height:calc(100svh - var(--tp-hd));
  display:flex; flex-direction:column; background:#fff; }
.tp-home .fv::before{ content:""; position:absolute; width:980px; height:980px; border-radius:50%; border:100px solid var(--pale); left:-600px; bottom:-660px; pointer-events:none; }
.tp-home .fv::after{ content:""; position:absolute; width:1500px; height:1500px; border-radius:50%; border:140px solid var(--pale); right:-760px; top:-620px; pointer-events:none; }
.tp-home .fv__in{ position:relative; z-index:2; flex:1; width:100%; max-width:1440px; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(16px,2vw,40px); align-items:center; padding-top:clamp(28px,3vw,48px); padding-bottom:clamp(28px,3vw,40px); }
.tp-home .fv__eyebrow{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; margin-bottom:clamp(20px,2.2vw,32px); color:var(--navy); }
.tp-home .fv__corp{ font-size:clamp(20px,1.9vw,28px); font-weight:700; letter-spacing:.06em; line-height:1; }
.tp-home .fv__corp ruby{ ruby-position:over; }
.tp-home .fv__corp rt{ font-size:12px; font-weight:500; letter-spacing:.16em; color:var(--sub); }
.tp-home .fv__desc{ font-size:clamp(15px,1.45vw,20px); font-weight:700; letter-spacing:.1em; color:var(--ink); line-height:1.4; padding-top:12px; border-top:1px solid #c9d6ea; }
.tp-home .fv__ttl{ font-weight:900; color:var(--navy); font-size:clamp(34px,4.1vw,66px); line-height:1.35; letter-spacing:.06em; }
.tp-home .fv__ttl .ln{ display:block; overflow:hidden; padding:0 .1em .04em 0; white-space:nowrap; }
.tp-home .fv__ttl .ln > span{ display:inline-block; }
.tp-home .fv__lead{ margin-top:clamp(22px,2.6vw,36px); font-size:clamp(17px,1.6vw,22px); line-height:2.05; }
.tp-home .fv__cta{ display:flex; flex-wrap:nowrap; gap:14px; margin-top:clamp(28px,3vw,44px); max-width:560px; }
.tp-home .fv__cta .tp-btn{ flex:1 1 0; min-width:0; max-width:270px; padding:0 18px; white-space:nowrap; font-size:clamp(14px,1.15vw,16px); }

/* 円の写真と輪 */
.tp-home .fv__visual{ position:relative; justify-self:end; width:min(calc(100% + var(--gut) * .6), 740px, calc(100svh - var(--tp-hd) - 72px));
  aspect-ratio:1; margin-right:calc(var(--gut) * -.6); }
.tp-home .fv__ph{ position:absolute; inset:7%; border-radius:50%; overflow:hidden; background:#eef0f2; box-shadow:0 30px 60px rgba(0,30,80,.16);
  opacity:0; transform:scale(.94); animation:hmFvPh 1.2s cubic-bezier(.2,.7,.2,1) .4s forwards; }
.tp-home .fv__phimg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transform:scale(1.04); transition:opacity 1.4s ease, transform 6s linear; }
.tp-home .fv__phimg.is-active{ opacity:1; transform:scale(1); }
.tp-home .fv__rings{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.tp-home .fv__rings circle{ fill:none; }
.tp-home .fv__r0{ stroke:#e3eaf4; stroke-width:.25; }
.tp-home .fv__r1{ stroke:url(#fvg); stroke-width:5.6; stroke-dasharray:0 100; animation:hmFvR1 1.6s cubic-bezier(.65,0,.25,1) .2s forwards; }
.tp-home .fv__r2{ stroke:var(--orange); stroke-width:.45; stroke-dasharray:0 100; animation:hmFvR2 1.4s ease-out 1s forwards; }
.tp-home .fv__r3{ stroke:#b9cbe6; stroke-width:.3; stroke-dasharray:0 100; animation:hmFvR3 1.6s ease-out 1.2s forwards; }
@keyframes hmFvPh{ to{ opacity:1; transform:none; } }
@keyframes hmFvR1{ to{ stroke-dasharray:72 100; } }
@keyframes hmFvR2{ to{ stroke-dasharray:16 100; } }
@keyframes hmFvR3{ to{ stroke-dasharray:44 100; } }

/* 文字が下から出る（ページを開いたときの一度だけ） */
.tp-home .fv__ttl .ln > span, .tp-home .fv__eyebrow, .tp-home .fv__lead, .tp-home .fv__cta{
  opacity:0; transform:translateY(105%); animation:hmRise 1s cubic-bezier(.2,.7,.2,1) forwards; }
.tp-home .fv__eyebrow, .tp-home .fv__lead, .tp-home .fv__cta{ transform:translateY(16px); }
.tp-home .fv__eyebrow{ animation-delay:.2s; }
.tp-home .fv__ttl .ln:nth-child(1) > span{ animation-delay:.35s; }
.tp-home .fv__ttl .ln:nth-child(2) > span{ animation-delay:.5s; }
.tp-home .fv__lead{ animation-delay:.95s; }
.tp-home .fv__cta{ animation-delay:1.1s; }
@keyframes hmRise{ to{ opacity:1; transform:none; } }

/* =========================================================
   横に流れる要素（事例・メンバー・コラム）
   top.js で自動で流し、押さえて（指・マウス）横に動かせる
   ========================================================= */
.tp-home .js-flow{ overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain; cursor:grab; }
.tp-home .js-flow::-webkit-scrollbar{ display:none; }
.tp-home .js-flow.is-drag{ cursor:grabbing; user-select:none; }
.tp-home .js-flow.is-drag a{ pointer-events:none; }
.tp-home .wk__flow{ -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent); mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent); }
.tp-home .mem__flow, .tp-home .col__flow{ -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent); mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent); }

/* =========================================================
   ② Vision & Values（紺の背景）
   ========================================================= */
.tp-home .vv{ background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.tp-home .vv::before{ content:""; position:absolute; width:1100px; height:1100px; border-radius:50%; border:110px solid rgba(255,255,255,.045); left:-620px; top:-420px; }
.tp-home .vv::after{ content:""; position:absolute; width:760px; height:760px; border-radius:50%; border:1px solid rgba(255,255,255,.12); right:-300px; bottom:-420px; }
.tp-home .vv .tp-wrap{ position:relative; z-index:1; }
.tp-home .vv .tp-en{ color:#cfe0f5; }
.tp-home .vv__vision{ display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:end; padding-bottom:clamp(56px,6vw,88px); border-bottom:1px solid rgba(255,255,255,.22); }
.tp-home .vv__vtxt{ font-size:clamp(30px,4.2vw,56px); font-weight:900; line-height:1.45; letter-spacing:.06em; color:#fff; }
.tp-home .vv__vsub{ font-size:16px; line-height:2.05; color:#eef3fb; max-width:24em; }
.tp-home .vv__vlabel{ margin-top:clamp(56px,6vw,80px); }
.tp-home .vv__values{ display:grid; grid-template-columns:repeat(4,1fr); margin-top:6px; }
.tp-home .vv__val{ padding:8px clamp(18px,2vw,32px); border-left:1px solid rgba(255,255,255,.22); }
.tp-home .vv__val:last-child{ border-right:1px solid rgba(255,255,255,.22); }
.tp-home .vv__kanji{ font-size:clamp(34px,3.4vw,46px); font-weight:700; letter-spacing:.14em; line-height:1.2; }
.tp-home .vv__en{ font-family:var(--tp-en); font-weight:300; font-size:15px; letter-spacing:.1em; color:#cfe0f5; margin-top:8px; }
.tp-home .vv__desc{ margin-top:22px; font-size:15.5px; line-height:2; color:#eef3fb; }

/* =========================================================
   ③ Our Team（集合写真）
   ========================================================= */
.tp-home .team{ background:#f2f3f5; overflow:hidden; }
.tp-home .team__in{ display:grid; grid-template-columns:minmax(0,4fr) minmax(0,8fr); align-items:center; gap:clamp(24px,3vw,48px); }
.tp-home .team__txt{ padding:clamp(48px,5vw,72px) 0; }
.tp-home .team__ttl{ font-size:clamp(22px,2.2vw,30px); font-weight:700; line-height:1.6; color:var(--ink); }
.tp-home .team__ttl span{ white-space:nowrap; }
.tp-home .team__txt p{ margin-top:24px; line-height:2.1; }
.tp-home .team__txt .more{ margin-top:32px; }
.tp-home .team__ph{ margin:0 calc(var(--gut) * -1) 0 0; }
.tp-home .team__ph img{ width:100%; -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%); mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%); }

/* =========================================================
   ④ Service（3事業のベン図）
   ========================================================= */
.tp-home .svc{ background:#fff; position:relative; overflow:hidden; }
.tp-home .svc::before{ content:""; position:absolute; width:1100px; height:1100px; border-radius:50%; border:110px solid var(--pale); left:-640px; top:-260px; pointer-events:none; }
.tp-home .svc .tp-wrap{ position:relative; }
.tp-home .svc__top{ display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7fr); gap:clamp(32px,4vw,64px); align-items:center; }
.tp-home .svc__top .sec-head{ margin-bottom:0; }
.tp-home .svc__lead{ margin-top:24px; max-width:30em; line-height:2.1; }
.tp-home .biz__fig{ width:100%; max-width:min(640px, calc((100svh - 140px) * 1.11)); margin-left:auto; }
.tp-home .biz__svg{ width:100%; height:auto; display:block; font-family:inherit; }
.tp-home .v-name{ fill:var(--ink); font-size:34px; font-weight:700; letter-spacing:.06em; }
.tp-home .v-svc{ fill:var(--sub); font-size:20px; font-weight:500; letter-spacing:.06em; }
.tp-home .v-ov{ fill:var(--ink); font-size:18px; font-weight:700; letter-spacing:.04em; }
.tp-home .v-core{ fill:#fff; font-size:21px; font-weight:700; letter-spacing:.14em; }

/* 3事業の説明 */
.tp-home .biz__list{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(24px,3vw,48px); margin-top:clamp(56px,6vw,88px); align-items:start; }
.tp-home .bz{ --c:#003885; --g1:#1d5fbf; --g2:#00265e; }
.tp-home .bz.is-c{ --c:#1e9fd8; --g1:#35b0e6; --g2:#0b6fae; }
.tp-home .bz.is-f{ --c:#ff7f00; --g1:#ff9a30; --g2:#e35a00; }
.tp-home .bz__vis{ position:relative; aspect-ratio:16/9; overflow:hidden; background:linear-gradient(135deg,var(--g1),var(--g2)); color:#fff;
  display:flex; flex-direction:column; justify-content:flex-end; padding:24px 26px; margin-bottom:22px; }
.tp-home .bz__vis img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.tp-home .bz__vis::before{ content:""; position:absolute; width:118%; aspect-ratio:1; border-radius:50%; border:54px solid #fff; opacity:.1; right:-62%; top:-78%; transition:transform 1.2s cubic-bezier(.2,.7,.2,1); }
.tp-home .bz__vis::after{ content:""; position:absolute; width:64%; aspect-ratio:1; border-radius:50%; border:1.5px solid rgba(255,255,255,.55); right:-14%; top:-34%; }
.tp-home .bz:hover .bz__vis::before{ transform:rotate(-8deg) translate(-4%,4%); }
.tp-home .bz__name{ position:relative; z-index:1; font-size:clamp(20px,1.85vw,26px); font-weight:700; line-height:1.3; letter-spacing:.06em; white-space:nowrap; color:#fff; }
.tp-home .bz__key{ position:relative; z-index:1; margin-top:10px; font-size:13px; font-weight:500; letter-spacing:.08em; color:rgba(255,255,255,.88); white-space:nowrap; }
.tp-home .bz__desc{ font-size:15px; line-height:1.95; margin-top:12px; }
.tp-home .bz ul{ margin-top:20px; border-top:1px solid var(--ink); }
.tp-home .bz li a{ display:grid; grid-template-columns:1fr auto; align-items:center; gap:16px; padding:15px 0; border-bottom:1px solid var(--line); }
.tp-home .bz li a::after{ content:"→"; color:var(--c); font-family:var(--tp-en); transition:transform .2s; }
.tp-home .bz li a:hover::after{ transform:translateX(4px); }
.tp-home .bz__tx b{ display:block; font-size:16px; font-weight:700; color:var(--ink); line-height:1.5; }
.tp-home .bz__tx small{ display:block; font-size:12.5px; color:var(--sub); margin-top:2px; line-height:1.5; }
.tp-home .bz li a:hover b{ color:var(--navy); }
/* 3列のとき、説明文の長さが違っても一覧の上線の高さをそろえる */
@media (min-width:901px){
  .tp-home .biz__list{ grid-template-rows:auto auto auto; row-gap:0; }
  .tp-home .bz{ display:grid; grid-template-rows:subgrid; grid-row:span 3; }
  .tp-home .bz__desc{ align-self:start; }
  @supports not (grid-template-rows:subgrid){ .tp-home .bz{ display:block; } .tp-home .bz__desc{ min-height:6em; } }
}
@media (max-width:1100px) and (min-width:901px){ .tp-home .bz__key{ font-size:11.5px; letter-spacing:.04em; } }

/* =========================================================
   ⑤ Why altruloop（紺の背景・比較図＋数字）
   ========================================================= */
.tp-home .why{ background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.tp-home .why::before{ content:""; position:absolute; width:1300px; height:1300px; border-radius:50%; border:120px solid rgba(255,255,255,.045); right:-640px; top:-520px; pointer-events:none; }
.tp-home .why::after{ content:""; position:absolute; width:900px; height:900px; border-radius:50%; border:1px solid rgba(255,255,255,.12); left:-520px; bottom:-380px; pointer-events:none; }
.tp-home .why .tp-wrap{ position:relative; z-index:1; }
.tp-home .why .tp-en{ color:#cfe0f5; }
.tp-home .why .tp-ttl{ color:#fff; }
.tp-home .why .tp-ttl span{ background:linear-gradient(transparent 70%, rgba(255,255,255,.16) 70%); }
.tp-home .why__top{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(32px,5vw,80px); align-items:end; }
.tp-home .why__intro{ line-height:2.05; max-width:34em; color:#e8eef8; }

/* 比較図 */
.tp-home .cmp{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,64px); margin-top:clamp(48px,5vw,72px); }
.tp-home .cmp__panel{ margin:0; }
.tp-home .cmp__panel figcaption{ display:flex; flex-direction:column; gap:4px; padding-bottom:16px; border-bottom:1px solid rgba(255,255,255,.2); }
.tp-home .cmp__panel figcaption b{ font-size:18px; letter-spacing:.06em; }
.tp-home .cmp__panel figcaption span{ font-size:14px; color:#b8cbe6; }
.tp-home .cmp__panel.is-before figcaption b{ color:#b8cbe6; }
.tp-home .cmp__svg{ display:block; width:100%; height:auto; margin-top:12px; font-family:inherit; }
.tp-home .cmp-ln{ fill:none; stroke:rgba(255,255,255,.32); stroke-width:1.4; stroke-dasharray:1; stroke-dashoffset:1; }
.tp-home .cmp-ln.is-on{ stroke:var(--orange); stroke-width:3; }
.tp-home .cmp-dot{ fill:rgba(255,255,255,.45); }
.tp-home .cmp-pro{ font-size:18px; font-weight:700; fill:#fff; letter-spacing:.04em; }
.tp-home .cmp-pro.is-mute{ fill:#b8cbe6; font-weight:500; }
.tp-home .cmp-me{ fill:var(--navy); stroke:#fff; stroke-width:2; }
.tp-home .cmp-me.is-mute{ stroke:rgba(255,255,255,.45); }
.tp-home .cmp-me-t{ font-size:17px; font-weight:700; fill:#fff; letter-spacing:.1em; }
.tp-home .cmp-ring{ fill:none; stroke:#fff; stroke-width:3; stroke-dasharray:1; stroke-dashoffset:1; }
.tp-home .cmp-ring2{ fill:none; stroke:rgba(255,255,255,.12); stroke-width:1; }
.tp-home .cmp-spokes line{ stroke:rgba(255,255,255,.22); stroke-width:1; stroke-dasharray:3 6; }
.tp-home .cmp-halo{ fill:rgba(255,255,255,.08); stroke:rgba(255,255,255,.25); stroke-width:1; }
.tp-home .cmp-dotn{ stroke:var(--navy); stroke-width:2.5; }
.tp-home .cmp-hub{ fill:#fff; }
.tp-home .cmp-hub-t{ font-family:var(--tp-en); font-size:23px; font-weight:500; fill:var(--navy); letter-spacing:.02em; }
.tp-home .cmp-flow{ fill:none; stroke:#fff; stroke-width:3; stroke-dasharray:4 14; stroke-linecap:round; opacity:0; animation:hmCmpFlow 1.2s linear infinite; }
@keyframes hmCmpFlow{ to{ stroke-dashoffset:-18; } }
.tp-home .cmp-spokes, .tp-home .cmp-nodes, .tp-home .cmp-orbit{ opacity:0; transition:opacity .8s; }
/* 画面に入ったら（top.js が .is-in を付ける）線を描く */
.tp-home .cmp.is-in .is-before .cmp-ln{ transition:stroke-dashoffset .9s cubic-bezier(.6,.1,.3,1); stroke-dashoffset:0; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(2){ transition-delay:.08s; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(3){ transition-delay:.16s; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(4){ transition-delay:.24s; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(5){ transition-delay:.32s; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(6){ transition-delay:.4s; }
.tp-home .cmp.is-in .is-before g path:nth-of-type(7){ transition-delay:.48s; }
.tp-home .cmp.is-in .is-after .cmp-ln{ transition:stroke-dashoffset .5s .9s ease-out; stroke-dashoffset:0; }
.tp-home .cmp.is-in .cmp-ring{ transition:stroke-dashoffset 1.4s 1.2s cubic-bezier(.6,.1,.3,1); stroke-dashoffset:0; }
.tp-home .cmp.is-in .cmp-nodes{ opacity:1; transition-delay:1.9s; }
.tp-home .cmp.is-in .cmp-spokes{ opacity:1; transition-delay:2.4s; }
.tp-home .cmp.is-in .cmp-orbit{ opacity:1; transition-delay:2.6s; }
.tp-home .cmp.is-in .cmp-flow{ opacity:.9; transition:opacity .6s 1.6s; }

/* 数字と理由 */
.tp-home .why__rows{ margin-top:clamp(64px,7vw,104px); border-top:1px solid rgba(255,255,255,.2); }
.tp-home .why__row{ position:relative; padding:clamp(48px,5vw,72px) 0; border-bottom:1px solid rgba(255,255,255,.2); }
.tp-home .why__main{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(32px,5vw,80px); align-items:end; }
.tp-home .why__fig{ display:flex; align-items:flex-end; gap:18px; }
.tp-home .why__fig b{ font-family:var(--tp-en); font-weight:200; font-size:clamp(150px,17vw,250px); line-height:.78; letter-spacing:-.04em;
  color:transparent; -webkit-text-stroke:1.5px rgba(255,255,255,.9); font-variant-numeric:tabular-nums; }
.tp-home .why__unit{ display:flex; flex-direction:column; padding-bottom:4px; }
.tp-home .why__unit small{ font-size:18px; font-weight:700; color:#fff; letter-spacing:.08em; }
.tp-home .why__unit span{ margin-top:8px; font-size:13px; color:#b8cbe6; letter-spacing:.06em; }
.tp-home .why__row h3{ font-size:clamp(20px,1.9vw,26px); font-weight:700; line-height:1.6; letter-spacing:.04em; color:#fff; }
.tp-home .why__row h3 span{ white-space:nowrap; }
.tp-home .why__body{ margin-top:20px; line-height:2.05; color:#e8eef8; font-size:16px; }

/* =========================================================
   ⑥ Group（体制図）：会社概要ページの体制図と同じデザイン・描画
   ========================================================= */
.tp-home .grp .tp-wrap{ max-width:1320px; }
.tp-home .grp__grid{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(32px,5vw,80px); align-items:end; }
.tp-home .grp__txt p{ line-height:2.1; }
.tp-home .grp__txt .more{ margin-top:28px; }

.tp-home .p-org{ position:relative; margin-top:clamp(56px,6vw,88px); --pg-navy:#003885; --pg-orange:#ff7f00; --g:14px; --drop:44px; --box:110px; --gap-svc:76px; }
.tp-home .p-org__hd{ display:flex; align-items:center; justify-content:center; gap:14px; width:fit-content; max-width:100%; margin:0 auto;
  padding:26px 72px; background:var(--pg-navy); color:#fff; font-size:clamp(19px,2.2vw,28px); font-weight:700; letter-spacing:.04em; line-height:1.3; }
.tp-home .p-org__mark{ display:block; width:46px; height:46px; flex:none; }
.tp-home .p-org__stem{ display:block; width:2px; height:var(--drop); margin:0 auto; background:var(--pg-navy); transform-origin:top; transform:scaleY(0); }
.tp-home .p-org__cols{ position:relative; display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:0 var(--g); padding-top:var(--drop); }
.tp-home .p-org__bar{ position:absolute; top:0; height:2px; background:var(--pg-navy);
  left:calc((100% - 6 * var(--g)) / 14); right:calc((100% - 6 * var(--g)) / 14); transform:scaleX(0); }
.tp-home .p-org__col{ position:relative; }
.tp-home .p-org__col::before{ content:""; position:absolute; left:50%; top:calc(var(--drop) * -1); width:2px; height:var(--drop); margin-left:-1px; background:var(--pg-navy); transform-origin:top; transform:scaleY(0); }
.tp-home .p-org__col::after{ content:""; position:absolute; left:50%; top:var(--box); width:1px; height:var(--gap-svc); margin-left:-.5px; background:var(--pg-navy); transform-origin:top; transform:scaleY(0); }
.tp-home .p-org__box{ position:relative; z-index:1; display:grid; place-items:center; height:var(--box); padding:10px 4px; background:var(--pg-navy); color:#fff;
  text-align:center; font-size:14px; font-weight:700; line-height:1.5; letter-spacing:.02em; opacity:0; box-shadow:inset 0 -4px 0 transparent; transition:opacity .5s, box-shadow .2s; }
.tp-home a.p-org__box:hover, .tp-home a.p-org__box:focus-visible{ box-shadow:inset 0 -4px 0 var(--pg-orange); }
.tp-home .p-org__lead{ position:relative; z-index:1; margin-top:6px; min-height:1.6em; text-align:right; font-size:12px; font-weight:700; color:var(--pg-navy); line-height:1.6; opacity:0; transition:opacity .5s; }
.tp-home .p-org__svc{ position:relative; z-index:1; margin-top:calc(var(--gap-svc) - 26px); }
.tp-home .p-org__svc li{ margin:0 0 8px; padding:10px 2px; letter-spacing:0; white-space:nowrap; border:1px solid var(--pg-navy); background:#fff; text-align:center; font-size:13px; line-height:1.5; opacity:0; transition:opacity .5s; }
.tp-home .p-org__tie{ position:absolute; z-index:2; left:-12px; right:-12px; top:calc(var(--drop) + var(--box) + 46px); height:0;
  border-top:1.5px dashed var(--pg-orange); text-align:center; transform:scaleX(0); }
.tp-home .p-org__tie span{ position:relative; top:-.85em; padding:0 14px; background:#fff; font-size:12px; font-weight:700; color:var(--pg-orange); letter-spacing:.04em; }
/* 描画の順番 */
.tp-home .p-org.is-in .p-org__stem{ transition:transform .35s ease-out; transform:scaleY(1); }
.tp-home .p-org.is-in .p-org__bar{ transition:transform .5s .35s ease-out; transform:scaleX(1); }
.tp-home .p-org.is-in .p-org__col::before{ transition:transform .3s .85s ease-out; transform:scaleY(1); }
.tp-home .p-org.is-in .p-org__box, .tp-home .p-org.is-in .p-org__lead{ opacity:1; transition-delay:1.05s; }
.tp-home .p-org.is-in .p-org__col::after{ transition:transform .4s 1.4s ease-out; transform:scaleY(1); }
.tp-home .p-org.is-in .p-org__tie{ transition:transform .7s 1.5s ease-out; transform:scaleX(1); }
.tp-home .p-org.is-in .p-org__svc li{ opacity:1; transition-delay:1.9s; }
.tp-home .p-org.is-in .p-org__svc li:nth-child(2){ transition-delay:2s; }
.tp-home .p-org.is-in .p-org__svc li:nth-child(3){ transition-delay:2.1s; }
.tp-home .p-org.is-in .p-org__svc li:nth-child(4){ transition-delay:2.2s; }
.tp-home .p-org.is-in .p-org__svc li:nth-child(5){ transition-delay:2.3s; }
@media (max-width:1180px){
  .tp-home .p-org{ --g:12px; }
  .tp-home .p-org__box{ font-size:13px; }
  .tp-home .p-org__svc li{ font-size:11.5px; padding:9px 2px; white-space:normal; }
}

/* =========================================================
   ⑦ Works（横に流れるご支援事例）
   ========================================================= */
.tp-home .wk{ border-top:1px solid var(--line); }
.tp-home .wk__top{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; flex-wrap:wrap; }
.tp-home .wk__flow{ margin-top:clamp(48px,5vw,72px); }
.tp-home .wk__track{ display:flex; width:max-content; gap:24px; padding:10px 0 24px; }
.tp-home .wk__card{ --g1:#1d5fbf; --g2:#00265e; display:flex; flex-direction:column; flex:none; width:clamp(280px,25vw,360px);
  background:#fff; border:1px solid var(--line); transition:border-color .25s, box-shadow .25s, transform .25s; }
.tp-home .wk__card.is-c{ --g1:#35b0e6; --g2:#0b6fae; }
.tp-home .wk__card.is-f{ --g1:#ff9a30; --g2:#e35a00; }
.tp-home .wk__card:hover{ border-color:var(--navy); box-shadow:0 18px 36px rgba(0,30,80,.12); transform:translateY(-4px); }
.tp-home .wk__img{ position:relative; aspect-ratio:16/10; overflow:hidden; background:linear-gradient(135deg,var(--g1),var(--g2)); color:#fff;
  display:flex; flex-direction:column; justify-content:flex-end; padding:20px 22px; }
.tp-home .wk__img::before{ content:""; position:absolute; width:110%; aspect-ratio:1; border-radius:50%; border:44px solid #fff; opacity:.1; right:-58%; top:-70%; transition:transform 1s cubic-bezier(.2,.7,.2,1); }
.tp-home .wk__img::after{ content:""; position:absolute; width:56%; aspect-ratio:1; border-radius:50%; border:1.5px solid rgba(255,255,255,.5); right:-12%; top:-30%; }
.tp-home .wk__card:hover .wk__img::before{ transform:rotate(-8deg) translate(-4%,4%); }
.tp-home .wk__img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.tp-home .wk__ind{ position:relative; z-index:1; font-size:clamp(22px,2vw,28px); font-weight:700; letter-spacing:.06em; line-height:1.3; }
.tp-home .wk__size{ position:relative; z-index:1; margin-top:6px; font-size:13px; font-weight:500; letter-spacing:.06em; color:rgba(255,255,255,.88); }
.tp-home .wk__body{ display:flex; flex-direction:column; flex:1; padding:20px 22px 22px; }
.tp-home .wk__tags{ font-size:13px; font-weight:700; color:var(--navy); letter-spacing:.06em; }
.tp-home .wk__tags span{ font-weight:500; color:var(--sub); }
.tp-home .wk__tags span::before{ content:"／"; margin:0 .5em; color:#b7c2d3; }
.tp-home .wk__card h3{ font-size:17px; font-weight:700; line-height:1.7; margin-top:10px; flex:1; }
.tp-home .wk__more{ display:flex; align-items:center; gap:10px; margin-top:18px; padding-top:14px; border-top:1px solid var(--line); font-size:13px; font-weight:700; color:var(--navy); letter-spacing:.06em; }
.tp-home .wk__more::after{ content:"→"; font-family:var(--tp-en); margin-left:auto; transition:transform .2s; }
.tp-home .wk__card:hover .wk__more::after{ transform:translateX(4px); }
.tp-home .wk__all{ margin-top:44px; text-align:right; }

/* =========================================================
   ⑧ Message & Members（紺の背景）
   ========================================================= */
.tp-home .msg{ position:relative; overflow:hidden; color:#fff;
  background:radial-gradient(circle at 12% 18%, rgba(58,120,207,.55), rgba(58,120,207,0) 55%),
             radial-gradient(circle at 92% 88%, rgba(0,22,60,.55), rgba(0,22,60,0) 50%), var(--navy); }
.tp-home .msg::before{ content:""; position:absolute; width:1000px; height:1000px; border-radius:50%; border:100px solid rgba(255,255,255,.045); left:-560px; bottom:-520px; pointer-events:none; }
/* altruloop のアイコンの透かし */
.tp-home .msg::after{ content:""; position:absolute; right:-140px; top:40px; width:min(46vw,660px); aspect-ratio:70/71; opacity:.05; pointer-events:none;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='22 21 70 71' fill='white'%3E%3Cpath d='M31.83,78.21c-4.78-9.75-3.89-22.81,1.99-29.11,2.14-2.29,4.75-3.51,7.54-3.53,2.25-.01,4.49.76,6.54,2.22-2.92-4.36-6.71-7-10.54-7.25-.54-.03-1.07-.02-1.59.04-2.25.27-4.37,1.42-6.2,3.38-6.35,6.8-7.26,21.03-2.03,31.71,2.57,5.25,6.31,8.85,10.21,10.01-2.31-1.71-4.36-4.28-5.93-7.47'/%3E%3Cpath d='M56,34.35c-.49.71-.97,1.43-1.45,2.2-7.95,12.51-13.76,29.72-16.38,46.38-.15.92-.28,1.84-.4,2.75,2.66.59,5.7.83,9.01.69-.12-1.39-.21-2.79-.26-4.22-.59-15.6,2.84-33.46,9.49-47.8'/%3E%3Cpath d='M60.9,47.24c-.45.08-.9.18-1.35.27,11.46-.3,18.97,4.65,17.57,12.49-.96,5.35-5.86,10.88-12.74,15.18-7.23-14.25-7.62-34.6-1.07-51.01-.44.66-.87,1.35-1.3,2.06-9.26,15.37-12.75,37.01-9.76,54.49.29,1.69.62,3.35,1.03,4.94.26-.04.51-.08.78-.13,4.88-.92,9.62-2.48,13.95-4.48,10.98-5.07,19.33-12.98,20.69-20.56,1.89-10.57-10.56-16.5-27.8-13.24'/%3E%3Cpath d='M37.61,38.86c2.03,0,3.67-1.64,3.67-3.67s-1.64-3.67-3.67-3.67-3.67,1.64-3.67,3.67,1.64,3.67,3.67,3.67'/%3E%3Cpath d='M77.29,45.1c2.62,0,4.75-2.12,4.75-4.75s-2.13-4.75-4.75-4.75-4.75,2.12-4.75,4.75,2.12,4.75,4.75,4.75'/%3E%3C/svg%3E"); }
.tp-home .msg .tp-wrap{ position:relative; }
.tp-home .msg .tp-en{ color:#cfe0f5; }
.tp-home .msg__grid{ position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(40px,5vw,80px); align-items:center; }
/* 代表の写真（まわりに輪） */
.tp-home .msg__photo{ position:relative; width:100%; aspect-ratio:4/5; border:1px solid rgba(255,255,255,.25); background:#fff;
  display:grid; place-items:center; color:#9fb3cf; font-size:13px; letter-spacing:.1em; }
.tp-home .msg__photo img{ position:absolute; inset:0; z-index:1; width:100%; height:100%; object-fit:cover; object-position:center 25%; }
.tp-home .msg__photo::before{ content:""; position:absolute; left:50%; top:50%; width:136%; aspect-ratio:1; border-radius:50%; border:1px solid rgba(255,255,255,.18); pointer-events:none; transform:translate(-50%,-50%); }
.tp-home .msg__photo::after{ content:""; position:absolute; left:50%; top:50%; width:118%; aspect-ratio:1; border-radius:50%; border:56px solid rgba(255,255,255,.04); pointer-events:none; transform:translate(-50%,-50%); z-index:-1; }
.tp-home .msg__ttl{ font-size:clamp(22px,2.4vw,30px); font-weight:700; line-height:1.6; color:#fff; }
.tp-home .msg__body{ margin-top:28px; line-height:2.15; color:#eef3fb; }
.tp-home .msg__sign{ margin-top:28px; font-size:14px; color:#b8cbe6; }
.tp-home .msg__sign b{ font-size:20px; color:#fff; margin-left:12px; letter-spacing:.12em; }
.tp-home .msg .more{ margin-top:32px; color:#fff; }

/* メンバー（横に流れる） */
.tp-home .mem{ margin-top:clamp(72px,8vw,112px); }
.tp-home .mem__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-bottom:32px; }
.tp-home .mem__head h3{ font-size:22px; font-weight:700; color:#fff; }
.tp-home .mem__flow{ margin:0 calc(50% - 50vw); }
.tp-home .mem__track{ display:flex; width:max-content; gap:24px; margin:0; }
.tp-home .mem__track li{ flex:none; width:clamp(200px,17vw,250px); }
.tp-home .mem__item{ display:block; }
.tp-home .mem__ph{ position:relative; aspect-ratio:3/4; overflow:hidden; background:linear-gradient(160deg,#f4f7fb,#e3eaf4);
  display:grid; place-items:center; color:#9fb3cf; font-family:var(--tp-en); font-size:12px; letter-spacing:.12em; }
.tp-home .mem__ph::before{ content:""; position:absolute; width:120%; aspect-ratio:1; border-radius:50%; border:36px solid #fff; opacity:.35; right:-64%; bottom:-48%; }
.tp-home .mem__ph img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 25%; transition:transform .6s; }
.tp-home .mem__item:hover .mem__ph img{ transform:scale(1.04); }
.tp-home .mem__item b{ display:block; margin-top:18px; font-size:20px; font-weight:700; letter-spacing:.06em; color:#fff; }
.tp-home .mem__item:hover b{ color:#cfe0f5; }
.tp-home .mem__pos{ margin-top:8px; font-size:12.5px; font-weight:500; line-height:1.7; color:#cfdcef; letter-spacing:.02em; }
.tp-home .mem__pos span{ display:block; color:#fff; }
.tp-home .mem__dom{ margin-top:6px; font-size:12.5px; font-weight:500; line-height:1.7; color:#cfdcef; }
.tp-home .mem__dom::before{ content:"専門："; color:#9fb7da; }

/* =========================================================
   ⑨ お知らせ・コラム・資料ダウンロード
   ========================================================= */
.tp-home .nw{ padding-bottom:0; }
.tp-home .nw__grid{ display:grid; grid-template-columns:minmax(0,4fr) minmax(0,8fr); gap:clamp(32px,5vw,80px); align-items:start; }
.tp-home .nw__grid .more{ margin-top:28px; }
.tp-home .nw__list{ border-top:1px solid var(--line); }
.tp-home .nw__item a{ display:grid; grid-template-columns:168px 1fr; gap:28px; align-items:center; padding:24px 0; border-bottom:1px solid var(--line); }
.tp-home .nw__th{ position:relative; aspect-ratio:16/10; overflow:hidden; background:linear-gradient(160deg,#f4f7fb,#e3eaf4); }
.tp-home .nw__th::before{ content:""; position:absolute; width:110%; aspect-ratio:1; border-radius:50%; border:22px solid #fff; opacity:.7; right:-55%; top:-55%; }
.tp-home .nw__th img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.tp-home .nw__item a:hover .nw__th img{ transform:scale(1.05); }
.tp-home .nw__meta{ display:flex; gap:16px; font-size:13px; font-weight:700; color:var(--navy); letter-spacing:.06em; }
.tp-home .nw__meta time{ font-family:var(--tp-en); font-weight:400; color:var(--sub); }
.tp-home .nw__ttl{ margin-top:8px; font-size:17px; font-weight:700; line-height:1.7; }
.tp-home .nw__item a:hover .nw__ttl{ color:var(--navy); text-decoration:underline; text-underline-offset:4px; }
.tp-home .nw__empty{ padding:24px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); color:var(--sub); }

/* コラム（横に流れる） */
.tp-home .col{ margin-top:clamp(80px,9vw,128px); }
.tp-home .col__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:clamp(32px,4vw,48px); }
.tp-home .col__flow{ margin:0 calc(50% - 50vw); }
.tp-home .col__track{ display:flex; width:max-content; gap:28px; }
.tp-home .col__card{ flex:none; width:clamp(260px,23vw,330px); }
.tp-home .col__img{ position:relative; aspect-ratio:16/9; border:1px solid var(--line); background:linear-gradient(160deg,#f4f7fb,#e3eaf4);
  display:flex; align-items:flex-end; padding:16px 18px; overflow:hidden; transition:border-color .2s; }
.tp-home .col__img::before{ content:""; position:absolute; width:90%; aspect-ratio:1; border-radius:50%; border:30px solid #fff; opacity:.7; right:-40%; top:-50%; }
.tp-home .col__img span{ position:relative; font-size:20px; font-weight:700; color:var(--navy); letter-spacing:.06em; }
.tp-home .col__img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.tp-home .col__card:hover .col__img{ border-color:var(--navy); }
.tp-home .col__card:hover .col__img img{ transform:scale(1.04); }
.tp-home .col__meta{ display:flex; justify-content:space-between; margin-top:16px; font-size:13px; font-weight:700; color:var(--navy); letter-spacing:.06em; }
.tp-home .col__meta time{ font-family:var(--tp-en); font-weight:400; color:var(--sub); }
.tp-home .col__card h3{ font-size:17px; font-weight:700; line-height:1.7; margin-top:8px; }
.tp-home .col__card:hover h3{ color:var(--navy); text-decoration:underline; text-underline-offset:4px; }

/* 資料ダウンロード：紺地＋表紙 */
.tp-home .dl{ margin-top:clamp(88px,10vw,140px); background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.tp-home .dl::before{ content:""; position:absolute; width:900px; height:900px; border-radius:50%; border:100px solid rgba(255,255,255,.045); left:-420px; bottom:-560px; pointer-events:none; }
.tp-home .dl__in{ position:relative; display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(32px,5vw,80px); align-items:center;
  padding-top:clamp(64px,7vw,96px); padding-bottom:clamp(64px,7vw,96px); }
.tp-home .dl .tp-en{ color:#cfe0f5; }
.tp-home .dl__ttl{ font-size:clamp(28px,3.4vw,42px); font-weight:700; letter-spacing:.04em; color:#fff; }
.tp-home .dl__txt p{ margin-top:20px; line-height:2.05; color:#eef3fb; }
.tp-home .dl__btn{ display:inline-flex; align-items:center; gap:16px; margin-top:32px; padding:18px 28px; background:#fff; color:var(--navy); font-weight:700; letter-spacing:.06em; transition:background-color .2s, color .2s; }
.tp-home .dl__btn i{ position:relative; width:24px; height:1px; background:currentColor; transition:width .25s; }
.tp-home .dl__btn i::after{ content:""; position:absolute; right:0; top:-3px; width:7px; height:7px; border-top:1px solid currentColor; border-right:1px solid currentColor; transform:rotate(45deg); }
.tp-home .dl__btn:hover{ background:var(--orange); color:#fff; }
.tp-home .dl__btn:hover i{ width:36px; }
.tp-home .dl__covers{ position:relative; display:flex; justify-content:center; align-items:flex-end; height:clamp(300px,30vw,400px); }
.tp-home .dl__cover{ position:absolute; bottom:0; width:clamp(160px,15vw,214px); aspect-ratio:210/297; padding:18px 16px; display:flex; flex-direction:column; overflow:hidden;
  box-shadow:0 24px 48px rgba(0,16,48,.35); transition:transform .9s cubic-bezier(.2,.7,.2,1), opacity .9s; opacity:0; }
.tp-home .dl__cover::after{ content:""; position:absolute; width:150%; aspect-ratio:1; border-radius:50%; border:26px solid currentColor; opacity:.12; right:-80%; bottom:-70%; }
.tp-home .dl__brand{ font-family:var(--tp-en); font-size:13px; font-weight:500; letter-spacing:.02em; }
.tp-home .dl__series{ margin-top:auto; font-size:10px; font-weight:700; letter-spacing:.1em; opacity:.8; }
.tp-home .dl__cover b{ margin-top:6px; font-size:clamp(15px,1.4vw,19px); line-height:1.5; letter-spacing:.04em; position:relative; z-index:1; }
.tp-home .dl__cover.is-1{ background:#fff; color:var(--navy); transform:translate(-62%,24px) rotate(-7deg); }
.tp-home .dl__cover.is-2{ background:#1e9fd8; color:#fff; transform:translate(0,24px); z-index:2; }
.tp-home .dl__cover.is-3{ background:#00265e; color:#fff; transform:translate(62%,24px) rotate(7deg); }
.tp-home .dl__covers.is-in .dl__cover{ opacity:1; }
.tp-home .dl__covers.is-in .is-1{ transform:translate(-62%,0) rotate(-7deg); }
.tp-home .dl__covers.is-in .is-2{ transform:translate(0,-18px); transition-delay:.12s; }
.tp-home .dl__covers.is-in .is-3{ transform:translate(62%,0) rotate(7deg); transition-delay:.24s; }
.tp-home .dl__covers.is-in .dl__cover:hover{ z-index:3; transition-delay:0s; }
.tp-home .dl__covers.is-in .is-1:hover{ transform:translate(-62%,-28px) rotate(-7deg); }
.tp-home .dl__covers.is-in .is-2:hover{ transform:translate(0,-46px); }
.tp-home .dl__covers.is-in .is-3:hover{ transform:translate(62%,-28px) rotate(7deg); }

/* =========================================================
   ⑩ 締め
   ========================================================= */
.tp-home .cl{ background:var(--navy-deep); color:#fff; position:relative; overflow:hidden; text-align:center; }
.tp-home .cl__art{ position:absolute; left:50%; top:50%; width:min(1100px,150vw); aspect-ratio:1; transform:translate(-50%,-50%); pointer-events:none; }
.tp-home .cl .tp-wrap{ position:relative; z-index:1; }
.tp-home .cl__ttl{ font-size:clamp(25px,4.6vw,60px); white-space:nowrap; font-weight:900; letter-spacing:.08em; line-height:1.5; color:#fff; }
.tp-home .cl__body{ max-width:44em; margin:36px auto 0; line-height:2.1; color:#eef3fb; font-size:16px; }
.tp-home .cl__cta{ display:flex; justify-content:center; flex-wrap:wrap; gap:20px; margin-top:52px; }
.tp-home .cl__cta .tp-btn{ min-width:260px; }

/* =========================================================
   レスポンシブ
   ========================================================= */
@media (max-width:1024px){
  .tp-home .svc__top{ grid-template-columns:1fr; }
  .tp-home .biz__fig{ margin:0 auto; max-width:600px; }
}
@media (max-width:900px){
  .tp-home .fv{ min-height:0; }
  .tp-home .fv::after{ display:none; }
  .tp-home .fv__in{ grid-template-columns:1fr; gap:12px; }
  .tp-home .fv__visual{ width:min(88vw,460px); order:2; }
  .tp-home .fv__ttl{ font-size:8vw; letter-spacing:.03em; }
  .tp-home .fv__lead br{ display:none; }

  .tp-home .vv__vision, .tp-home .grp__grid, .tp-home .msg__grid, .tp-home .nw__grid, .tp-home .dl__in,
  .tp-home .why__top, .tp-home .why__main{ grid-template-columns:1fr; }
  .tp-home .vv__values{ grid-template-columns:1fr 1fr; row-gap:40px; }
  .tp-home .vv__val:nth-child(2){ border-right:1px solid rgba(255,255,255,.22); }

  .tp-home .team__in{ grid-template-columns:1fr; gap:0; }
  .tp-home .team__txt{ padding-bottom:8px; }
  .tp-home .team__ph{ margin:0 calc(var(--gut) * -1); }
  .tp-home .team__ph img{ -webkit-mask-image:none; mask-image:none; }

  .tp-home .why__main{ gap:24px; }
  .tp-home .why__fig b{ font-size:120px; }
  .tp-home .cmp{ grid-template-columns:1fr; }

  .tp-home .msg__photo{ max-width:min(420px,100%) !important; }
  .tp-home .col__head{ flex-wrap:wrap; }

  /* 事業：写真の横に説明 */
  .tp-home .biz__list{ grid-template-columns:1fr; gap:40px; }
  .tp-home .bz{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); grid-template-rows:auto 1fr; column-gap:28px; }
  .tp-home .bz__vis{ grid-row:1 / 3; margin-bottom:0; aspect-ratio:auto; min-height:220px; }
  .tp-home .bz__desc{ margin-top:0; }
  .tp-home .bz ul{ grid-column:2; margin-top:16px; }

  /* 流れるカードの幅 */
  .tp-home .wk__card{ width:78vw; max-width:340px; }
  .tp-home .col__card{ width:74vw; max-width:320px; }
  .tp-home .mem__track li{ width:58vw; max-width:240px; }

  /* 体制図：2列に並べ、各社が画面に入ったものから順に表示 */
  .tp-home .p-org__cols{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 16px; padding-top:0; }
  .tp-home .p-org__bar, .tp-home .p-org__col::before, .tp-home .p-org__col::after{ display:none; }
  .tp-home .p-org__tie{ position:relative; grid-column:1 / -1; top:auto; left:auto; right:auto; margin:22px 0 4px; }
  .tp-home .p-org__box{ height:auto; min-height:80px; }
  .tp-home .p-org__svc{ margin-top:12px; }
  .tp-home .p-org__hd{ width:100%; padding:18px 20px; }
  .tp-home .p-org__stem{ height:28px; margin-bottom:28px; }
  .tp-home .p-org.is-in .p-org__stem{ transition:transform .4s ease-out; }
  .tp-home .p-org.is-in .p-org__tie{ transition:transform .7s .2s ease-out; }
  .tp-home .p-org__col .p-org__box, .tp-home .p-org__col .p-org__lead, .tp-home .p-org__col .p-org__svc li{
    transform:translateY(14px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1) !important; }
  .tp-home .p-org.is-in .p-org__col:not(.is-in) .p-org__box,
  .tp-home .p-org.is-in .p-org__col:not(.is-in) .p-org__lead,
  .tp-home .p-org.is-in .p-org__col:not(.is-in) .p-org__svc li{ opacity:0; }
  .tp-home .p-org__col.is-in .p-org__box, .tp-home .p-org__col.is-in .p-org__lead, .tp-home .p-org__col.is-in .p-org__svc li{ opacity:1; transform:none; }
  .tp-home .p-org__col.is-in .p-org__box{ transition-delay:0s !important; }
  .tp-home .p-org__col.is-in .p-org__lead{ transition-delay:.15s !important; }
  .tp-home .p-org__col.is-in .p-org__svc li{ transition-delay:.35s !important; }
  .tp-home .p-org__col.is-in .p-org__svc li:nth-child(2){ transition-delay:.45s !important; }
  .tp-home .p-org__col.is-in .p-org__svc li:nth-child(3){ transition-delay:.55s !important; }
  .tp-home .p-org__col.is-in .p-org__svc li:nth-child(4){ transition-delay:.65s !important; }
  .tp-home .p-org__col.is-in .p-org__svc li:nth-child(5){ transition-delay:.75s !important; }
}
@media (max-width:640px){
  .tp-home .fv__cta{ flex-direction:column; max-width:none; }
  .tp-home .fv__cta .tp-btn{ max-width:none; width:100%; flex:none; }
  .tp-home .cl__cta .tp-btn{ width:100%; min-width:0; }

  .tp-home .v-name{ font-size:35px; }
  .tp-home .v-svc, .tp-home .v-ov{ display:none; }
  .tp-home .v-core{ font-size:26px; }

  .tp-home .vv__values{ grid-template-columns:1fr; row-gap:0; }
  .tp-home .vv__val, .tp-home .vv__val:last-child, .tp-home .vv__val:nth-child(2){ border:0; border-top:1px solid rgba(255,255,255,.22); padding:28px 0; }
  .tp-home .vv__val:last-child{ border-bottom:1px solid rgba(255,255,255,.22); }

  .tp-home .bz{ display:block; }
  .tp-home .bz__vis{ aspect-ratio:16/9; min-height:0; margin-bottom:20px; }

  .tp-home .nw__item a{ grid-template-columns:112px 1fr; gap:16px; }
  .tp-home .dl__cover{ width:128px; }
}

/* 動きを減らす設定の端末：アニメーションなし・流れる要素は指で横に動かす */
/* =========================================================
   スクロールしたときの動き（案A：ふわっと浮かび上がる）
   top.js が対象の要素に .tp-rv を付け、画面に入ったら .is-in を付ける。
   動き終わったら両方とも外す（ホバーなど元の動きに戻すため）。
   ※ ファーストビュー・「選ばれる理由」の数字の行は対象外
   ========================================================= */
.tp-home .tp-rv{ opacity:0 !important; transform:translate3d(0,28px,0) !important;
  transition:opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1) !important; transition-delay:var(--rv-d,0s) !important; }
.tp-home .tp-rv.is-in{ opacity:1 !important; transform:none !important; }

@media (prefers-reduced-motion:reduce){
  .tp-home *, .tp-home *::before, .tp-home *::after{ animation-duration:.01ms !important; animation-delay:0s !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .tp-home .fv__phimg{ transition:opacity .01s; }
  .tp-home .js-flow{ -webkit-mask-image:none; mask-image:none; }
  .tp-home .cmp-ln, .tp-home .cmp-ring{ stroke-dashoffset:0 !important; }
  .tp-home .cmp-flow, .tp-home .cmp-orbit{ display:none; }
  .tp-home .cmp-spokes, .tp-home .cmp-nodes{ opacity:1 !important; }
  .tp-home .p-org__stem, .tp-home .p-org__bar, .tp-home .p-org__tie, .tp-home .p-org__col::before, .tp-home .p-org__col::after{ transform:none !important; }
  .tp-home .p-org__box, .tp-home .p-org__lead, .tp-home .p-org__svc li, .tp-home .dl__cover{ opacity:1 !important; transform:none !important; }
  .tp-home .dl__cover.is-1{ transform:translate(-62%,0) rotate(-7deg) !important; }
  .tp-home .dl__cover.is-3{ transform:translate(62%,0) rotate(7deg) !important; }
}