/*
Theme Name: Rind Law
Theme URI: https://example.com/
Author: 株式会社メグダイ
Author URI: https://megdai.com/
Description: 企業法務を専門とするRind法律事務所のコーポレートサイト用テーマ。白地に明朝のスローガンとオレンジのアクセントを組み合わせた、余白の広い構成です。お知らせ・取扱分野の投稿タイプと、事務所情報・お問い合わせフォームの管理画面を備えています。
Version: 1.17.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rindlaw
Tags: business, custom-menu, featured-images, translation-ready
*/

/* ==========================================================================
   Rind法律事務所
   採寸元：https://www.oginotax.com/
     ground #FFFFFF / sub #F5F5F7 / navy #073061 / blue #1D4E89 / accent #FA723D
     本文 游ゴシック 15px・行間2.0・字間0.04em ／ スローガン 明朝・字間0.2em
     ラベル見出し 18px＋オレンジ80×1pxの下線・下余白50px
     セクション間 160〜210px ／ コンテンツ幅 80%
   ========================================================================== */

/* --------------------------------------------------------------- tokens  */
:root{
  --mark:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1600 991%22 role=%22img%22 aria-label=%22Rind%22><g id=%22rind-mark%22 transform=%22translate(0,991) scale(.1,-.1)%22 fill=%22currentColor%22><path d=%22M4816 9894 c-385 -70 -914 -363 -1356 -751 -675 -593 -1218 -1528 -1352 -2326 -3 -16 -147 -88 -268 -134 -8 -3 -96 -43 -195 -89 -1745 -802 -2147 -1472 -975 -1623 236 -30 274 -31 278 -4 3 19 -3 22 -45 28 -475 65 -783 200 -783 343 0 261 660 682 1758 1123 96 38 178 69 183 69 5 0 9 -79 9 -177 1 -590 217 -1011 640 -1245 268 -149 704 -215 1173 -180 48 4 87 5 87 2 -1 -3 -72 -39 -158 -80 -1128 -538 -2074 -1322 -2728 -2265 -404 -582 -766 -1282 -898 -1735 -144 -497 -49 -794 269 -839 640 -91 2322 1232 3385 2664 422 567 709 1079 1102 1965 101 227 83 205 190 225 100 18 237 25 279 13 32 -9 36 -27 44 -188 14 -263 65 -404 189 -521 180 -168 430 -214 786 -142 515 104 917 313 1405 731 72 62 132 112 135 112 4 0 -13 -87 -37 -192 -97 -436 -79 -575 82 -661 175 -93 388 47 855 561 85 94 156 170 157 168 2 -1 -13 -43 -33 -92 -106 -261 -150 -423 -139 -504 15 -107 94 -177 189 -166 81 9 92 17 423 317 373 339 669 516 1083 647 99 31 217 58 225 50 2 -2 -13 -74 -35 -161 -133 -529 -100 -841 89 -855 86 -6 133 24 318 200 247 237 364 332 558 453 100 63 306 168 313 160 2 -2 -6 -33 -17 -70 -99 -320 -2 -603 240 -700 156 -62 430 -34 689 72 190 78 378 212 592 422 48 47 89 83 91 80 1 -2 14 -29 27 -59 184 -408 710 -632 1180 -503 351 96 696 355 942 708 261 374 305 653 118 750 -126 65 -261 12 -815 -320 -350 -210 -597 -338 -795 -413 -109 -41 -207 -68 -216 -59 -19 18 -56 160 -61 231 -6 83 -6 83 114 227 321 387 402 498 583 799 85 140 243 442 312 595 15 33 43 96 63 140 20 44 59 134 86 200 28 66 59 140 69 165 11 25 35 86 54 135 19 50 57 149 84 220 238 621 260 895 70 895 -199 0 -762 -650 -1207 -1395 -317 -531 -612 -1261 -647 -1603 -7 -69 -24 -67 -24 4 0 157 -125 262 -323 272 -368 18 -888 -263 -1095 -592 -59 -94 -81 -112 -148 -126 -88 -18 -254 -75 -379 -130 -199 -88 -274 -133 -622 -371 -51 -34 -96 -60 -99 -56 -22 22 48 357 116 558 64 186 54 269 -43 331 -122 78 -362 37 -757 -129 -240 -101 -644 -332 -868 -496 -60 -44 -71 -43 -47 3 28 54 133 307 166 398 82 230 21 392 -145 392 -119 0 -176 -47 -660 -533 -263 -266 -370 -367 -373 -355 -2 9 9 68 26 130 115 434 94 628 -79 723 -118 64 -265 27 -437 -112 -39 -32 -136 -110 -215 -174 -505 -410 -986 -626 -1403 -632 -228 -2 -266 42 -280 328 -9 207 -44 317 -130 413 -43 48 -44 50 -22 56 12 3 76 20 142 37 952 243 1782 646 2175 1055 578 603 291 1338 -600 1537 -369 83 -1116 88 -1538 11 -33 -6 -33 -6 -25 77 16 173 9 743 -10 889 -114 829 -463 1182 -1061 1074z m352 -129 c295 -70 492 -381 557 -880 32 -242 30 -863 -4 -1025 -7 -34 -7 -34 -91 -47 -657 -99 -1678 -355 -2450 -613 -256 -86 -684 -242 -832 -305 -24 -10 -23 6 6 135 193 841 764 1711 1466 2231 531 394 1028 579 1348 504z m10198 -1747 c-3 -13 -14 -72 -26 -131 -45 -228 -182 -644 -327 -987 -237 -563 -577 -1063 -946 -1390 -29 -25 -29 -25 -22 5 84 381 367 1034 698 1610 44 77 95 166 113 197 102 179 301 473 413 612 31 37 62 77 70 87 18 26 32 24 27 -3z m-8360 -468 c595 -47 974 -278 974 -592 0 -453 -943 -1022 -2295 -1383 -106 -28 -373 -95 -380 -95 -3 0 5 24 16 53 257 644 432 1278 514 1858 8 56 18 105 22 110 9 8 268 37 448 49 170 11 558 11 701 0z m-1336 -94 c0 -156 -148 -748 -291 -1161 -84 -244 -323 -839 -349 -868 -8 -9 -148 -34 -555 -103 -754 -126 -1193 -136 -1500 -32 -376 126 -598 407 -672 848 -15 96 -25 462 -12 475 25 24 792 277 1139 375 80 23 174 50 210 60 85 25 618 160 785 198 297 69 1137 228 1223 231 17 1 22 -5 22 -23z m7671 -1976 c105 -29 150 -102 152 -247 2 -96 2 -96 -113 -135 -131 -44 -281 -77 -490 -108 -127 -19 -393 -61 -472 -75 -27 -4 -27 -4 -6 33 183 318 678 602 929 532z m2251 -347 c-186 -273 -507 -543 -758 -638 -241 -92 -490 -61 -672 84 -68 54 -65 58 47 87 170 43 465 149 821 295 330 135 569 228 588 229 7 0 -4 -25 -26 -57z m-2263 -309 c-20 -24 -247 -205 -315 -251 -214 -145 -521 -246 -646 -213 -74 20 -101 165 -64 342 30 137 5 128 339 122 246 -4 365 -2 671 14 25 2 27 0 15 -14z m-8784 -411 c-484 -950 -859 -1485 -1589 -2262 -811 -864 -1927 -1680 -2388 -1746 -48 -7 -48 -7 -48 38 0 366 490 1334 1054 2082 663 880 1773 1689 2946 2149 168 66 162 64 178 65 8 1 -57 -137 -153 -326z%22/><path d=%22M8378 5990 c-123 -37 -179 -207 -105 -319 65 -98 213 -118 303 -39 172 151 21 424 -198 358z%22/></g></svg>");
  --navy:#073061;
  --navy-d:#04203F;
  --blue:#1D4E89;
  --accent:#FA723D;
  --ink:#222222;
  --muted:#666666;
  --sub:#F5F5F7;
  --line:#DCDCE0;
  --rule-s:#EDEDF0;
  --line-w:rgba(255,255,255,.34);
  --dot:rgba(7,48,97,.16);

  --go:"Yu Gothic Medium","游ゴシック Medium",YuGothic,"游ゴシック体",
       "Hiragino Kaku Gothic ProN",メイリオ,Meiryo,
       "Noto Sans JP","Noto Sans CJK JP",sans-serif;
  --min:"Noto Serif JP","Noto Serif CJK JP","Hiragino Mincho ProN","Yu Mincho",serif;
  /* 英字見出し。Webフォントに頼らず、どの環境にもある書体だけで組む。
     以前は Archivo を読んでいたが、読み込みに失敗した文字（特に & ）だけ
     別の書体に落ちて見た目が揃わなかったため、システムフォントに変更した。 */
  --en:"Helvetica Neue",Helvetica,Arial,"Segoe UI","Hiragino Sans",
       "Noto Sans JP",sans-serif;

  --rail:74px;                    /* 左右の固定レール幅（PC） */
  --gut:10%;                      /* コンテンツの左右余白 */
  --sec:clamp(88px,11vw,180px);   /* セクション間 */
  --e:cubic-bezier(.22,1,.36,1);
}

/* --------------------------------------------------------------- reset   */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:110px}
body{
  background:#fff;color:var(--ink);
  font-family:var(--go);
  font-size:15px;line-height:2;letter-spacing:.04em;
  font-feature-settings:"palt";
  overflow-x:clip;line-break:strict;overflow-wrap:break-word;
}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
[hidden]{display:none!important}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
table{border-collapse:collapse;width:100%}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
::selection{background:var(--navy);color:#fff}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* 句点で改行する */
.ku > span{display:block}
.nb{display:inline-block;white-space:nowrap;max-width:100%}
@media (max-width:520px){.nb{white-space:normal}}

.note{font-size:13px;line-height:2;color:var(--muted)}   /* 注釈 13px */
.num{font-family:var(--en);letter-spacing:.06em;font-variant-numeric:tabular-nums}

h1,h2,h3,h4,.lbl,.en-h,.slogan,.tag,.btn,.news-list .t,.tbl th,
.field > .lb,.cta-box .t,.news-tabs button{
  word-break:keep-all;overflow-wrap:break-word;line-break:strict}
@supports (word-break:auto-phrase){
  h1,h2,h3,h4,p,li,td,dd,.slogan,.news-list .t{word-break:auto-phrase}
}

/* --------------------------------------------------------------- layout  */
.wrap{width:80%;max-width:1400px;margin-inline:auto}
.wrap-n{width:80%;max-width:980px;margin-inline:auto}
.sect{margin-bottom:var(--sec)}
.sub-bg{background:var(--sub)}

/* ドット地紋（採寸元の bg_dot を CSS で再現） */
.dotted{
  background-image:radial-gradient(var(--dot) 1.1px,transparent 1.1px);
  background-size:9px 9px;
}

/* --------------------------------------------------------- 固定レール    */
/* 左：ロゴ。トップの最上部ではネイビーの箱、スクロール後は小さな印 */
.rail-l{position:fixed;left:0;top:0;z-index:80;
  width:var(--rail);display:flex;flex-direction:column;align-items:center;
  padding-top:26px;pointer-events:none}
.rail-l a{pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:10px;
  opacity:0;transform:translateY(-6px);transition:opacity .5s var(--e),transform .5s var(--e)}
.rail-l.on a{opacity:1;transform:none}
/* 署名マーク。縦横比は 1600:991。箱の大きさだけ変えれば拡縮できる */
.emblem{width:40px;height:25px;display:grid;place-items:center;color:var(--navy)}
.emblem::after{content:"";width:100%;height:100%;background:currentColor;
  -webkit-mask:var(--mark) no-repeat center/contain;mask:var(--mark) no-repeat center/contain}
.rail-l .wm{font-family:var(--min);font-size:13px;letter-spacing:0;color:var(--navy);
  font-weight:500;line-height:1}
.rail-l .jp{display:none}

/* 右：メニュー */
.rail-r{position:fixed;right:0;top:0;z-index:81;width:var(--rail);
  display:flex;flex-direction:column;align-items:center;padding-top:30px;gap:18px}
.burger{width:34px;height:20px;position:relative;display:block}
.burger span{position:absolute;left:0;width:34px;height:1px;background:var(--ink);
  transition:transform .45s var(--e),opacity .3s}
.burger span:nth-child(1){top:5px}
.burger span:nth-child(2){top:13px}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(4px) rotate(19deg)}
.burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-4px) rotate(-19deg)}
.rail-r .lb{font-family:var(--en);font-size:10px;letter-spacing:.24em;color:var(--ink);
  writing-mode:vertical-rl;text-transform:uppercase}

/* 左端の縦ラベル */
.side-tag{position:absolute;left:0;bottom:96px;z-index:6;width:var(--rail);
  opacity:0;animation:fade 1s var(--e) 1.35s forwards;
  display:grid;place-items:center;
  font-family:var(--en);font-size:10px;letter-spacing:.26em;color:#fff;
  writing-mode:vertical-rl;text-transform:uppercase}

/* 浮遊する問い合わせボタン */
.float-c{opacity:0;transform:translateY(16px);animation:riseIn .8s var(--e) .9s forwards;position:fixed;right:22px;bottom:22px;z-index:74;
  width:52px;height:52px;border-radius:50%;background:var(--navy);
  display:grid;place-items:center;transition:background .35s var(--e)}
.float-c:hover{background:var(--blue)}
.float-c svg{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:1.4}

/* 全画面メニュー */
.menu{position:fixed;inset:0;z-index:78;background:#fff;
  opacity:0;visibility:hidden;transition:opacity .5s var(--e),visibility .5s;
  overflow:hidden;display:grid;place-items:center}
.menu.open{opacity:1;visibility:visible}
.menu__in{position:relative;z-index:1;width:80%;max-width:760px;
  display:grid;grid-template-columns:1fr;align-items:center}

.menu__nav{display:grid;grid-template-columns:1fr auto;
  gap:clamp(26px,4vw,72px);align-items:start}
.menu__nav ul{display:flex;flex-direction:column;margin:0;padding:0}
.menu__nav li,.menu__foot{opacity:0;transform:translateY(14px);
  transition:opacity .55s var(--e),transform .55s var(--e)}
.menu.open .menu__nav li,.menu.open .menu__foot{opacity:1;transform:none}
.menu.open .menu__nav li:nth-child(1){transition-delay:.16s}
.menu.open .menu__nav li:nth-child(2){transition-delay:.22s}
.menu.open .menu__nav li:nth-child(3){transition-delay:.28s}
.menu.open .menu__nav li:nth-child(4){transition-delay:.34s}
.menu.open .menu__nav li:nth-child(5){transition-delay:.40s}
.menu.open .menu__foot{transition-delay:.46s}
.menu__nav a{display:block;position:relative;width:fit-content;max-width:100%}
.menu__nav a::after{content:"";position:absolute;left:0;bottom:calc(50% - .95em);
  width:100%;height:1px;background:var(--accent);
  transform:scaleX(0);transform-origin:right;transition:transform .45s var(--e)}
.menu__nav a:hover::after{transform:scaleX(1);transform-origin:left}

.menu__nav .main li+li{border-top:1px solid var(--rule-s,#EDEDF0)}
.menu__nav .main a{font-size:clamp(17px,1.6vw,21px);letter-spacing:.11em;line-height:1.5;
  padding-block:clamp(15px,1.5vw,21px)}
.menu__nav .sub a{font-size:14px;letter-spacing:.08em;line-height:1.6;
  padding-block:13px;color:var(--muted)}
.menu__nav .sub a:hover{color:var(--ink)}

.menu__foot{grid-column:1/-1;margin-top:clamp(26px,3.4vw,44px);
  padding-top:clamp(20px,2.6vw,30px);border-top:1px solid var(--rule-s,#EDEDF0);
  display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 28px}
.menu__foot .tel{font-family:var(--en);font-size:clamp(20px,2.2vw,26px);
  letter-spacing:.05em;color:var(--navy)}
.menu__foot .ad{font-size:13px;line-height:1.9;color:var(--muted)}

/* --------------------------------------------------------------- 見出し  */
/* ラベル見出し：18px＋オレンジ 80×1px の下線、下余白 50px */
.lbl{font-family:var(--min);font-size:19px;line-height:1.5;letter-spacing:.12em;font-weight:700;
  padding-bottom:16px;margin-bottom:50px;position:relative}
.lbl::after{content:"";position:absolute;left:0;bottom:0;width:80px;height:1px;background:var(--accent)}
.lbl.center{text-align:center}
.lbl.center::after{left:50%;transform:translateX(-50%)}
.lbl.light{color:#fff}

/* 英字見出し（オレンジの縦バー付き） */
.en-h{font-family:var(--min);font-size:clamp(21px,2.1vw,26px);line-height:1.5;letter-spacing:.04em;
  font-weight:700;display:flex;align-items:center;gap:14px;
  font-feature-settings:normal;font-variant-ligatures:none}
.en-h::before{content:"";width:3px;height:1.05em;background:var(--accent);flex:none}

/* 明朝スローガン：字間0.2em */
.slogan{font-family:var(--min);font-weight:700;
  font-size:clamp(20px,2.1vw,28px);line-height:1.6;letter-spacing:.2em;
  text-wrap:balance}
.slogan.lg{font-size:clamp(23px,2.8vw,34px)}

.lead{color:var(--muted);line-height:2.05}

/* --------------------------------------------------------------- button  */
/* 採寸元：150×42 / 12px / 字間0.1em / 1px 枠 #1D4E89 */
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;
  min-width:172px;min-height:48px;padding:.6rem 1.4rem;
  border:1px solid var(--blue);color:var(--blue);background:transparent;
  font-family:var(--go);font-size:13px;letter-spacing:.1em;line-height:1.5;
  position:relative;overflow:hidden;z-index:0;
  transition:color .45s var(--e),border-color .45s var(--e)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--blue);
  transform:scaleX(0);transform-origin:right;transition:transform .45s var(--e)}
.btn:hover{color:#fff;letter-spacing:.14em}
.btn:hover::before{transform:scaleX(1);transform-origin:left}
.btn{transition:color .45s var(--e),border-color .45s var(--e),letter-spacing .45s var(--e)}
.btn.fill{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.fill::before{background:var(--blue)}
.btn.light{border-color:var(--line-w);color:#fff}
.btn.light::before{background:#fff}
.btn.light:hover{color:var(--navy);border-color:#fff}
.btn.lg{min-width:230px;min-height:58px;font-size:14px}

/* 矢印つきテキストリンク */
.alink{display:inline-flex;align-items:center;gap:18px;font-size:13px;letter-spacing:.1em}
.alink .ar{position:relative;width:34px;height:1px;background:currentColor;flex:none;
  transition:width .4s var(--e)}
.alink .ar::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)}
.alink:hover .ar{width:52px}

/* --------------------------------------------------------------- hero    */
.hero{position:relative;height:min(92svh,880px);min-height:520px;overflow:hidden;
  background:var(--navy)}
.hero__slides{position:absolute;inset:0}
.hero__slides > picture,.hero__slides > img{position:absolute;inset:0;display:block;
  opacity:0;transition:opacity 1.6s var(--e);transform:scale(1.045)}
.hero__slides img{width:100%;height:100%;object-fit:cover;object-position:50% 38%}
.hero__slides > picture.on,.hero__slides > img.on{opacity:1;animation:kb 13s var(--e) forwards}
@keyframes kb{from{transform:scale(1.075) translate3d(0,1.2%,0)}to{transform:scale(1) translate3d(0,0,0)}}
.hero::after{content:"";position:absolute;inset:0;z-index:2;
  background:linear-gradient(100deg,rgba(4,32,63,.52) 0%,rgba(4,32,63,.18) 46%,rgba(4,32,63,.05) 70%)}

/* 左上のネイビーの箱（ロゴ） */
.kv-badge{position:absolute;left:0;top:0;z-index:7;background:var(--navy);color:#fff;
  width:clamp(86px,6.6vw,110px);padding:28px 0 28px;
  display:flex;flex-direction:column;align-items:center;gap:0;
  clip-path:inset(0 0 100% 0);animation:wipeDown 1s var(--e) .15s forwards}
@keyframes wipeDown{to{clip-path:inset(0 0 0 0)}}
.kv-badge .em,.kv-badge .wm,.kv-badge .jp{opacity:0;animation:fade .7s var(--e) forwards}
.kv-badge .em{animation-delay:.5s}
.kv-badge .wm{animation-delay:.62s}
.kv-badge .jp{animation-delay:.74s}
.kv-badge .em{width:58px;height:36px;display:grid;place-items:center;margin-bottom:24px}
.kv-badge .em::after{content:"";width:100%;height:100%;background:#fff;
  -webkit-mask:var(--mark) no-repeat center/contain;mask:var(--mark) no-repeat center/contain}
.kv-h{display:contents;font-size:inherit;font-weight:inherit}
/* 縦組みの字送りを wm と jp でそろえる（1文字 = font-size + letter-spacing） */
.kv-badge .wm{font-family:var(--min);font-size:20px;font-weight:500;letter-spacing:0;
  line-height:1;white-space:nowrap;margin-bottom:8px}
/* 英字は縦組み（writing-mode）を使わず、1文字ずつの行を縦に積む。
   縦組みの inline-block はベースライン基準で左右位置が決まるため、
   ブラウザによって英字だけ2〜3px右にずれる（実測で確認）。
   flex で積めば align-items:center がそのまま光学的な中央になる。 */
.kv-badge .wm,.rail-l .wm{display:flex;flex-direction:column;align-items:center}
.kv-badge .wm i,.rail-l .wm i{display:block;font-style:normal;
  height:1.06em;line-height:1.06em;text-align:center}
/* 縦組みでは letter-spacing が最後の字の下にも付くので、高さを詰めて相殺する */
.kv-badge .jp{font-family:var(--min);font-size:16px;letter-spacing:.2em;font-weight:500;
  writing-mode:vertical-rl;line-height:1;white-space:nowrap;height:5.8em}
.kv-badge .unit{font-family:var(--go);font-size:8.5px;letter-spacing:.22em;font-weight:400;
  color:rgba(255,255,255,.5);text-align:center;line-height:1;white-space:nowrap;
  text-transform:uppercase;text-indent:.22em}

/* 縦書きのキャッチ（白いパネル） */
.kv-slogan{position:absolute;right:calc(var(--rail) + 2%);top:0;z-index:6;
  background:#fff;padding:clamp(40px,5vw,68px) clamp(26px,2.6vw,40px) clamp(52px,6vw,80px);
  display:flex;flex-direction:row-reverse;gap:clamp(14px,1.5vw,24px);
  clip-path:inset(0 0 100% 0);animation:wipeDown 1.1s var(--e) .3s forwards}
.kv-slogan .row{writing-mode:vertical-rl;font-family:var(--min);font-weight:500;
  font-size:clamp(17px,1.55vw,21px);letter-spacing:.34em;line-height:1;color:var(--ink)}
.kv-slogan .row span{display:inline-block;opacity:0;transform:translateY(-14px);
  animation:drop .8s var(--e) forwards}

@keyframes drop{to{opacity:1;transform:none}}

/* 左下の白いパネル */
.kv-foot{position:absolute;left:0;bottom:0;z-index:6;background:#fff;
  padding:clamp(24px,2.6vw,34px) clamp(34px,4vw,60px);
  display:flex;align-items:center;gap:clamp(26px,4vw,64px);
  opacity:0;transform:translateY(18px);animation:riseIn .9s var(--e) 1.15s forwards}
@keyframes riseIn{to{opacity:1;transform:none}}
.kv-foot .dots{display:flex;gap:9px}
.kv-foot .dots button{width:7px;height:7px;border-radius:50%;background:var(--line);
  transition:background .35s var(--e),transform .35s var(--e)}
.kv-foot .dots button[aria-current="true"]{background:var(--navy);transform:scale(1.25)}

/* 最新のお知らせ（PCは1行） */
.kv-news{display:flex;align-items:center;gap:clamp(14px,1.5vw,22px);min-width:0;
  max-width:min(52vw,640px)}
.kv-news__m{display:flex;align-items:center;gap:12px;flex:none}
.kv-news__m time{font-size:12.5px;color:var(--muted);white-space:nowrap}
.kv-news .tag{flex:none}
.kv-news__t{font-size:14px;line-height:1.6;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  transition:color .35s var(--e)}
.kv-news .ar{position:relative;width:30px;height:1px;background:var(--ink);flex:none;
  transition:width .4s var(--e),background .35s var(--e)}
.kv-news .ar::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);
  color:var(--ink)}
.kv-news:hover .kv-news__t{color:var(--blue)}
.kv-news:hover .ar{width:46px;background:var(--blue)}
.kv-news:hover .ar::after{color:var(--blue)}
@keyframes fade{to{opacity:1}}

/* --------------------------------------------------------- 下層ページ頭  */
.phead{padding-top:clamp(72px,7vw,112px);padding-bottom:clamp(36px,4vw,56px);position:relative}
.phead .plbl{font-size:14px;letter-spacing:.14em;color:var(--muted);
  display:block;padding-bottom:14px;margin-bottom:26px;position:relative;width:fit-content}
.phead .plbl::after{content:"";position:absolute;left:0;bottom:0;width:80px;height:1px;background:var(--accent)}
/* ページ見出し。画面幅にあわせて途切れなく大きさが変わります。
   360px で 20px、1200px 以上で 40px。間はなめらかに変化します。
   下限を 26px で止めていたころは、スマートフォンで
   「企業法務を中心とした分野を」のような長い行が途中で折り返し、
   最後の数文字だけが次の行に残っていました。
   text-wrap:balance は、それでも折り返すときに行の長さをそろえます。 */
.phead h1{font-family:var(--min);font-weight:700;
  font-size:clamp(20px,calc(11.4px + 2.38vw),40px);
  line-height:1.55;letter-spacing:.16em;text-wrap:balance}

/* お知らせ記事の見出しも同じ考え方で。こちらは上限を 30px に。 */
.post-h1{font-family:var(--min);font-weight:700;
  font-size:clamp(19px,calc(12px + 1.5vw),30px);
  line-height:1.6;letter-spacing:.12em;text-wrap:balance}
.phead .lead{margin-top:26px;max-width:44em}
.phead__dot{position:absolute;right:0;top:40px;width:min(30vw,340px);height:190px;z-index:-1}

.crumb{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
/* 長いページ名でも折り返さず1行に収め、はみ出たぶんは横に流して読む */
.crumb .wrap{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent 100%);
  mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent 100%)}
.crumb .wrap::-webkit-scrollbar{display:none}
.crumb ol{display:flex;flex-wrap:nowrap;gap:0 .8rem;align-items:center;
  font-size:12px;color:var(--muted);padding-block:14px;width:max-content;min-width:100%}
.crumb li{white-space:nowrap}
.crumb li[aria-current]{overflow:visible}
.crumb li+li::before{content:"／";margin-right:.8rem;color:var(--line)}
.crumb a:hover{color:var(--blue)}

/* --------------------------------------------------------------- 2カラム */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,88px);align-items:center}
.duo.wide-l{grid-template-columns:1.12fr .88fr}
.duo.wide-r{grid-template-columns:.88fr 1.12fr}
.duo__body > *+*{margin-top:26px}
.duo__body .btn{margin-top:38px}

/* 写真＋ドット地紋 */
.ph{position:relative}
.ph img{width:100%;height:auto;object-fit:cover}
.ph--dot::before{content:"";position:absolute;z-index:-1;
  background-image:radial-gradient(var(--dot) 1.1px,transparent 1.1px);background-size:9px 9px}
.ph--dot.tr::before{right:-34px;top:-34px;width:62%;height:64%}
.ph--dot.br::before{right:-34px;bottom:-34px;width:62%;height:64%}
.ph--dot.bl::before{left:-34px;bottom:-34px;width:62%;height:64%}
.ph.bleed-l{margin-left:calc(var(--gut) * -1)}
.ph.bleed-r{margin-right:calc(var(--gut) * -1)}

/* 汎用2カラム */
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.6vw,44px)}
@media (max-width:760px){.two{grid-template-columns:1fr}}

/* 絞り込みタブ・ページ送り */
.news-tabs{display:flex;flex-wrap:wrap;gap:10px}
.news-tabs button{display:inline-flex;align-items:center;justify-content:center;
  min-height:42px;padding-inline:20px;border:1px solid var(--line);
  font-size:13px;letter-spacing:.1em;line-height:1;color:var(--ink);
  transition:background .35s var(--e),color .35s var(--e),border-color .35s var(--e)}
.news-tabs button:hover{border-color:var(--blue);color:var(--blue)}
.news-tabs button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}

.pager{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:clamp(40px,5vw,64px)}
.pg{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
  border:1px solid var(--line);font-family:var(--en);font-size:13px;line-height:1;
  transition:background .35s var(--e),color .35s var(--e),border-color .35s var(--e)}
.pg:hover{border-color:var(--blue);color:var(--blue)}
.pg.current{background:var(--navy);border-color:var(--navy);color:#fff}
.pg.next::after{content:"";width:8px;height:8px;border-top:1px solid currentColor;
  border-right:1px solid currentColor;transform:rotate(45deg) translate(-2px,2px)}

/* 縦並びのお知らせ一覧 */
/* お知らせ：1列3行の縦リスト（PC・SP共通） */
.tag{display:inline-flex;align-items:center;justify-content:center;
  min-width:5.9em;height:23px;padding-inline:10px;
  border:1px solid var(--blue);color:var(--blue);
  font-size:11px;letter-spacing:.08em;line-height:1;white-space:nowrap}
.tag.solid{background:var(--navy);border-color:var(--navy);color:#fff}

.news-list{border-top:1px solid var(--line)}
.news-list li{border-bottom:1px solid var(--line)}
.news-list a{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:16px 22px;
  padding-block:24px;transition:padding-inline .4s var(--e)}
.news-list a:hover{padding-inline:10px;color:var(--blue)}
.news-list time{transition:transform .4s var(--e),color .35s var(--e)}
.news-list a:hover time{transform:translateX(3px)}
.news-list time{font-size:12.5px;color:var(--muted);white-space:nowrap}
.news-list a:hover time{color:var(--muted)}
/* 見出しタグで出すが、太さ・大きさは本文と同じにそろえる */
.news-list .t{font-size:15px;line-height:1.85;font-weight:400}

/* --------------------------------------------------------------- CTA箱   */
.cta-box{display:grid;grid-template-columns:1fr 92px;border:1px solid var(--navy);
  max-width:620px;margin-inline:auto;transition:background .45s var(--e)}
.cta-box .t{display:grid;place-items:center;padding:34px 20px;
  font-family:var(--min);font-weight:700;
  font-family:var(--en);font-size:clamp(17px,1.7vw,21px);letter-spacing:.14em;color:var(--navy)}
.cta-box .a{display:grid;place-items:center;border-left:1px solid var(--navy)}
.cta-box .a::after{content:"";width:30px;height:1px;background:var(--navy);position:relative;
  transition:width .4s var(--e)}
.cta-box:hover{background:var(--navy)}
.cta-box:hover .t{color:#fff}
.cta-box:hover .a{border-left-color:rgba(255,255,255,.4)}
.cta-box:hover .a::after{background:#fff}
.cta-box .a::after{transition:transform .5s var(--e),background .35s var(--e)}
.cta-box:hover .a::after{transform:translateX(7px)}
.cta-box .t{transition:color .35s var(--e),letter-spacing .5s var(--e)}
.cta-box:hover .t{letter-spacing:.22em}

/* --------------------------------------------------------------- 帯      */
.band{position:relative;overflow:hidden;color:#fff;padding-block:clamp(64px,8vw,116px);
  background:var(--navy)}
.band__bg{position:absolute;inset:0;opacity:.2}
.band__bg img{width:100%;height:100%;object-fit:cover}
.band .wrap{position:relative;z-index:1;text-align:center}
.band .num-tel{font-family:var(--en);font-size:clamp(25px,3vw,34px);letter-spacing:.06em;
  display:inline-block;margin-top:8px}

/* 写真の帯：画面の幅いっぱいの写真に濃紺の幕をかけ、短い言葉を重ねる */
.band--ph{padding-block:0;background:var(--navy-d);
  min-height:clamp(340px,40vw,540px);display:grid;align-items:center}
.band--ph .band__bg{opacity:1}
.band--ph .band__bg img{object-position:center 30%;filter:grayscale(.42) brightness(.6) contrast(1.06)}
.band--ph::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(4,32,63,.88) 0%,rgba(4,32,63,.7) 44%,rgba(4,32,63,.26) 100%)}
.band--ph .wrap{text-align:left;padding-block:clamp(70px,8vw,120px)}
.band--ph .band__in{max-width:34em}
.band__en{position:relative;font-family:var(--min);font-weight:700;
  font-size:12px;letter-spacing:.24em;color:rgba(255,255,255,.78);
  padding-bottom:14px}
.band__en::after{content:"";position:absolute;left:0;bottom:0;width:64px;height:1px;
  background:var(--accent);transform:scaleX(0);transform-origin:left;
  transition:transform .8s var(--e) .3s}
.in .band__en::after,.band__en.in::after{transform:scaleX(1)}
.band__copy{font-family:var(--min);font-weight:700;color:#fff;
  font-size:clamp(23px,3vw,38px);line-height:1.8;letter-spacing:.14em;margin-top:26px}
.band__note{margin-top:28px;line-height:2.05;color:rgba(255,255,255,.82);max-width:34em}

/* 写真は、帯が見えたところでゆっくり引く */
.band.rv{opacity:1;transform:none}
.band.rv .band__bg img{transform:scale(1.12);transition:transform 1.8s var(--e)}
.band.rv.in .band__bg img{transform:none}

/* --------------------------------------------- 濃紺の面（採寸：参考サイト）
   参考にしたのは、深さの違う濃紺を続けて敷き、あいだに全幅の写真をはさむ
   組み立て方。数値は 1425px 幅で採寸した値をこのサイトの比率に直しています。
   セクション上下 100〜150px／本文の幅 86.9%（狭い版 72.8%）／2段組 45.2%＋9.7%。 */
.sect--navy,.sect--dark{background:var(--navy-d);color:#fff;
  padding-block:clamp(74px,9.5vw,150px);margin-bottom:0;
  position:relative;isolation:isolate}
.sect--dark2{background:#0E2440}
.sect--navy .lbl,.sect--navy .slogan,
.sect--dark .lbl,.sect--dark .slogan{color:#fff}
.sect--navy .lead,.sect--navy .ku,.sect--navy .note,
.sect--dark .lead,.sect--dark .ku,.sect--dark .note{color:rgba(255,255,255,.8)}
.sect--navy .btn,.sect--dark .btn{border-color:var(--line-w);color:#fff}
.sect--navy .btn::before,.sect--dark .btn::before{background:#fff}
.sect--navy .btn:hover,.sect--dark .btn:hover{color:var(--navy);border-color:#fff}
.sect--navy .ph--dot::before,.sect--dark .ph--dot::before{
  background-image:radial-gradient(rgba(255,255,255,.3) 1.1px,transparent 1.1px)}

/* 右半分だけ色を変えた面（採寸：50%幅・セクション全高） */
.panel-r::before{content:"";position:absolute;inset:0 0 0 50%;z-index:-1;background:#102A46}

/* 狭い版の本文幅（採寸：72.8%） */
.wrap.narrow{width:72.8%;max-width:1080px}

/* 濃紺の面の中のお知らせ一覧 */
.sect--dark .news-list,.sect--navy .news-list{border-top-color:rgba(255,255,255,.22)}
.sect--dark .news-list li,.sect--navy .news-list li{border-bottom-color:rgba(255,255,255,.22)}
.sect--dark .news-list time,.sect--navy .news-list time{color:rgba(255,255,255,.66)}
.sect--dark .news-list .t,.sect--navy .news-list .t{color:#fff;font-size:16px}
.sect--dark .news-list a:hover,.sect--navy .news-list a:hover{color:#fff}
.sect--dark .news-list a:hover time,.sect--navy .news-list a:hover time{color:rgba(255,255,255,.66)}
/* 分類の札（採寸：12px／太字／高さ25px／左右15px／白65%） */
.sect--dark .tag,.sect--navy .tag{background:rgba(255,255,255,.65);border-color:transparent;
  color:var(--navy-d);font-size:12px;font-weight:700;height:25px;padding-inline:15px}

/* ------------------------------------- 大きな英字見出し＋日本語（採寸あり）
   英字56px・行送り0.8・日本語16px・間18px・下の余白50px（リード文が続く時25px）。 */
.ehead{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;margin-bottom:50px}
.ehead__en{font-family:var(--min);font-weight:700;color:var(--navy);
  font-size:clamp(33px,3.9vw,56px);line-height:.86;letter-spacing:.02em;
  font-feature-settings:normal;font-variant-ligatures:none}
.ehead__jp{font-family:var(--min);font-weight:700;font-size:16px;letter-spacing:.14em;color:var(--muted)}
.ehead__jp::before{content:"";display:inline-block;vertical-align:middle;
  width:22px;height:1px;margin-right:12px;background:var(--accent);
  transform:scaleX(0);transform-origin:left;transition:transform .7s var(--e) .25s}
.in .ehead__jp::before,.ehead.in .ehead__jp::before{transform:scaleX(1)}
.ehead.tight{margin-bottom:25px}
.sect--dark .ehead__en,.sect--navy .ehead__en{color:#fff}
.sect--dark .ehead__jp,.sect--navy .ehead__jp{color:rgba(255,255,255,.72)}
/* 見出しに続く一文（採寸：24px・行送り2.16・下余白55px） */
.elead{font-family:var(--min);font-weight:500;letter-spacing:.08em;
  font-size:clamp(16px,calc(11px + 1.1vw),24px);line-height:2.16;margin-bottom:55px}
.sect--dark .elead,.sect--navy .elead{color:#fff}

/* ------------------------------------------- 分野のカード列（採寸：間35px）
   写真の比率 1.63:1、見出し18px・行送り1.77。列は画面の右端まで流します。 */
.pcards{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(240px,27vw,360px);
  gap:35px;overflow-x:auto;scroll-snap-type:x proximity;
  margin-right:calc(50% - 50vw);padding-right:var(--gut);padding-bottom:6px;
  scrollbar-width:none;-ms-overflow-style:none}
.pcards::-webkit-scrollbar{display:none}
.pcard{scroll-snap-align:start;display:block;color:inherit}
.pcard__ph{display:block;position:relative;overflow:hidden;aspect-ratio:1.63/1;background:#EDF0F4}
.pcard__ph img{width:100%;height:100%;object-fit:cover;
  transition:transform 1.1s var(--e),opacity .6s var(--e)}
.pcard:hover .pcard__ph img{transform:scale(1.06)}
.pcard__t{display:block;margin-top:20px;font-family:var(--min);font-weight:700;
  font-size:18px;line-height:1.77;letter-spacing:.08em;color:var(--navy);
  transition:color .35s var(--e)}
.pcard:hover .pcard__t{color:var(--blue)}
.pcard__x{display:block;margin-top:12px;font-size:13px;line-height:1.95;color:var(--muted)}
/* 濃紺の面に置いたときは白で */
.sect--dark .pcard__t,.sect--navy .pcard__t{color:#fff}
.sect--dark .pcard:hover .pcard__t,.sect--navy .pcard:hover .pcard__t{color:#fff}
.sect--dark .pcard__x,.sect--navy .pcard__x{color:rgba(255,255,255,.66)}
.pcards.rv .pcard{opacity:0;transform:translateY(20px);
  transition:opacity .9s var(--e),transform .9s var(--e)}
.pcards.rv.in .pcard{opacity:1;transform:none}
.pcards.rv.in .pcard:nth-child(2){transition-delay:.1s}
.pcards.rv.in .pcard:nth-child(3){transition-delay:.2s}
.pcards.rv.in .pcard:nth-child(4){transition-delay:.3s}
.pcards.rv.in .pcard:nth-child(n+5){transition-delay:.4s}

/* --------------------------------------------------- 私たちの強み（2×2） */
.strs{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.4vw,34px)}
.str{position:relative;border:1px solid var(--line);border-top:2px solid var(--navy);
  padding:clamp(24px,2.6vw,36px) clamp(22px,2.4vw,34px)}
.str__t{font-family:var(--min);font-weight:700;
  font-size:17.5px;line-height:1.7;letter-spacing:.08em;color:var(--navy)}
.str__x{margin-top:14px;font-size:13.5px;line-height:1.95;color:var(--muted)}
.strs.rv .str{opacity:0;transform:translateY(18px);
  transition:opacity .9s var(--e),transform .9s var(--e)}
.strs.rv.in .str{opacity:1;transform:none}
.strs.rv.in .str:nth-child(2){transition-delay:.09s}
.strs.rv.in .str:nth-child(3){transition-delay:.18s}
.strs.rv.in .str:nth-child(n+4){transition-delay:.27s}

/* --------------------------------------------------------------- 対応業界 */
.inds{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 0;padding:0;list-style:none}
.inds li{display:inline-flex;align-items:center;min-height:38px;padding-inline:18px;
  border:1px solid var(--line);border-left:2px solid var(--navy);
  background:var(--sub);font-size:13.5px;letter-spacing:.08em;line-height:1.5}

/* ご相談の流れ：大見出しと本文を上でそろえる（2段組の中央ぞろえを外す） */
.flow-duo{align-items:start}

/* カード列は、つかんで動かせることが分かるようにする */
.pcards{cursor:grab;-webkit-overflow-scrolling:touch}
.pcards.grabbing{cursor:grabbing;scroll-snap-type:none;user-select:none}
.pcards.grabbing .pcard{pointer-events:none}
.pcards-ctl{display:flex;justify-content:flex-end;gap:10px;margin-bottom:20px}
.pcards-ctl[hidden]{display:none}
.pcards-ctl button{width:44px;height:44px;flex:none;padding:0;
  border:1px solid var(--line);background:transparent;color:var(--navy);
  display:grid;place-items:center;cursor:pointer;
  transition:background .35s var(--e),border-color .35s var(--e),color .35s var(--e),opacity .35s var(--e)}
.pcards-ctl button::before{content:"";width:11px;height:11px;
  border-top:1px solid currentColor;border-right:1px solid currentColor}
.pcards-ctl .pc-prev::before{transform:rotate(-135deg);margin-left:4px}
.pcards-ctl .pc-next::before{transform:rotate(45deg);margin-right:4px}
.pcards-ctl button:hover:not(:disabled){background:var(--navy);border-color:var(--navy);color:#fff}
.pcards-ctl button:disabled{opacity:.28;cursor:default}
.sect--dark .pcards-ctl button,.sect--navy .pcards-ctl button{border-color:var(--line-w);color:#fff}
.sect--dark .pcards-ctl button:hover:not(:disabled),
.sect--navy .pcards-ctl button:hover:not(:disabled){background:#fff;border-color:#fff;color:var(--navy)}

/* --------------------------------- 全幅の写真（採寸：高さ360px＝画面の25%） */
.strip{position:relative;width:100%;height:clamp(190px,25vw,360px);overflow:hidden}
.strip img{width:100%;height:100%;object-fit:cover;object-position:center 24%}
/* 白地の上に置いたときは、次のセクションとの間に余白を作る */
.strip + .sect{padding-top:var(--sec)}
.strip.rv{opacity:1;transform:none}
.strip.rv img{transform:scale(1.1);transition:transform 1.8s var(--e)}
.strip.rv.in img{transform:none}

/* --------------------------------------------------------------- 表      */
.tbl{border-top:1px solid var(--line)}
.tbl tr{border-bottom:1px solid var(--line)}
.tbl th,.tbl td{padding:22px 16px;text-align:left;vertical-align:top;line-height:2;
  line-break:strict;overflow-wrap:break-word}
.tbl th{width:14em;font-family:var(--min);font-weight:700;letter-spacing:.1em;
  color:var(--navy);white-space:nowrap}

/* --------------------------------------------------------------- 本文    */
.prose{line-height:2.2}
.prose > *+*{margin-top:24px}
/* 先頭の要素は、囲みの余白だけで足りるので上余白を付けない */
.prose > :first-child{margin-top:0}
.prose h2{font-family:var(--min);font-weight:700;font-size:clamp(19px,2.1vw,24px);
  line-height:1.7;letter-spacing:.12em;margin-top:64px;padding-bottom:14px;position:relative}
.prose h2::after{content:"";position:absolute;left:0;bottom:0;width:60px;height:1px;background:var(--accent)}
.prose h3{font-family:var(--min);font-size:17.5px;letter-spacing:.09em;line-height:1.8;
  font-weight:700;margin-top:44px}
.prose ul li{position:relative;padding-left:20px;margin-top:10px}
.prose ul li::before{content:"";position:absolute;left:0;top:calc(1em - 0px);width:8px;height:1px;
  background:var(--accent)}
.prose ol{counter-reset:n}
.prose ol li{position:relative;padding-left:32px;margin-top:10px;counter-increment:n}
.prose ol li::before{content:counter(n)"．";position:absolute;left:0;color:var(--blue);
  font-family:var(--en);font-size:13px}
.prose a{color:var(--blue);text-decoration:underline;text-underline-offset:.3em}
.prose figure{margin-block:36px}
.prose figcaption{margin-top:12px;font-size:13px;color:var(--muted);line-height:2}

/* --------------------------------------------------------------- form    */
.form{display:grid;gap:34px}
.field{display:grid;gap:12px}
.field > .lb{display:flex;align-items:center;gap:12px;font-size:15px;letter-spacing:.08em;font-weight:500}
.req{display:inline-flex;align-items:center;justify-content:center;height:21px;padding-inline:9px;
  background:var(--accent);color:#fff;font-size:11px;letter-spacing:.06em}
.opt{display:inline-flex;align-items:center;justify-content:center;height:21px;padding-inline:9px;
  background:var(--sub);color:var(--muted);font-size:11px;letter-spacing:.06em}
.field input[type=text],.field input[type=email],.field input[type=tel],
.field select,.field textarea{
  width:100%;background:var(--sub);border:1px solid transparent;
  padding:16px 18px;font-family:var(--go);font-size:15px;line-height:1.8;
  transition:background .3s var(--e),border-color .3s var(--e)}
.field textarea{min-height:200px;resize:vertical}
.field select{appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--navy) 50%),
                   linear-gradient(135deg,var(--navy) 50%,transparent 50%),
                   linear-gradient(var(--sub),var(--sub));
  background-position:calc(100% - 24px) 54%,calc(100% - 18px) 54%,0 0;
  background-size:6px 6px,6px 6px,100% 100%;background-repeat:no-repeat;padding-right:52px}
.field :is(input,select,textarea):focus{background:#fff;border-color:var(--blue);outline:0}
.field .help{font-size:13px;color:var(--muted);line-height:1.95}
.field .err{font-size:13px;color:#C0392B;line-height:1.95;display:none}
.field.invalid :is(input,select,textarea){border-color:#C0392B;background:#fff}
.field.invalid .err{display:block}
.check{display:flex;align-items:flex-start;gap:12px;justify-content:center;
  font-size:14px;line-height:2;cursor:pointer}
.check input{width:18px;height:18px;flex:none;margin-top:.45em;accent-color:var(--navy)}
.form__submit{display:flex;justify-content:center;margin-top:8px}

/* 完了ページ */
.done{text-align:center}
.done__mark{width:74px;height:74px;margin:0 auto 34px;border:1px solid var(--blue);
  border-radius:50%;display:grid;place-items:center}
.done__mark::after{content:"";width:22px;height:11px;border-left:1px solid var(--blue);
  border-bottom:1px solid var(--blue);transform:rotate(-45deg) translate(2px,-3px)}
.done__box{margin-top:48px;background:var(--sub);padding:clamp(26px,3.4vw,44px);text-align:left}
.done__box > *+*{margin-top:16px}

/* --------------------------------------------------------------- footer  */
#ft{background:var(--sub);padding-block:clamp(54px,7vw,88px) 0;text-align:center}
#ft .em{width:54px;height:33px;display:grid;place-items:center;margin:0 auto 20px;color:var(--navy)}
#ft .em::after{content:"";width:100%;height:100%;background:currentColor;
  -webkit-mask:var(--mark) no-repeat center/contain;mask:var(--mark) no-repeat center/contain}
/* 字間の最後の1つぶん右にずれるので、text-indent で打ち消して中央に置く */
#ft .wm{font-family:var(--min);font-size:26px;letter-spacing:.2em;color:var(--navy);font-weight:500;
  text-indent:.2em}
#ft .jp{margin-top:6px;font-family:var(--min);font-size:16px;letter-spacing:.2em;text-indent:.2em}
#ft .addr{margin-top:22px;font-size:13px;line-height:2.1;color:var(--muted)}
#ft .tels{margin-top:28px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
#ft .tels a{min-width:210px;min-height:46px;display:inline-flex;align-items:center;
  justify-content:center;border:1px solid var(--blue);color:var(--blue);
  font-family:var(--en);font-size:13px;letter-spacing:.1em;transition:background .35s,color .35s}
#ft .tels a:hover{background:var(--blue);color:#fff}
#ft .fnav{margin-top:40px;display:flex;flex-wrap:wrap;gap:12px 30px;justify-content:center}
#ft .fnav a{font-size:13px;letter-spacing:.06em}
#ft .fnav a:hover{color:var(--blue)}
#ft .cr{margin-top:38px;border-top:1px solid var(--line);padding-block:22px;
  font-family:var(--en);font-size:11px;letter-spacing:.06em;color:var(--muted)}

/* ------------------------------------------------------ 読み込み時の幕
   CSSのアニメーションだけで上へ抜けるので、JSが動かなくても画面は残りません。
   JSは、抜けたあとに要素を取り除くだけです。 */
.rl-curtain{position:fixed;inset:0;z-index:200;background:var(--navy);
  display:grid;place-items:center;pointer-events:none;
  animation:curtainUp .8s var(--e) .45s forwards}
@keyframes curtainUp{99%{visibility:visible}to{transform:translateY(-101%);visibility:hidden}}
.rl-curtain span{width:52px;height:32px;background:#fff;
  -webkit-mask:var(--mark) no-repeat center/contain;mask:var(--mark) no-repeat center/contain;
  opacity:0;transform:translateY(10px);
  animation:markIn .5s var(--e) .1s forwards,markOut .25s var(--e) .45s forwards}
@keyframes markIn{to{opacity:1;transform:none}}
@keyframes markOut{to{opacity:0}}

/* 写真のゆるやかな視差（JS が --py を入れる） */
.duo .ph img,.phead__dot{will-change:transform}
.duo .ph img{transform:translate3d(0,var(--py,0),0)}
.ph picture{display:contents}
.phead__dot{transform:translate3d(0,var(--py,0),0)}

/* ------------------------------------------ ページ内の目次（取扱分野） */
.pnav{position:sticky;top:0;z-index:60;background:#fff;
  border-bottom:1px solid var(--line);
  transition:box-shadow .45s var(--e),background .45s var(--e)}
/* 画面に貼り付いたら、わずかに影を落として本文から浮かせる */
.pnav.stuck{background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:saturate(180%) blur(10px);
  backdrop-filter:saturate(180%) blur(10px);
  box-shadow:0 14px 26px -22px rgba(7,48,97,.55)}

/* 上端：分野を読み進めた量を示す細い線 */
.pnav__prog{position:absolute;left:0;top:0;height:2px;width:100%;
  background:linear-gradient(90deg,var(--accent),#ffa477);
  transform:scaleX(0);transform-origin:left;
  transition:transform .25s linear}

.pnav .wrap{display:flex;align-items:stretch;gap:clamp(18px,2vw,34px);min-height:58px}

/* 左のラベル。英字の小見出しと同じ調子にそろえる */
.pnav__h{flex:none;align-self:center;position:relative;
  font-size:11px;letter-spacing:.18em;color:var(--muted);white-space:nowrap;
  padding-right:clamp(18px,2vw,34px)}
.pnav__h::after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:1px;height:14px;background:var(--line)}

/* 分野の数が多いと1行に収まらないため、はみ出したぶんは横に流して読ませる。
   端をぼかして「まだ先がある」ことを示す。 */
.pnav__list{position:relative;flex:1 1 auto;min-width:0;display:flex;align-items:stretch;
  overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent 100%);
  mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent 100%)}
.pnav__list::-webkit-scrollbar{display:none}
.pnav ul{display:flex;align-items:stretch;gap:clamp(16px,2vw,32px);
  margin:0;padding:0;list-style:none;min-width:0}
.pnav li{display:flex}
.pnav a{display:flex;align-items:center;position:relative;
  font-size:13.5px;letter-spacing:.06em;line-height:1.4;
  color:var(--muted);white-space:nowrap;
  transition:color .4s var(--e)}
.pnav a span{display:block;transition:transform .4s var(--e)}
.pnav a:hover{color:var(--navy)}
.pnav a:hover span{transform:translateY(-2px)}
.pnav a.on{color:var(--navy);font-weight:500}

/* 現在地の下線。項目から項目へ滑って移る */
.pnav__ind{position:absolute;left:0;bottom:-1px;height:2px;width:0;
  background:var(--accent);pointer-events:none;opacity:0;
  transform:translateX(0);
  transition:transform .5s var(--e),width .5s var(--e),opacity .3s var(--e)}
.pnav__ind.on{opacity:1}

/* 見出しが目次の下に隠れないように、飛び先に逃げを作る */
.fld{scroll-margin-top:104px}

/* --------------------------------------------------------------- reveal  */
/* 画面に入った要素に .in が付く（JS側で付与）。
   文字は下からすっと、写真はマスクが開きながら中の絵が寄る、という作り。 */
.rv{opacity:0;transform:translateY(26px);
  transition:opacity .95s var(--e),transform .95s var(--e)}
.rv.in{opacity:1;transform:none}

/* 写真：マスクが下から開き、中の絵がゆっくり引く。
   マスクは img に掛ける。.ph 自体を切り抜くと見えている面積がゼロになり、
   IntersectionObserver が「画面に入った」と判定できなくなるため。 */
.ph.rv{opacity:1;transform:none}
.ph.rv img{clip-path:inset(0 0 100% 0);
  transform:scale(1.14) translate3d(0,var(--py,0),0);
  transition:clip-path 1.15s var(--e),transform 1.6s var(--e)}
.ph.rv.in img{clip-path:inset(0 0 0 0);
  transform:scale(1) translate3d(0,var(--py,0),0)}
.ph.rv::before{opacity:0;transition:opacity .9s var(--e) .5s}
.ph.rv.in::before{opacity:1}

/* ラベル見出し：文字のあとにオレンジの線が伸びる */
.lbl::after{transform:scaleX(0);transform-origin:left;
  transition:transform .8s var(--e) .25s}
.in .lbl::after,.lbl.in::after{transform:scaleX(1)}
.lbl.center::after{transform:translateX(-50%) scaleX(0)}
.in .lbl.center::after,.lbl.center.in::after{transform:translateX(-50%) scaleX(1)}

/* 句点ごとの行を、順番に出す */
.ku.rv span{display:block;opacity:0;transform:translateY(14px);
  transition:opacity .8s var(--e),transform .8s var(--e)}
.ku.rv.in span{opacity:1;transform:none}
.ku.rv.in span:nth-child(2){transition-delay:.1s}
.ku.rv.in span:nth-child(3){transition-delay:.2s}
.ku.rv.in span:nth-child(4){transition-delay:.3s}
.ku.rv.in span:nth-child(n+5){transition-delay:.4s}

/* 大見出しは少し大きく動かす（.rv.in と同じ強さなので、in 側も書いておく） */
.slogan.rv{transform:translateY(34px)}
.slogan.rv.in{transform:none}

/* 英字見出し：オレンジの縦バーが伸びてから文字が出る */
.en-h.rv::before{transform:scaleY(0);transform-origin:top;
  transition:transform .6s var(--e)}
.en-h.rv.in::before{transform:scaleY(1)}

/* お知らせの行：上から順に */
.news-list.rv li,.rv .news-list li{opacity:0;transform:translateY(16px);
  transition:opacity .7s var(--e),transform .7s var(--e)}
.news-list.rv.in li,.rv.in .news-list li{opacity:1;transform:none}
.news-list.rv.in li:nth-child(2),.rv.in .news-list li:nth-child(2){transition-delay:.09s}
.news-list.rv.in li:nth-child(3),.rv.in .news-list li:nth-child(3){transition-delay:.18s}
.news-list.rv.in li:nth-child(4),.rv.in .news-list li:nth-child(4){transition-delay:.27s}
.news-list.rv.in li:nth-child(5),.rv.in .news-list li:nth-child(5){transition-delay:.36s}
.news-list.rv.in li:nth-child(n+6),.rv.in .news-list li:nth-child(n+6){transition-delay:.45s}

/* 表の行も順に */
.tbl.rv tr{opacity:0;transform:translateY(12px);
  transition:opacity .6s var(--e),transform .6s var(--e)}
.tbl.rv.in tr{opacity:1;transform:none}
.tbl.rv.in tr:nth-child(2){transition-delay:.06s}
.tbl.rv.in tr:nth-child(3){transition-delay:.12s}
.tbl.rv.in tr:nth-child(4){transition-delay:.18s}
.tbl.rv.in tr:nth-child(5){transition-delay:.24s}
.tbl.rv.in tr:nth-child(n+6){transition-delay:.3s}
.rv-1{transition-delay:.09s}.rv-2{transition-delay:.18s}.rv-3{transition-delay:.27s}
.rv-4{transition-delay:.36s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
  .rl-curtain{display:none}
  .ph.rv{clip-path:none}
  .ph.rv img,.duo .ph img,.phead__dot{transform:none}
  .kv-badge,.kv-slogan{clip-path:none;animation:none}
  .kv-badge .em,.kv-badge .wm,.kv-badge .jp,.kv-foot,.side-tag,.float-c{opacity:1;animation:none;transform:none}
  .ku.rv span{opacity:1;transform:none}
  .kv-slogan .row span,.kv-foot{opacity:1;transform:none}
  .hero__slides img.on{opacity:1}
}

/* --------------------------------------------------------------- resp    */
@media (max-width:1100px){
  :root{--gut:8%}
  .wrap,.wrap-n{width:84%}
  .menu__in{max-width:540px}
  .menu__nav{grid-template-columns:1fr;gap:clamp(18px,3vw,26px)}
  .menu__nav .sub{border-top:1px solid var(--rule-s);padding-top:10px}
}
@media (max-width:820px){
  :root{--rail:56px;--bar:56px;--sec:clamp(64px,9vw,120px)}

  /* 本文は画面幅いっぱいに使う。左右の余白は同じ値でそろえる。
     以前は固定レールを避けるために左右へ大きな余白を取っていたが、
     右側だけ余白が残って見えるため、レールを上部の帯に作り替えた。 */
  .wrap,.wrap-n{width:auto;max-width:none;margin-inline:0;padding-inline:7%}
  .wrap.narrow{width:auto;max-width:none}

  /* 濃紺の面まわり：半分だけ色を変える面は狭い画面では切らない */
  .panel-r::before{display:none}
  .ehead{gap:4px 14px;margin-bottom:34px}
  .ehead.tight{margin-bottom:22px}
  .ehead__jp{font-size:14px}
  /* 1行22文字などの長いリード文は、この幅では指定の改行位置に収まらず
     数文字だけが次の行に残ります。改行指定を外して自然に流します。 */
  .elead{margin-bottom:36px;line-height:2}
  .elead br{display:none}
  .pcards{gap:22px;padding-right:7%}
  .pcard__t{margin-top:16px;font-size:16.5px}
  .pcard__x{font-size:12.5px}
  .strs{grid-template-columns:1fr;gap:16px}
  .str{padding:22px 20px}
  .str__t{font-size:16.5px}
  .inds li{min-height:34px;padding-inline:14px;font-size:12.5px}

  /* 左右のレールを、白い帯の中の横並びに組み替える */
  .rail-l,.rail-r{height:var(--bar);width:auto;padding:0;
    flex-direction:row;align-items:center;gap:9px}
  .rail-l{left:0;padding-left:5%}
  .rail-r{right:0;padding-right:5%;gap:10px}
  .rail-l a{flex-direction:row;align-items:center;gap:9px;transform:none}
  .rail-l .wm{flex-direction:row;font-size:15px;letter-spacing:.06em;gap:.04em}
  .rail-l .wm i{height:auto;line-height:1}
  .rail-l .jp{display:block;font-family:var(--min);font-size:11px;
    letter-spacing:.08em;color:var(--navy);font-weight:500;line-height:1}
  .emblem{width:36px;height:22px}
  /* 帯の地。ロゴが出るタイミング（.on）に合わせて白くする */
  .rail-l::before{content:"";position:absolute;left:0;top:0;z-index:-1;
    width:100vw;height:var(--bar);background:#fff;
    border-bottom:1px solid var(--rule-s);pointer-events:auto;
    opacity:0;transition:opacity .4s var(--e)}
  .rail-l.on::before{opacity:1}
  .rail-r .lb{writing-mode:horizontal-tb;font-size:9px;letter-spacing:.14em}
  .burger{width:28px;height:14px}
  .burger span{width:28px}
  .burger span:nth-child(1){top:4px}
  .burger span:nth-child(2){top:11px}
  /* 目次は上の帯の下に貼り付け、項目は横に流して読む。
     端をぼかして「まだ先がある」ことを見せる。 */
  .pnav{top:var(--bar)}
  .pnav .wrap{gap:0;min-height:0;padding-inline:0}
  .pnav__h{display:none}
  .pnav__list{
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 26px),transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 26px),transparent 100%)}
  .pnav ul{gap:20px;padding-inline:6.5%}
  .pnav a{font-size:12.5px;padding-block:13px}
  .pnav__ind{bottom:0}
  .fld{scroll-margin-top:calc(var(--bar) + 50px)}

  /* 帯のぶんだけ本文を下げる（トップはキービジュアルを帯の下に敷く）。
     ページ上部の余白は、その帯のぶんを差し引いた値にする。 */
  body:not(.hero-top) main{padding-top:var(--bar)}
  .phead{padding-top:64px}
  .crumb ol{padding-inline:0}
  .duo,.duo.wide-l,.duo.wide-r{grid-template-columns:1fr}
  .duo .ph{order:-1}
  .ph.bleed-l,.ph.bleed-r{margin-inline:0}
  .tbl th{width:auto;white-space:normal;display:block;padding:20px 0 4px}
  .tbl td{display:block;padding:0 0 20px}
  .hero{height:min(70svh,540px)}
  .kv-slogan{right:calc(var(--rail) + 4%);padding:30px 22px 44px}
  /* 写真の帯：縦に短くし、幕は下ほど濃くして文字を読みやすくする */
  .band--ph{min-height:0}
  .band--ph::after{background:linear-gradient(180deg,rgba(4,32,63,.62) 0%,rgba(4,32,63,.86) 58%,rgba(4,32,63,.92) 100%)}
  .band--ph .wrap{padding-block:56px}
  .band--ph .band__bg img{object-position:center 38%}
}
@media (max-width:640px){
  /* スマートフォンでは、セクションの間と見出し回りの余白を詰める */
  :root{--sec:52px}
  .wrap,.wrap-n{padding-inline:6.5%}
  /* 長いラベル（例：注力分野｜M&A・デューデリジェンス）が画面の右端に
     貼り付いて見えないよう、文字と字間を少し詰める */
  .lbl{font-size:17px;letter-spacing:.08em;margin-bottom:28px;padding-bottom:12px}
  .phead{padding-top:46px;padding-bottom:24px}
  /* 字間のぶんだけ行が長くなるため、狭い画面では詰める */
  .phead h1{letter-spacing:.1em}
  .post-h1{letter-spacing:.08em}
  /* 箇条書きは、印の字下げと字間を少し詰めて1行に入る文字数を増やす */
  .prose ul li{padding-left:15px}
  .prose ol li{padding-left:26px}
  .prose li{letter-spacing:.02em}
  .prose h2{margin-top:44px}
  .prose h3{margin-top:32px}
  .duo__body .btn{margin-top:30px}
  .done__box{margin-top:34px}
  .phead .plbl{margin-bottom:18px;padding-bottom:10px}
  .cta-box .t{padding:26px 16px}
  #ft{padding-top:44px}
  .ph--dot.tr::before,.ph--dot.br::before{right:-12px}
  .ph--dot.tr::before{top:-12px}
  .ph--dot.br::before,.ph--dot.bl::before{bottom:-12px}
  .ph--dot.bl::before{left:-12px}
  .news-list a{display:flex;flex-wrap:wrap;align-items:center;gap:11px 14px}
  .news-list .t{width:100%}
  .kv-badge{width:78px;padding:22px 0 22px;gap:0}
  .kv-badge .em{width:42px;height:26px;margin-bottom:18px}
  .kv-badge .wm{font-size:16px;margin-bottom:6px}
  .kv-badge .jp{font-size:11px;letter-spacing:.3em;height:6.2em}
  .kv-slogan{top:auto;bottom:118px;right:5%;padding:24px 18px 30px}
  .kv-slogan .row{font-size:16px;letter-spacing:.3em}
  .kv-foot{padding:14px 20px 15px;gap:14px;width:100%;align-items:flex-start}
  .kv-foot .dots{margin-top:7px}
  /* 最新のお知らせはスマートフォンでは2行（1行目に種類と日付、2行目に見出し） */
  .kv-news{flex-wrap:wrap;gap:6px 12px;max-width:none;flex:1 1 auto;
    padding-right:34px;position:relative}
  .kv-news__m{gap:10px}
  .kv-news__m time{font-size:11.5px}
  .kv-news__t{width:100%;white-space:normal;font-size:13px;line-height:1.55;
    display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;
    overflow:hidden;text-overflow:ellipsis}
  .kv-news .ar{position:absolute;right:0;top:50%;width:24px}
  .kv-news .tag{font-size:10.5px;padding:2px 8px}
  .side-tag{display:none}
  .btn{width:100%;min-width:0}
  .cta-box{grid-template-columns:1fr 68px}
  #ft .tels a{width:100%}
  .float-c{animation:riseIn .8s var(--e) 1.5s backwards;opacity:0;width:46px;height:46px;right:14px;bottom:14px}
}

/* --------------------------------------------------------- 行末の処理 */
/* text-wrap:pretty は、最後の行に1〜2文字だけ残る折り返しを
   ブラウザ側で避けてくれる指定です（対応していない環境では無視されます）。
   日本語では word-break:auto-phrase と組み合わせることで、
   文節の切れ目で折り返しつつ、行末の泣き別れも減らせます。 */
.ku,.lead,.elead,.pcard__x,.str__x,.tbl td,.prose p,.prose li,
.news-list .t,.band__note,#ft .addr,.menu__foot .ad,.note{
  text-wrap:pretty}

/* 同意文は「プライバシーポリシー」と「に同意のうえ送信します」の
   2つのまとまりで折り返し、語の途中で切れないようにする */
.check span{text-wrap:pretty}
.check span a{display:inline-block}
