/* ══════════════════════════════════════════════════════════════════════════════
   株式会社Remind — OKI（www.oki.com/global/ja/）の規則を移植した 1 枚
   ────────────────────────────────────────────────────────────────────────────
   組み立て: 移植済みの 8 部品（ヘッダーとナビ / ヒーロー / 共通部品 / ニュース一覧 /
   事業領域 / About の固定面 / 数字 / フッター）を、この順に 1 本へ畳んだもの。
   加えて t-and-i（2 列の節）だけは OKI の #technologies-and-innovation の規則を
   ここで直接移植して足した（部品として渡されていなかったため）。

   畳むときにしたこと（これ以外は部品の原文のまま）:
     1. :root を 1 つにまとめた（各部品が持っていた同じ宣言を 1 か所へ）
     2. 同じセレクタの重複を潰した。残した側は必ず 1 つ:
        .t-container / .desktop-only / .mobile-only / .image-rounded / .icon-base /
        .deco-dot / .text-shoulder / .heading-hgroup 一式 / .button-base 一式 /
        [data-underline-anime-*] / [data-image-scale-anime-*] / .t-label-*
     3. prefers-reduced-motion は各部品から外し、最後に 1 つへ集約した
     4. 12px 未満になる字に max(12px, …) の床を敷いた（式そのものは触っていない）
   色は OKI の赤 2 本を青へ（--color-oki-red #003678 / --color-oki-red2 #001f45）。
   規則側は色を直書きしていないので、変えたのは :root の 2 行だけ。
   ══════════════════════════════════════════════════════════════════════════════ */


/* ── §1 :root（8 部品の :root の和集合。値は各部品のものと同じ）───────────── */
:root{
  /* 流体の寸法。素は SP（390 基準）で、1024px から PC（1440 基準）へ切り替わる */
  --scrollbar-width: 15px;              /* script.js が実測して書き戻す */
  --effective-viewport-width: 100vw;
  --column-size: 24;
  --screen-size: 390;
  --column-unit: calc( 100 / var(--column-size) * (var(--effective-viewport-width) - var(--scrollbar-width)) * .01 );
  --u: calc( (var(--effective-viewport-width) - var(--scrollbar-width)) / var(--screen-size) );
  --font-size: 16;
  --header-size: 56px;
  --layer-drawer: 10;
  --notification-size: 1;

  /* 色（OKI の変数名のまま、赤 2 本だけ値を青に差し替え） */
  --color-oki-black: #0d0d0d;
  --color-oki-black2: #282828;
  --color-oki-white: #fbfbfb;
  --color-oki-gray: #909090;
  --color-oki-gray3: #ededed;
  --color-oki-gray5: #e6e6e6;
  --color-oki-line-gray: #e6e6e6;
  --color-oki-bg-gray-dark-0-8: rgba(237, 237, 237, .8);
  --color-oki-red:  #003678;   /* OKI: #ff0000 */
  --color-oki-red2: #001f45;   /* OKI: #e90000 */

  /* 曲線と長さ（OKI の実値） */
  --easing-0: cubic-bezier(.26, .06, 0, 1);
  --easing-1: cubic-bezier(.18, .06, .23, 1);
  --easing-2: cubic-bezier(.36, .04, .23, 1);
  --easing-3: cubic-bezier(.43, .05, .17, 1);
  --easing-5: cubic-bezier(.55, .05, .22, .99);
  --duration-300: .3s;
  --duration-500: .5s;
  --duration-800: .8s;
  --duration-1200: 1.2s;


  /* ── ここから下は parts2 の 13 部品の :root の和集合（値は各部品のまま）── */
  /* ── gateway ── */
    --tw-translate-x: 0;
    --tw-translate-y: 0;
    --tw-rotate: 0;
    --tw-skew-x: 0;
    --tw-skew-y: 0;
    --tw-scale-x: 1;
    --tw-scale-y: 1;
    --tw-content: "";

  /* ── strength ── */
    /* 色 */
    --strength-general-white: #fff;
    --strength-smoke-5:  #f2f5f9;   /* 箱の地・帯の下端 */
    --strength-smoke-60: #7e90a3;
    --strength-smoke-80: #233447;
    --strength-bakuraku-20: #cfe3ff;              /* 4 枚目の光 */
    --strength-color-text-inverse: var(--strength-general-white);
    --strength-color-text-primary: var(--strength-smoke-80);
    /* ↓ 参照元は #013572 / #0053b1（帯）と #01358a / #2d81ec（番号チップ）。
         停止位置と角度は原文のまま、色だけ Remind の青に差し替えた */
    --strength-bg-top-1: var(--color-oki-red2);   /* bakuraku: #013572 */
    --strength-bg-top-2: var(--color-oki-red);    /* bakuraku: #0053b1 */
    --strength-chip-1:   var(--color-oki-red2);   /* bakuraku: #01358a */
    --strength-chip-2:   var(--color-oki-red);    /* bakuraku: #2d81ec */

    /* 書体 */
    --strength-font-family-jp: "Noto Sans JP";
    --strength-font-family-en: "Figtree";   /* bakuraku: "Montserrat" */
    --strength-font-weight-r: 400;
    --strength-font-weight-m: 500;
    --strength-font-weight-b: 600;
    --strength-font-weight-xb: 700;
    --strength-font-size-2s: 12px;
    --strength-font-size-xs: 14px;
    --strength-font-size-sm: 16px;
    --strength-font-size-md: 18px;
    --strength-font-size-lg: 20px;
    --strength-font-size-xl: 24px;
    --strength-font-size-2xl: 28px;
    --strength-font-size-4l: 56px;
    --strength-letter-spacing-sm: 0%;
    --strength-letter-spacing-md: .02em;
    --strength-letter-spacing-lg: .05em;
    --strength-line-height-sm: 125%;
    --strength-line-height-md: 150%;
    --strength-line-height-lg: 175%;

    /* 寸法 */
    --strength-radius_md: 8px;
    --strength-spacing_2xs: 4px;
    --strength-spacing_xs: 8px;
    --strength-spacing_sm: 12px;
    --strength-spacing_md: 16px;
    --strength-spacing_lg: 24px;
    --strength-spacing_xl: 32px;
    --strength-spacing_2xl: 40px;
    --strength-spacing_3xl: 56px;
    --strength-spacing_4xl: 64px;
    --strength-inner-main-pc: 1130px;
    --strength-gutter-sp: 24px;

  /* ── flow ── */
    /* 参照元 jp.sansan.com は html{font-size:62.5%} を敷いており 1rem = 10px。
       この 1 枚は 16px 基準なので、参照元の rem をこの単位に読み替える。 */
    --flow-rem: .625rem;

  /* ── result ── */
    --result-ground:     #d5e2f0;  /* 参照元 #EFE94D … 節の地（青を薄めた地） */
    --result-ink:        #0d0d0d;  /* 参照元 #000    … 罫と文字（= --color-oki-black） */
    --result-accent:     #fbfbfb;  /* 参照元 #EFE9DE … 見出しの下敷き（= --color-oki-white） */
    --result-fill:       #fbfbfb;  /* 参照元 #EFE9DE … 太い帯の中（= --color-oki-white） */
    --result-fill-line:  #003678;  /* 参照元 #aaa449 … 太い帯の縁（= --color-oki-red） */
    --result-previous:   #5b83b5;  /* 参照元 #c2bc54 … 細い帯（残り） */

  /* ── articles ── */
    /* 参照元の曲線と長さ。既存の --easing-* はどれも ease-in-out 寄りで
       この強い ease-out に当たるものが無いため、新しく足した */
    --articles-easing: cubic-bezier(.25, 1, .5, 1);   /* 実測 */
    --articles-duration: .4s;                          /* 実測 400ms */
    --articles-ring-duration: .16s;                    /* 実測 矢印の輪 */
    --articles-bar-duration: .2s;                      /* 実測 進み具合の棒 */

    /* 寸法（素は SP。設計幅 390 で下の N px になる） */
    --articles-pad: calc(var(--column-unit) * 1);      /* .t-container と同じ左右 */
    --articles-gap: calc(30 * var(--u));               /* 実測 30 */
    --articles-card: calc(var(--column-unit) * 22);    /* SP は器いっぱい＝1 枚見せ */
    --articles-arrow: calc(60 * var(--u));             /* 実測 SP 60 */
    --articles-progress: calc(215 * var(--u));         /* 実測 215（SP では出さない） */
    --articles-nav-gap: calc(20 * var(--u));           /* 実測 SP 20 */
    --articles-radius: calc(6 * var(--u));             /* 実測 6 */
    --articles-inset: calc(30 * var(--u));             /* 札の内側 実測 30 */
    --articles-inset-x: calc(20 * var(--u));           /* 札の内側 左右 実測 SP 20 */
    --articles-title: calc(15 * var(--u));             /* 実測 SP 15 */

  /* ── message ── */
    /* 参照元の 1rem（＝10px）。数字を原文のまま書くための物差し。§冒頭 1 参照 */
    --message-rem: .625rem;
    /* 色トークン（中身だけ差し替え。規則側は色を直書きしていない） */
    --message-bg:   var(--color-oki-red2,  #001f45);  /* persol: #97999B */
    --message-fg:   var(--color-oki-white, #fbfbfb);  /* persol: #ffffff */
    --message-rule: var(--color-oki-gray5, #e6e6e6);  /* persol: #d9d9d6 */

  /* ── recruit ── */
    --recruit-easing-3: cubic-bezier(.47, .16, .24, 1);
    --recruit-duration-700: .7s;
    --recruit-dot-tile: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='50' height='60'%3E%3Crect width='50' height='60' fill='%23001f45'/%3E%3Cg fill='%2308274d'%3E%3Crect x='0' y='13' width='2' height='2'/%3E%3Crect x='0' y='28' width='2' height='2'/%3E%3Crect x='0' y='43' width='2' height='2'/%3E%3Crect x='0' y='58' width='2' height='2'/%3E%3Crect x='25' y='13' width='2' height='2'/%3E%3Crect x='25' y='28' width='2' height='2'/%3E%3Crect x='25' y='43' width='2' height='2'/%3E%3Crect x='25' y='58' width='2' height='2'/%3E%3C/g%3E%3C/svg%3E");

  /* ── faq ── */
    /* 100vw を単位無しの数にする細工。参照元の式そのまま */
    --faq-100vw: 100vw;
    --faq-window-width: tan(atan2(var(--faq-100vw), 1px));
    --faq-px:  calc(1px  * max(1440, var(--faq-window-width)) / 1440);
    --faq-rem: calc(10px * max(1440, var(--faq-window-width)) / 1440);  /* 参照元は 1rem（＝実測 10px）*/

    /* 色（規則側は触らず、トークンの中身だけ当ページの色へ）*/
    --faq-color-text-black: var(--color-oki-black);   /* 参照元 #1f1e1b */
    --faq-color-text-white: var(--color-oki-white);   /* 参照元 #fff     */
    --faq-color-ui-path:    var(--color-oki-black2);  /* 参照元 #4e4c49  枠線 */
    --faq-color-gray:       #cfcfcf;                  /* 参照元 #cdcbc8  Q/A の札の枠 */
    --faq-color-accent:     var(--color-oki-red);     /* 参照元 #00c4cc  ホバーの輪と印 */
    --faq-color-mark:       #dbe6f4;                  /* 参照元 #d4f4f5  文中リンクの敷き色 */

    --faq-ff-number: system-ui, sans-serif;           /* 参照元 neue-haas-grotesk-display */

    /* 寸法・字・時間（係数はすべて参照元のまま）*/
    --faq-offset:  clamp(20 * var(--faq-px), 1.878vw + 12.958 * var(--faq-px), 40 * var(--faq-px));
    --faq-gap:     clamp(19 * var(--faq-px), 1.972vw + 11.605 * var(--faq-px), 40 * var(--faq-px));
    --faq-radius:  calc(10 * var(--faq-px));
    --faq-fz-lv4:    clamp(1.8 * var(--faq-rem), .188vw + 1.7295 * var(--faq-rem), 2 * var(--faq-rem));
    --faq-fz-small:  calc(1.4 * var(--faq-rem));
    --faq-fz-xsmall: calc(1.2 * var(--faq-rem));
    --faq-lh-h4: 1.8em;
    --faq-space-02-rem:    calc(4 * var(--faq-rem));
    --faq-space-03-rem:    calc(2 * var(--faq-rem));
    --faq-space-02-03-rem: clamp(2 * var(--faq-rem), 1.878vw + 1.2958 * var(--faq-rem), 4 * var(--faq-rem));
    --faq-transition-duration: .6s;
    --faq-transition-timing-function: cubic-bezier(.23, 1, .32, 1);

  /* ── company ── */
    /* 参照元 kubell の :root の値そのまま。名前だけ --company- を付けた。
       ここに無いもの（本文色・書体・行送りの土台）は、この 1 枚の既存の値を使う。 */
    --company-color-grey06: #dddddd;   /* 行を区切る 1px の罫。kubell: --color-grey06 */
    --company-color-grey08: #f3f3f3;   /* 見出し列の地 / ボタンの地。kubell: --color-grey08 */
    --company-fontSize-caption: .875rem;   /* = 14px。dd とボタンの字 */
    --company-lineHeight-tight: 1.6;       /* dd の行送り */
    --company-lineHeight-headline: 1.3;    /* dt の行送り */
    --company-border-radius: 6px;          /* ボタンの角 */

    /* 罫と地だけ土台のトークン（--color-oki-line-gray #e6e6e6 / --color-oki-gray3 #ededed）に
       寄せなかった理由: その 2 つは差が 7/255 しかなく、**1px の罫が見出し列の地に
       溶けて消える**（この部品は「1px の罫で行を区切る作り」そのものなので、
       消えたら部品が成立しない）。参照元の #DDDDDD / #F3F3F3 は差が 22/255 ある。
       色トークンの「中身」だけを持ってきた形。 */

  /* ── contactband ── */
    /* 参照元 @media(max-width:1400px) .contact-banner-text{margin-bottom:30px}
       ＝ この帯が縦に積むときの空き。2 本のボタンの間にも同じ値を使う */
    --contactband-stack-gap: 30px;

  /* ── herobar ── */
    /* 参照元の値。既存の土台に同じものがあるならそちらを使う:
       cubic-bezier(.26,.06,0,1) は既存の --easing-0 と完全に同じ値だったので
       下では var(--easing-0) と書いている。.5s も既存の --duration-500 と同値。 */
    --herobar-duration-600: .6s;                              /* layerx: transition: opacity .6s */
    --herobar-duration-1000: 1s;                              /* layerx JS: to(..., {duration: 1}) */
    --herobar-ease-power3-inout: cubic-bezier(.77, 0, .175, 1); /* GSAP "Power3.easeInOut" の CSS 近似 */

    /* 面の色 4 本。参照元は #dee1e7 / #8dbbff / #4111ff / #534dff（灰と紫青）。
       指定の青 2 本 #003678(--color-oki-red) と #001f45(--color-oki-red2) を結ぶ線の上に
       4 段を取り直した。ロゴの青から外れない。 */
    --herobar-color-1: #002552;   /* red2 と red の 25% 混色 */
    --herobar-color-2: #003678;   /* = --color-oki-red */
    --herobar-color-3: #002d64;   /* red2 と red の 60% 混色 */
    --herobar-color-4: #001f45;   /* = --color-oki-red2 */

  /* ── megamenu ── */
    /* 参照元 www.recruit.co.jp は html に --custom-rem を敷いており、PC では 1440 分の 10。
       この 1 枚の土台の式で書くと同じ値になる（--screen-size は PC で 1440）。 */
    --custom-rem: calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    /* 参照元の影の色 rgba(14,51,108,.06|.12) を、この 1 枚の紺 #001f45 に読み替えたもの */
    --megamenu-shadow-1: rgba(0, 31, 69, .06);
    --megamenu-shadow-2: rgba(0, 31, 69, .12);

  /* ── stickycta ── */
    --lx-sticky-opacity: .85;
    --lx-sticky-height: 0px;
}
@media (min-width: 1024px){
  :root{
    --screen-size: 1440; --column-size: 48;
  /* ── articles（PC）── */
    --articles-pad: calc(var(--column-unit) * 2);
    --articles-gap: calc(30 * var(--u));             /* 実測 30 */
    --articles-card: calc(367 * var(--u));           /* 実測 367 */
    --articles-arrow: calc(80 * var(--u));           /* 実測 80 */
    --articles-nav-gap: calc(30 * var(--u));         /* 実測 30 */
    --articles-inset-x: calc(30 * var(--u));         /* 実測 PC は 30px 四方 */
    --articles-title: calc(16 * var(--u));           /* 実測 PC 16 */
  }
}


/* ── §2 素の下ごしらえ ────────────────────────────────────────────────────
   OKI は全体リセット（preflight 相当）を前提に書いてある。ここはその最小限。
   overflow-x は clip（hidden にするとフッターの position:sticky が死ぬ）。 */
/* ★ 2026-09-10、**OKI 原文のリセットを写し切っていなかった**ので直した。
   OKI 実測（CDP の getMatchedStylesForNode）:
       *, ::before, ::after { box-sizing:border-box; margin:0; padding:0 }
       img, picture, video, canvas, svg { display:block; max-width:100% }
   こちらは box-sizing の 1 行しか写していなかった。
   **この style.css の中身は OKI の規則そのものなので、OKI が前提にしている
   「margin も padding も 0 から始まる」が無いと、ブラウザ既定の余白が全部乗る。**

   目に見えていた例（オーナー報告 2026-09-10）:
     ハンバーガー `.button-menu`（44×44）の中の svg が 28×28 になり、
     viewBox 0 0 44 44 の中の 8 単位の棒が **5.1px** に潰れて、
     紺の四角に白い点が 1 つあるだけに見えていた。
     内訳は Chrome の button 既定の padding 6px×2 と border 2px×2 で 44−12−4=28。
     OKI 本家は 38.5×38.5 / 棒 7.0px。 */
*,::before,::after{ box-sizing:border-box; margin:0; padding:0 }
img,picture,video,canvas,svg{ display:block; max-width:100% }
html{ scrollbar-gutter:stable }
body{
  margin:0; overflow-x:clip;
  background:#fff; color:var(--color-oki-black);
  font-family:"Noto Sans JP","Figtree",system-ui,sans-serif;
  font-size:16px; line-height:1.4;
  word-break:auto-phrase;
  -webkit-font-smoothing:antialiased;
}
img{ display:block; max-width:100% }
a{ color:inherit; text-decoration:none }
ul,ol{ margin:0; padding:0; list-style:none }
p,h1,h2,h3,figure,hgroup{ margin:0 }
button{ font:inherit }
:focus-visible{ outline:2px solid var(--color-oki-red); outline-offset:2px }

/* OKI の書体クラス。Saans / MFW-YuGo は使えないので Noto Sans JP を後ろに足した
   （太さの数値は OKI のまま） */
html[lang=ja] .ja-font-medium{ font-family:Saans-medium,MFW-YuGoPr6N-Demi,"Noto Sans JP",system-ui,sans-serif; font-weight:600 }
html[lang=ja] .ja-font-semi-bold{ font-family:Saans-semi-bold,MFW-YuGoPr6N-Bold,"Noto Sans JP",system-ui,sans-serif; font-weight:700 }
html[lang=ja] .ja-font-bold{ font-family:Saans-bold,MFW-YuGoStdN-ExtraBold,"Noto Sans JP",system-ui,sans-serif; font-weight:800 }

/* 器と出し分け（出典: oki/style.css の .t-container / .desktop-only / .mobile-only）。
   8 部品のうち 3 つが同じ宣言を持っていたので、ここ 1 つに畳んだ */
.t-container{ padding-right:calc(var(--column-unit) * 1); padding-left:calc(var(--column-unit) * 1) }
@media (min-width: 1024px){
  .t-container{ padding-right:calc(var(--column-unit) * 2); padding-left:calc(var(--column-unit) * 2) }
}
@media (max-width: 1023.98px){ .desktop-only{ display:none !important } }
@media (min-width: 1024px){ .mobile-only{ display:none !important } }


/* ══════════════════════════════════════════════════════════════════════════════
   §3 共通部品 — 見出し / ボタン / 下線 / 写真の拡大 / アイコンの押し出し
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   共通部品（見出し・ボタン・下線・写真拡大・アイコン押し出し）
   OKI（www.oki.com/global/ja/）の style.css から規則をそのまま移植したもの。
   値は 1 つも書き起こしていない。出典は各ブロックの先頭に書いた。

   移植にあたって触ったのは次の 3 つだけ:
     1. 色      … :root の --color-oki-red / -red2 の「値」を青に差し替えた（規則側は無改造）
     2. 中身    … 文言・写真は Remind のもの
     3. セレクタ… OKI の `:where([data-component-id=…])` は特異度 0 の scope 指定なので外した
                   （この属性を我々の HTML に持たない以上、残すと 1 つも当たらない）
   余白・大きさ・時間・曲線・入れ子は変えていない。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 1. 見出し hgroup ────────────────────────────────────────────────
   出典: oki/style.css → rules/heading-hgroup.css を grep して復元
         `.heading-hgroup:where([data-component-id="2rtQJv"])` 系 12 規則
   既定は左。`-align-right` で題だけが右半分（24 カラム分）へ寄り、
   さらに上へ 10px 食い込む（＝肩ラベルと題の頭がそろう）。 */
.heading-hgroup{
  --pseudo-elements-size: calc(var(--column-unit) * 4.7);
  display:flex; flex-direction:column;
}
.heading-hgroup .heading-hgroup__title{
  margin-top:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  color:var(--color-oki-black);
  font-style:normal; font-weight:790;
  font-size:calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:100%; letter-spacing:-.02em;
}
@media (min-width: 1024px){
  .heading-hgroup .heading-hgroup__title{
    margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    font-size:calc(52 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
html[lang=ja] .heading-hgroup .heading-hgroup__title{
  font-size:calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:140%;
  letter-spacing:calc(.72 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  html[lang=ja] .heading-hgroup .heading-hgroup__title{
    font-size:calc(42 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    letter-spacing:calc(1.26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
  .heading-hgroup.-align-right .heading-hgroup__title{
    margin-top:calc(-10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    margin-left:auto;
    width:calc(var(--column-unit) * 24);
  }
}
/* OKI の `-clip-top` / `-clip-bottom`（題の 1 行目・最終行を欧文用に float で削る）は移していない。
   OKI 自身が `html[lang=ja]` で `content:none` にして殺しているため、日本語だけの当サイトでは死に規則。
   同じ ::before を島津の棒に使うので、残すと衝突だけが残る。 */

/* ── 2. 肩ラベル（OKI の「点＋欧文」を捨てて他社の判断に差し替えた 2 か所）──
   置き換え A（SmartHR）: 10px / 700 / 字間 .5px を全幅 1px 罫の左端に貼る。
                          ラベル自身は下に余白を持たない（罫がラベルの下端）。
   置き換え B（島津）    : 題の左上に 40×4px の棒を ::before で置く。
   ※ クラス名は OKI のまま（.text-shoulder / .heading-hgroup__title）。
   ※ 罫の色は OKI の --color-oki-line-gray をそのまま使う。 */

.heading-hgroup .heading-hgroup__title::before{
  content:"";
  display:block;
  width:40px; height:4px;
  background:var(--color-oki-red);
}

/* ── 3. ボタン ────────────────────────────────────────────────────────
   出典: oki/rules/button-base.css `.button-base:where([data-component-id="2jzdct"])` 系 全 24 規則
   高さ 48（16+16+16px 行）・角丸 5px・13px/800。
   ホバーで ラベルが .9d・右の矢印が .8d 進んで消え、左から矢印が生える。
   移動量 d は JS が測って --distance に書く（parts/common.js）。
   ※ --distance の既定値 0px だけ足した。JS が走らないと transform 全体が
     invalid になり、本来見えない左矢印が出てしまうため（M-033: 可視性を JS に預けない）。 */
.button-base{
  --button-base-color-text: var(--color-oki-white);
  --button-base-color-bg: var(--color-oki-red2);
  --distance: 0px;
  display:inline-flex; align-items:center;
  border-radius:calc(5 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  background-color:var(--button-base-color-bg);
  padding:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))
          calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  color:var(--button-base-color-text);
  line-height:100%;
  font-feature-settings:"palt" on,"pkna" on,"vkrn" on;
}
@media (min-width: 1024px){
  .button-base{
    padding-top:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-right:calc(23 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-bottom:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-left:calc(21 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
  .button-base.-size-lg{
    padding-top:calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-right:calc(35 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-bottom:calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-left:calc(35 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.button-base .icon-base{
  width:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  height:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.button-base .buttonBase__icon--right,
.button-base .buttonBase__icon--left{ flex-shrink:0 }
.button-base .buttonBase__icon--right{
  padding-left:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.button-base .buttonBase__icon--left{
  padding-right:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .button-base .buttonBase__icon--right{
    padding-left:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
  .button-base .buttonBase__icon--left{
    padding-right:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.button-base .button-base__label,
.button-base .buttonBase__icon--left,
.button-base .buttonBase__icon--right{ transition:transform .5s ease 0s }
.button-base .buttonBase__icon--left{
  position:absolute;
  transform:translate3d(calc(var(--distance) * -.8),0,0) scale(.001);
}
.button-base .button-base__label{ transform:translateZ(0) }
.button-base .buttonBase__icon--right{ transform:translateZ(0) }
@media (any-hover: hover){
  .button-base:hover .buttonBase__icon--left{ transform:scale(1) }
  .button-base:hover .button-base__label{ transform:translate3d(calc(var(--distance) * .9),0,0) scale(1) }
  .button-base:hover .buttonBase__icon--right{ transform:translate3d(calc(var(--distance) * .8),0,0) scale(.001) }
}
.button-base.-reverse{ flex-direction:row-reverse }
.button-base.-reverse .buttonBase__icon--right{
  padding-right:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  padding-left:calc(0 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.button-base.-reverse .buttonBase__icon--left{
  padding-right:calc(0 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  padding-left:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .button-base.-reverse .buttonBase__icon--right{
    padding-right:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-left:calc(0 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
  .button-base.-reverse .buttonBase__icon--left{
    padding-right:calc(0 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-left:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
/* ボタンのラベル字（出典: oki/style.css `.t-label-md`）。
   OKI のボタンは class="button-base -size-md t-label-md" の組で使う。
   これが無いと 16px/400 の地の字のまま出てしまう。 */
.t-label-md{
  font-weight:790;
  font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:1.2; letter-spacing:0em;
}
@media (min-width: 1024px){
  .t-label-md{ font-size:calc(13 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
.button-base[disabled], a.button-base:not([href]){
  opacity:.2; pointer-events:none;
  --button-base-color-bg: var(--color-oki-gray);
}

/* ── 4. 下線の 2 本立て ────────────────────────────────────────────────
   出典: oki/style.css `[data-underline-anime-root]` / `[data-underline-anime-target]` 8 規則
   ::before（薄い方）が右へ縮み、::after（濃い方）が .2s 遅れて左から伸びる。
   ホバー中の `.hover` クラスは JS が付ける（OKI と同じ）。
   `.hover` 無しの素の :hover でも ::after だけは動く＝JS が走らなくても下線は出る。 */
[data-underline-anime-root]{ position:relative }
[data-underline-anime-target]{ position:absolute; inset:auto 0 0; margin:auto }
[data-underline-anime-target]:before,
[data-underline-anime-target]:after{
  position:absolute; top:0; left:0;
  transition:transform var(--duration-300) var(--easing-5), opacity var(--duration-300) var(--easing-1);
  width:100%; height:1px; content:"";
}
[data-underline-anime-target]:before{
  transform:scaleX(1); transform-origin:right;
  transition-delay:.01s;
  background-color:var(--color-oki-gray5);
}
[data-underline-anime-target]:after{
  transform:scaleX(.5); transform-origin:left;
  opacity:0;
  background-color:var(--color-oki-gray);
}
@media (any-hover: hover){
  [data-underline-anime-root]:hover [data-underline-anime-target]:after{
    transform:scaleX(1); opacity:1; transition-delay:.01s;
  }
}
.hover[data-underline-anime-root] [data-underline-anime-target]:before{
  transform:scaleX(0) translateZ(0); transition-delay:0s;
}
.hover[data-underline-anime-root] [data-underline-anime-target]:after{
  transform:scaleX(1); transition-delay:.2s;
}

/* ── 5. 写真（角丸の器と 1.08 倍の拡大）──────────────────────────────
   出典: oki/rules/image-roundedscale.css
         `[data-image-scale-anime-target]` 3 規則 ＋ `.image-rounded:where([data-component-id=axvJSB])` 4 規則 */
[data-image-scale-anime-target]{
  --image-scale-size: 1.08;
  scale:1; transition:scale var(--duration-800) ease;
}
[data-image-scale-anime-target] img{
  scale:1; transition:scale var(--duration-800) var(--easing-1);
}
/* ここだけ OKI と形が違う: OKI はこの 1 本を素の :hover で書いている（33 件中これだけ）。
   指で触る機械では触れた瞬間に拡大が焼き付くので、社の決め事どおり any-hover で囲った。
   値は 1 つも変えていない。 */
@media (any-hover: hover){
  [data-image-scale-anime-root]:hover [data-image-scale-anime-target] img{
    scale:var(--image-scale-size);
  }
}
.image-rounded{
  position:relative;
  border-radius:calc(var(--image-rounded-size, 10) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  aspect-ratio:var(--image-rounded-aspect-ratio, 1/1);
  overflow:hidden;
}
.image-rounded.-has-image-border{ border:1px solid var(--color-oki-gray5) }
.image-rounded img{
  position:absolute; inset:0; margin:auto;
  width:100%; height:100%;
  -o-object-fit:cover; object-fit:cover;
}
.image-rounded[data-use-image-size=true]{ aspect-ratio:auto }
.image-rounded[data-use-image-size=true] img{
  position:relative; width:100%; height:auto;
  -o-object-fit:fill; object-fit:fill;
}

/* ── 6. アイコンの押し出し（grid 1 マスに 2 枚重ねる）──────────────────
   出典: oki/style.css `[data-push-icon-root]` 15 規則（right / down / left の 3 向き）
   器の大きさ・色は OKI の `.item-icon`（block-gateway-secondary 系）から。 */
[data-push-icon-root] :where([data-push-icon-target]){ display:grid; flex-shrink:0; overflow:hidden }
[data-push-icon-root] :where(.icon-base){ grid-row:-1/1; grid-column:-1/1 }
[data-push-icon-root] :where([data-push-icon-target=right]) .icon-base:first-child{ translate:-100% 0; opacity:0 }
[data-push-icon-root] :where([data-push-icon-target=right]) .icon-base:last-child{ translate:0 0; opacity:1 }
[data-push-icon-root] :where([data-push-icon-target=down]) :where(.icon-base):first-child{ translate:0 -100%; opacity:0 }
[data-push-icon-root] :where([data-push-icon-target=down]) :where(.icon-base):last-child{ translate:0 0; opacity:1 }
[data-push-icon-root] :where([data-push-icon-target=left]) .icon-base:first-child{ translate:100% 0; opacity:0 }
[data-push-icon-root] :where([data-push-icon-target=left]) .icon-base:last-child{ translate:0 0; opacity:1 }
@media (any-hover: hover){
  [data-push-icon-root] :where(.icon-base){
    transition-duration:var(--duration-800);
    transition-property:translate,opacity;
    transition-timing-function:var(--easing-2),var(--easing-0);
  }
  [data-push-icon-root]:hover :where([data-push-icon-target=right]) .icon-base:first-child{ translate:0 0; opacity:1 }
  [data-push-icon-root]:hover :where([data-push-icon-target=right]) .icon-base:last-child{ translate:100% 0; opacity:0 }
  [data-push-icon-root]:hover :where([data-push-icon-target=down]) .icon-base:first-child{ translate:0 0; opacity:1 }
  [data-push-icon-root]:hover :where([data-push-icon-target=down]) .icon-base:last-child{ translate:0 100%; opacity:0 }
  [data-push-icon-root]:hover :where([data-push-icon-target=left]) .icon-base:first-child{ translate:0 0; opacity:1 }
  [data-push-icon-root]:hover :where([data-push-icon-target=left]) .icon-base:last-child{ translate:-100% 0; opacity:0 }
}
/* 器（出典: oki/style.css `.block-gateway-secondary … .item-icon`） */
.item-icon{
  width:calc(17 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  height:calc(17 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  color:var(--color-oki-red);
}
/* 器の中でアイコンを一杯に開く（出典: oki/style.css `.arrow-slide-in__icon{width:100%;height:100%}`）。
   .icon-base の既定 1.125lh は周りの行送り次第で器からはみ出す（実測 16.8px の器に 25.2px）。 */
.item-icon .icon-base{ width:100%; height:100% }
/* アイコン共通（出典: oki/style.css `.icon-base:where([data-component-id="7fa3jg"])`） */
.icon-base{ width:1.125lh; height:1.125lh }
.icon-base path{ fill:currentColor }

/* ── 7. 動きを減らす設定（OKI は 0 件。ここは真似しない）────────────── */

/* ── 8. 受け皿（下線・押し出し・写真拡大を載せる行。別部品からの最小限）──
   出典: oki/rules/list-news-thumbnail.css / oki/style.css `.t-text-news-title`
   一覧はカードでなく 1px 罫の行。影も角丸も持たせない。 */


/* ── 肩ラベル（.text-shoulder）────────────────────────────────────────────
   8 部品のうち 2 つ（共通部品・ニュース一覧）が別の値で持っていたので 1 つに畳んだ。
   採ったのは OKI の実値（12px → 1024px 以上で 14px・670）＋ SmartHR の判断
   （全幅 1px 罫の左端に貼る／ラベル自身は下に余白を持たない）。
   共通部品が持っていた 10px 版は落とした ── 12px 未満の字を作らない、を優先。
   出典: oki/rules/heading-hgroup.css の .text-shoulder / oki/style.css */
.text-shoulder{
  display:flex; align-items:center; width:100%;
  border-bottom:1px solid var(--color-oki-line-gray);
  padding-bottom:0; margin-bottom:0;
  color:currentColor;
  font-style:normal; font-weight:670; line-height:100%; letter-spacing:-.01em;
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  -moz-column-gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  column-gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .text-shoulder{
    font-size:max(12px, calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
    -moz-column-gap:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    column-gap:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}

/* ── 点（.deco-dot）───────────────────────────────────────────────────────
   4 部品（ニュース・事業領域・About・フッター）が同じものを持っていたので 1 つに。
   出典: oki/style.css `.deco-dot:where([data-component-id=g6iuKk])` 4 規則 */
.deco-dot{
  display:block; flex-shrink:0;
  width:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  height:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  border-radius:calc(1 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  background:var(--color-oki-red);
  box-shadow:0 4px 40px #0000001f;
}
.deco-dot[data-size=lg]{
  width:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  height:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .deco-dot{ border-radius:calc(2 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
  .deco-dot[data-size=lg]{
    width:calc(8 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    height:calc(8 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}

/* ── 小見出しと本文（.heading-base / .paragraph-base）──────────────────────
   t-and-i と About が使う。About は自分の寸法で上書きするので、ここは既定（md）だけ。
   出典: oki/style.css `.heading-base:where([data-component-id=qpc7C6])` /
         `:where([data-component-id="1qnSej"])` */
.heading-base{
  --font-size-md: calc(28 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  --font-size-md-desktop: calc(52 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  --font-size-ja-md: calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  --font-size-ja-md-desktop: calc(42 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  position:relative; color:var(--color-oki-black);
  font-style:normal; font-weight:790; font-size:var(--font-size-md);
  line-height:110%; letter-spacing:-.02em;
}
@media (min-width: 1024px){ .heading-base{ font-size:var(--font-size-md-desktop) } }
html[lang=ja] .heading-base{ letter-spacing:calc(1.08 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  html[lang=ja] .heading-base{ letter-spacing:calc(1.68 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
.heading-base[data-size=md]{ font-size:var(--font-size-md) }
@media (min-width: 1024px){ .heading-base[data-size=md]{ font-size:var(--font-size-md-desktop) } }
html[lang=ja] .heading-base[data-size=md]{
  font-size:var(--font-size-ja-md);
  font-family:Saans-bold,MFW-YuGoStdN-ExtraBold,"Noto Sans JP",system-ui,sans-serif;
  line-height:140%;
  letter-spacing:calc(.72 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  html[lang=ja] .heading-base[data-size=md]{
    font-size:var(--font-size-ja-md-desktop); font-weight:800;
    letter-spacing:calc(1.26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.heading-base .deco-dot{ position:absolute }
.heading-base[data-size=md] .deco-dot{ top:.2lh; left:calc(var(--column-unit) * -1) }
@media (max-width: 1023.98px){
  .heading-base[data-size=md] .deco-dot{
    width:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    height:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.paragraph-base{
  font-style:normal; font-weight:570;
  font-size:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:140%; letter-spacing:-.01em;
}
@media (min-width: 1024px){
  .paragraph-base{ font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
html[lang=ja] .paragraph-base{
  font-size:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:160%; letter-spacing:.45px; font-weight:570;
}
@media (min-width: 1024px){
  html[lang=ja] .paragraph-base{ font-size:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}

/* ── 段組みの器（出典: oki/style.css `.grid-cols-1` / `.desktop\:grid-cols-2`）── */
.grid-cols-1{
  display:grid; grid-template-columns:repeat(1,minmax(0,1fr));
  -moz-column-gap:calc(var(--column-unit) * 1); column-gap:calc(var(--column-unit) * 1);
  row-gap:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.desktop\:grid-cols-2{ row-gap:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  .desktop\:grid-cols-2{
    display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
    -moz-column-gap:calc(var(--column-unit) * 1); column-gap:calc(var(--column-unit) * 1);
  }
}


/* ══════════════════════════════════════════════════════════════════════════════
   §4 ヘッダーとナビ
   ══════════════════════════════════════════════════════════════════════════════ */


.header{ --logo-symbol-fill: var(--color-oki-red); --logo-type-fill: var(--color-oki-black); transition-duration:var(--duration-500); transition-property:top; transition-timing-function:var(--easing-2) }
.header .t-container{ display:flex; justify-content:space-between; align-items:center; padding-top:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(56 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  .header .t-container{ padding-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:auto }
}
.header .action{ display:flex; -moz-column-gap:calc(2 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); column-gap:calc(2 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); align-items:center; padding-right:calc(46 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.header .button-contact{ display:flex; align-items:center; padding-right:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-left:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.header .button-language{ display:flex; justify-content:center; align-items:center; width:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.header .button-language{ -webkit-backdrop-filter:blur(15px); backdrop-filter:blur(15px); transition:background-color .15s linear; border-radius:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--button-language-background); color:var(--button-language-text) }
.header .button-contact, .header .button-language{ display:none }
@media (min-width: 1024px){
  .header .button-contact, .header .button-language{ display:flex }
}
@media (any-hover: hover){
  .header .button-language:hover{ background-color:var(--color-oki-red2) }
}
.header .logo{ transition-duration:var(--duration-500); transition-property:opacity,translate; transition-timing-function:var(--easing-0),var(--easing-2); width:calc(158 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  .header .logo{ width:calc(204 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
.header [data-action-item=hidden] .logo{ translate:calc(-10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) 0; opacity:0 }
.header [data-action-item=shown] .logo{ translate:0 0; opacity:1 }
.header .logo{ object-fit:contain; object-position:left center }
.header-static{ position:absolute; top:0; right:0; left:0; z-index:calc(var(--layer-drawer) - 1) }
body:has([data-header-style=skeleton]) .header-static{ --logo-symbol-fill: var(--color-oki-white); --logo-type-fill: var(--color-oki-white) }
body:has([data-header-style=skeleton]) .header-static .button-language{ --button-language-background: rgba(251, 251, 251, .1); --button-language-text: var(--color-oki-white); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px) }
body:not(:has([data-header-style=skeleton])) .header-static .button-language{ --button-language-background: var(--color-oki-bg-gray-dark-0-8); --button-language-text: var(--color-oki-black); --button-blur-color-text: var(--color-oki-black); --button-blur-color-bg: var(--color-oki-bg-gray-dark-0-8); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px) }
body:not(:has([data-header-style=skeleton])) .header-static .button-contact{ --button-language-background: var(--color-oki-bg-gray-dark-0-8); --button-language-text: var(--color-oki-black); --button-blur-color-text: var(--color-oki-black); --button-blur-color-bg: var(--color-oki-bg-gray-dark-0-8); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px) }
@media (any-hover: hover){
  body:not(:has([data-header-style=skeleton])) .header-static .button-language:hover{ --button-language-text: var(--color-oki-white); --button-blur-color-text: var(--color-oki-white) }
  body:not(:has([data-header-style=skeleton])) .header-static .button-contact:hover{ --button-language-text: var(--color-oki-white); --button-blur-color-text: var(--color-oki-white) }
}
body:not(:has(.notification-base)) .header{ top:calc((6 + 42 * var(--notification-size)) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  body:not(:has(.notification-base)) .header{ top:calc((4 + 28 * var(--notification-size)) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
.header-navigation-desktop{ --header-navigation-desktop-blur: 4px; --header-navigation-desktop-background: var(--color-oki-bg-gray-dark-0-8); --header-navigation-desktop-text: var(--color-oki-black); --track-in: 0; display:none; position:relative; -webkit-backdrop-filter:blur(var(--header-navigation-desktop-blur)); backdrop-filter:blur(var(--header-navigation-desktop-blur)); border-radius:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--header-navigation-desktop-background) }
@media (min-width: 1024px){
  .header-navigation-desktop{ display:block }
}
body:has([data-header-style=skeleton]) .header-navigation-desktop[data-header-type=static]{ --header-navigation-desktop-background: rgba(251, 251, 251, .1); --header-navigation-desktop-text: var(--color-oki-white); --header-navigation-desktop-blur: 15px }
.header-navigation-desktop .label{ display:flex; transition:color var(--duration-300); padding:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); color:var(--header-navigation-desktop-text); font-weight:670; font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100% }
html[lang=ja] :is(.header-navigation-desktop .label){ letter-spacing:-.01em }
.header-navigation-desktop .label[aria-current=page]{ color:var(--color-oki-white) }
.header-navigation-desktop .list{ display:flex; isolation:isolate; padding:calc(3 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (any-hover: hover){
  .header-navigation-desktop .list:hover .label{ color:var(--header-navigation-desktop-text) }
  .header-navigation-desktop .list:hover .label:hover{ color:var(--color-oki-white) }
}
.header-navigation-desktop .track{ position:absolute; inset:0; padding-top:calc(3 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-bottom:calc(3 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); pointer-events:none }
.header-navigation-desktop .track-item{ display:grid; position:relative; right:0; align-content:center; justify-content:center; place-content:center; transform:translate(var(--track-item-x, var(--initial-track-item-x))); transition-duration:var(--track-item-duration, var(--duration-300)); transition-property:transform; width:1px; height:100% }
.header-navigation-desktop .track-item-inner{ opacity:var(--track-in); transition-duration:var(--duration-300); transition-property:opacity,transform,width; border-radius:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--color-oki-red2); width:var(--track-item-width, var(--initial-track-item-width)); height:calc(38 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.button-blur{ --button-blur-font-size: 12; --button-blur-color-text: var(--color-oki-white); --button-blur-color-bg: var(--color-oki-red); display:inline-flex; -moz-column-gap:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); column-gap:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); border-radius:calc(5 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--button-blur-color-bg); padding:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); color:var(--button-blur-color-text); font-style:normal; font-weight:790; font-size:calc(var(--button-blur-font-size) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100%; font-feature-settings:"palt" on,"pkna" on,"vkrn" on }
@media (min-width: 1024px){
  .button-blur{ --button-blur-font-size: 13; -moz-column-gap:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); column-gap:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
.button-blur{ transition:background-color .15s linear; --button-blur-color-bg: rgba(255, 255, 255, .1); -webkit-backdrop-filter:blur(15px); backdrop-filter:blur(15px) }
@media (any-hover: hover){
  .button-blur:hover{ background-color:var(--color-oki-red2) }
}
html[lang=ja] .button-blur{ letter-spacing:-.01em }
.button-menu{ position:fixed; top:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); right:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); z-index:calc(var(--layer-drawer) + 1); transition-duration:var(--duration-500); transition-property:top; transition-timing-function:var(--easing-2); border-radius:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--color-oki-red); width:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); color:var(--color-oki-white) }
@media (min-width: 1024px){
  .button-menu{ top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); right:calc(var(--column-unit) * 2); width:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
  .button-menu{ display:none }
}
@media (any-hover: hover){
  .button-menu{ transition-duration:var(--duration-500),var(--duration-300); transition-property:top,background-color; transition-timing-function:var(--easing-2),var(--easing-0) }
  .button-menu:hover{ background-color:var(--color-oki-red2) }
}
.button-menu .icon-open, .button-menu .icon-close{ transform-origin:center; transition:transform .3s }
.button-menu[aria-expanded=false] .icon-open{ transform:scaleX(1) }
.button-menu[aria-expanded=false] .icon-close{ transform:scaleX(0) }
.button-menu[aria-expanded=true] .icon-open{ transform:scaleX(0) }
.button-menu[aria-expanded=true] .icon-close{ transform:scaleX(1) }
body:not(:has(.notification-base)) .button-menu{ top:calc((22 + 42 * var(--notification-size)) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  body:not(:has(.notification-base)) .button-menu{ top:calc((34 + 28 * var(--notification-size)) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
body:not(:has(.notification-base)) .button-menu[aria-expanded=true]{ top:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width: 1024px){
  body:not(:has(.notification-base)) .button-menu[aria-expanded=true]{ top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
@media (min-width: 1024px){
  .menu-mobile-wrapper{ display:none!important }
  .menu-mobile{ display:none!important }
}
.menu-mobile{ position:fixed; z-index:var(--layer-drawer); inset:0; background-color:#0d0d0d33 }
.menu-mobile .primary{ padding-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.menu-mobile .secondary{ padding-top:calc(43 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-bottom:calc(33 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
.menu-mobile .link-home{ display:block; border-bottom:1px solid rgba(230,230,230,.4) }
.menu-mobile .menu-body{ display:flex; position:absolute; flex-direction:column; top:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); right:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); bottom:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); left:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); left:calc(49 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); transition-duration:var(--duration-500); transition-property:padding-top; transition-timing-function:var(--easing-2); padding:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) 0 0 }
.menu-mobile .background{ position:absolute; top:0; right:0; z-index:-1; border-radius:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--color-oki-white); width:100%; height:100% }
.menu-mobile .scroll-container{ flex-grow:1; padding:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(32 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:100% }
.menu-mobile .label-link{ display:block; padding:calc(7 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) 0; font-style:normal; font-weight:570; font-size:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:110%; letter-spacing:-.01em }
.menu-mobile .label-primary{ display:block; padding-top:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-bottom:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); font-style:normal; font-weight:790; font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100%; letter-spacing:-.01em }
html[lang=ja] :is(.menu-mobile .label-primary){ font-family:"Noto Sans JP",system-ui,sans-serif; font-weight:790 }
.menu-mobile{ --start-size: 90%; --delay-step: 40ms; transition:background-color var(--duration-800) }
.menu-mobile [data-delay-target]{ transition-duration:var(--duration-500); transition-property:opacity,transform; transition-timing-function:var(--easing-2) }
.menu-mobile .background{ transition-duration:var(--duration-500); transition-property:width,height,opacity; transition-timing-function:var(--easing-2),var(--easing-2),var(--easing-0) }
.menu-mobile.transition-enter [data-delay-target]{ transition-delay:calc(var(--index) * var(--delay-step) + var(--delay-step) * .25) }
.menu-mobile.transition-enter-start{ background-color:#0d0d0d00 }
.menu-mobile.transition-enter-start [data-delay-target]{ transform:translate(calc(var(--column-unit) * 1)); opacity:0 }
.menu-mobile.transition-enter-start .background{ opacity:0; width:var(--start-size); height:var(--start-size) }
.menu-mobile.transition-enter-end{ background-color:#0d0d0d33 }
.menu-mobile.transition-enter-end [data-delay-target]{ transform:translate(0); opacity:1 }
.menu-mobile.transition-enter-end .background{ opacity:1; width:100%; height:100% }
.menu-mobile.transition-leave .background{ transition-delay:var(--delay-step) }
.menu-mobile.transition-leave-start{ background-color:#0d0d0d33 }
.menu-mobile.transition-leave-start [data-delay-target]{ opacity:1 }
.menu-mobile.transition-leave-start .background{ opacity:1; width:100%; height:100% }
.menu-mobile.transition-leave-end{ background-color:#0d0d0d00 }
.menu-mobile.transition-leave-end [data-delay-target]{ transform:translate(calc(var(--column-unit) * 1)); opacity:0 }
.menu-mobile.transition-leave-end .background{ opacity:0; width:var(--start-size); height:var(--start-size) }



/* ══════════════════════════════════════════════════════════════════════════════
   §5 ヒーロー
   ══════════════════════════════════════════════════════════════════════════════ */
.hero-home:where([data-component-id=yraC5j]) .button-scroll,.button-player:where([data-component-id=t25sua]){-webkit-appearance:none;appearance:none;margin:0;padding:0;background:none;border:0;color:inherit;font:inherit;cursor:pointer}

.hero-home:where([data-component-id=yraC5j]){--progress-background-opacity: 0;--progress-1: 0;--progress-2: 0;--progress-copy-opacity: 0;--progress-copy-translate: 1;--background-width: calc(var(--column-unit) * 7);--background-height: calc(350 / 828 * 100vh);margin-top:-1px;background-color:var(--color-oki-black)}
@media (min-width: 460px) and (max-width: 725px){
.hero-home:where([data-component-id=yraC5j]){--background-height: calc(400 / 828 * 100vh)}
}
@media (min-width: 725px) and (max-width: 1023px){
.hero-home:where([data-component-id=yraC5j]){--background-height: calc(450 / 828 * 100vh)}
}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]){--background-width: calc(var(--column-unit) * 8);--background-width: calc(230 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));--background-height: 60vh}
}
html[lang=ja] .hero-home:where([data-component-id=yraC5j]){--background-width: calc(var(--column-unit) * 6);--background-height: 50vh}
@media (min-width: 460px) and (max-width: 725px){
html[lang=ja] .hero-home:where([data-component-id=yraC5j]){--background-height: calc(450 / 828 * 100vh)}
}
@media (min-width: 725px) and (max-width: 1023px){
html[lang=ja] .hero-home:where([data-component-id=yraC5j]){--background-height: calc(450 / 828 * 100vh)}
}
@media (min-width: 1024px){
html[lang=ja] .hero-home:where([data-component-id=yraC5j]){--background-width: calc(var(--column-unit) * 8);--background-width: calc(230 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));--background-height: calc(605 / 900 * 100vh)}
}
.hero-home:where([data-component-id=yraC5j]) .body{display:grid;height:100svh}
.hero-home:where([data-component-id=yraC5j]) .media,.hero-home:where([data-component-id=yraC5j]) .content{grid-row:-1/1;grid-column:-1/1}
.hero-home:where([data-component-id=yraC5j]) .media-wrapper{position:absolute;opacity:.8;inset:0;width:100%;height:100%;overflow:hidden}
.hero-home:where([data-component-id=yraC5j]) .media{transform-origin:bottom;translate:0 calc(var(--progress-scroll, 0) * 50vh);scale:calc(1 + var(--progress-scroll, 0) * .1);width:100%;height:100%;-o-object-fit:cover;object-fit:cover}
.hero-home:where([data-component-id=yraC5j]) .content{display:grid;grid-template-rows:100%;grid-template-columns:auto;align-items:end;isolation:isolate;padding-right:calc(var(--column-unit) * 1);padding-bottom:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-left:calc(var(--column-unit) * 1);color:var(--color-oki-white)}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]) .content{padding-right:calc(var(--column-unit) * 2);padding-bottom:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-left:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.hero-home:where([data-component-id=yraC5j]) .copies,.hero-home:where([data-component-id=yraC5j]) .actions{grid-row:-1/1;grid-column:-1/1}
.hero-home:where([data-component-id=yraC5j]) .copies{display:flex;position:relative;align-items:end;align-self:stretch}
.hero-home:where([data-component-id=yraC5j]) .copy{position:relative;padding-bottom:calc((var(--background-height) - (calc(56 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 4)) / 2);padding-left:calc(28 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));color:var(--color-oki-white);font-weight:790;font-size:calc(56 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1;letter-spacing:-.01em}
@media (min-width: 600px) and (max-width: 1023px){
.hero-home:where([data-component-id=yraC5j]) .copy{padding-bottom:calc((var(--background-height) - (calc(45 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 3.5)) / 2);font-size:calc(45 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]) .copy{padding-bottom:calc((var(--background-height) - (calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 6)) / 2);padding-left:calc(100 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));font-size:calc(90 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
html[lang=ja] :is(.hero-home:where([data-component-id=yraC5j]) .copy){padding-bottom:calc((var(--background-height) - (calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 1.4 * 3)) / 2);padding-left:calc(var(--column-unit) * 2);font-style:normal;font-weight:800;font-size:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:140%;font-family:Saans-bold,MFW-YuGoStdN-ExtraBold,"Noto Sans JP",system-ui,sans-serif;font-feature-settings:"palt" on,"pkna" on,"vkrn" on;letter-spacing:2.1px}
@media (min-width: 600px) and (max-width: 1023px){
html[lang=ja] :is(.hero-home:where([data-component-id=yraC5j]) .copy){padding-bottom:calc((var(--background-height) - (calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 1.4 * 3)) / 2);padding-left:calc(var(--column-unit) * 2.5);font-size:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
@media (min-width: 1024px){
html[lang=ja] :is(.hero-home:where([data-component-id=yraC5j]) .copy){padding-bottom:calc((var(--background-height) - (calc(62 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * 1.4 * 3)) / 2);padding-left:calc(140 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));font-size:calc(62 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.hero-home:where([data-component-id=yraC5j]) .copy .copy-inner{padding-left:.05em;overflow:hidden}
.hero-home:where([data-component-id=yraC5j]) .copy span{display:block;transform:translate(calc(var(--progress-copy-translate) * -50%));opacity:var(--progress-copy-opacity);transition-delay:calc(var(--index) * 75ms);transition-duration:var(--duration-800);transition-property:opacity,transform;transition-timing-function:var(--easing-2)}
.hero-home:where([data-component-id=yraC5j]) .background-copy{position:absolute;bottom:0;left:0;opacity:var(--progress-background-opacity);transition-duration:var(--duration-500),var(--duration-1200);transition-property:height,width;transition-timing-function:cubic-bezier(.8,0,.7,.8),cubic-bezier(.5,0,0,1);border-radius:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));background-color:var(--color-oki-red);width:calc(var(--background-width) * var(--progress-2) + (1 - var(--progress-2)) * calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));height:calc(var(--background-height) * var(--progress-1) + (1 - var(--progress-1)) * calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))))}
.hero-home:where([data-component-id=yraC5j]) .actions{display:flex;-moz-column-gap:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));column-gap:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));align-items:center;justify-self:end;isolation:isolate}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]) .actions{-moz-column-gap:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));column-gap:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-bottom:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.hero-home:where([data-component-id=yraC5j]) .button-scroll{display:flex;-moz-column-gap:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));column-gap:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));align-items:center;height:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));font-style:normal;font-weight:670;font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:100%}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]) .button-scroll{-moz-column-gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));column-gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.hero-home:where([data-component-id=yraC5j]) .button-scroll .icon-base{transform:rotate(-90deg);width:calc(11 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(11 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));color:var(--color-oki-red);font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width: 1024px){
.hero-home:where([data-component-id=yraC5j]) .button-scroll .icon-base{width:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.hero-home:where([data-component-id=yraC5j]) [data-action-items]{transform:translateY(calc(var(--column-unit) * 1));opacity:0}
.hero-home:where([data-component-id=yraC5j]) [data-action-items=shown]{transform:translateY(0);opacity:1;transition-delay:calc(var(--index) * 75ms);transition-duration:var(--duration-800);transition-property:opacity,transform;transition-timing-function:var(--easing-2)}

.button-player:where([data-component-id=t25sua]){--button-base-color-bg: transparent;--button-base-color-text: var(--color-oki-white);--button-base-color-border: rgba(255, 255, 255, .3);display:inline-flex;justify-content:center;align-items:center;transition-duration:var(--duration-300);transition-property:background-color,color,border-color;transition-timing-function:var(--easing-0);border:1px solid var(--button-base-color-border);border-radius:calc(5 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));background-color:var(--button-base-color-bg);width:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));color:var(--button-base-color-text);line-height:100%}
@media (min-width: 1024px){
.button-player:where([data-component-id=t25sua]){width:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
@media (any-hover: hover){
.button-player:where([data-component-id=t25sua]):hover{--button-base-color-border: rgba(255, 255, 255, .7)}
}
.icon-player:where([data-component-id=x5zbvg]){aspect-ratio:1;width:100%;height:100%}
.icon-player:where([data-component-id=x5zbvg]) g{transform-origin:center;transition-duration:var(--duration-300);transition-property:transform,opacity;transition-timing-function:var(--easing-2),var(--easing-0)}
.icon-player[data-state=play]:where([data-component-id=x5zbvg]) [data-icon-type=pause]{transform:translate(calc(-15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))) rotate(30deg);opacity:0}
.icon-player[data-state=pause]:where([data-component-id=x5zbvg]) [data-icon-type=play]{transform:translate(calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))) rotate(30deg);opacity:0}

.hero-home:where([data-component-id=yraC5j]) .media-frame{position:absolute;border:0;pointer-events:none;width:max(100%, 177.7778svh);height:max(100%, 56.25vw);left:calc(50% - max(100%, 177.7778svh) / 2);top:calc(50% - max(100%, 56.25vw) / 2)}

html:not(.has-js) .hero-home:where([data-component-id=yraC5j]){--progress-background-opacity: 1;--progress-1: 1;--progress-2: 1;--progress-copy-opacity: 1;--progress-copy-translate: 0}
html:not(.has-js) .hero-home:where([data-component-id=yraC5j]) [data-action-items]{transform:none;opacity:1}

/* ══════════════════════════════════════════════════════════════════════════════
   §6 ニュース一覧
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   ニュース一覧 — OKI「OKI’s News」の移植
   出どころ: oki/style.css の #okis-news / .list-news-thumbnail / .image-rounded /
             [data-underline-anime-*] / [data-image-scale-anime-*] /
             [data-arrow-slide-in-anime-*] / .t-text-news-title / .t-label-sm
   数値はひとつも書き起こしていない。OKI の宣言をそのまま貼っている。
   OKI の :where([data-component-id=…]) は特異度 0 の飾りなので落とした（効き目は同じ）。
   ══════════════════════════════════════════════════════════════════════════ */

/* OKI の :root は SP 基準で、1024px から PC 断面に切り替わる（root キーが SP 側） */

/* ── 器（OKI: .t-container）。既に持っているなら畳んでよい ───────────────── */

#okis-news{margin-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  #okis-news{margin-top:calc(120 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}

/* ── 節ラベルと見出し（#okis-news に閉じ込めてある。他の部品とぶつからない）── */

/* OKI の .text-shoulder。SmartHR の判断で、全幅 1px 罫の左端に貼る（罫は札の上辺も兼ねる） */

/* SmartHR: ラベル下端から罫まで 0px。罫は全幅 1px */

/* OKI の .deco-dot（赤 → 青） */

/* OKI の .heading-hgroup__title */

/* 島津: 見出しの左上に 40×4px の棒。OKI の h2 margin-top の中に置くので高さは増えない。
   bottom:100% で見出しの上辺に貼るだけ（余白の数字を新しく作らない） */

/* ── 右 705px に寄せる ──────────────────────────────────────────────────
   OKI: 器 48 カラムのうち左 20 カラムを margin-left で空ける。
   1305 − 20/48×1425 ≒ 705px。幅は書かず「空ける量」で決まる ── */
#okis-news .okis-news__list{display:flex;flex-direction:column;align-items:flex-end;margin-top:calc(42 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  #okis-news .okis-news__list{margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));margin-left:calc(var(--column-unit) * 20)}
}
#okis-news .okis-news__news-link{margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}

/* ── 一覧本体 ───────────────────────────────────────────────────────── */
.list-news-thumbnail{width:100%}

.list-news-thumbnail .list-news-thumbnail__item{display:flex;position:relative;align-items:flex-start;padding-top:calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-bottom:calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  .list-news-thumbnail .list-news-thumbnail__item{align-items:center;padding-top:calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-bottom:calc(24 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}

/* 写真。1 件目だけ 3 カラム → 7 カラム（実測 90 → 210px）。比は 90/56 のまま */
.list-news-thumbnail .list-news-thumbnail__item_image{--image-rounded-size: 5;--image-rounded-aspect-ratio: 90/56;flex-shrink:0;margin-right:calc(var(--column-unit) * 2);width:calc(var(--column-unit) * 5)}
@media (min-width:1024px){
  .list-news-thumbnail .list-news-thumbnail__item_image{margin-right:calc(var(--column-unit) * 1);width:calc(var(--column-unit) * 3)}
}
.list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__item_image){width:calc(var(--column-unit) * 8)}
@media (min-width:1024px){
  .list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__item_image){width:calc(var(--column-unit) * 7)}
}

.list-news-thumbnail .list-news-thumbnail__content{margin-right:calc(var(--column-unit) * 1)}

/* 題と日付の間。1 件目だけ 12 → 48px */
.list-news-thumbnail .list-news-thumbnail__content_wrap{display:flex;flex-wrap:wrap;align-items:center;gap:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));margin-top:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
.list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__content_wrap){margin-top:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  .list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__content_wrap){margin-top:calc(48 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}

/* 題。素は .t-text-news-title（ja 15 → 18px）。1 件目だけ 18 → 26px */
.t-text-news-title{font-weight:670;font-size:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1.2}
@media (min-width:1024px){
  .t-text-news-title{font-size:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
html[lang=ja] .t-text-news-title{font-style:normal;font-weight:700;font-size:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:130%;letter-spacing:calc(.45 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  html[lang=ja] .t-text-news-title{font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}
.list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__title){font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
@media (min-width:1024px){
  .list-news-thumbnail__item.-highlight :is(.list-news-thumbnail .list-news-thumbnail__title){font-size:calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
}

/* 札。分類 */
.list-news-thumbnail .list-news-thumbnail__category{border:1px solid var(--color-oki-gray5);border-radius:9999px;background-color:var(--color-oki-gray3);padding:.2em .9em;font-weight:670;font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1}

/* 日付 */
.t-label-sm{font-weight:670;font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1;letter-spacing:0em}
html[lang=ja] .t-label-sm{font-weight:700;font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1;letter-spacing:calc(.36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
.list-news-thumbnail .date{color:var(--color-oki-gray)}

/* ネオキャリア: 12px 未満を作らない。OKI の 12px は流体なので 390px 未満で 12 を割る。
   ここだけ下限を敷く（OKI の値は変えていない。max() で床を足しただけ） */
#okis-news .list-news-thumbnail__category,
#okis-news .list-news-thumbnail .date{
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}

/* 矢印の器 */
.list-news-thumbnail .list-news-thumbnail__arrow{--slide-in-arrow-size: var(14);margin-left:auto}

/* リクルート: 札の高さ固定。題が 1 行でも 2 行でも日付の y が動かない。
   OKI は PC で 1 行に切っている（desktop:line-clamp-1）が、Remind の題は
   1 行に収まらないので 2 行に開けたうえで箱を 2 行ぶんに固定する */
.list-news-thumbnail .list-news-thumbnail__title{height:2lh}

/* ── 写真の角丸（OKI .image-rounded）──────────────────────────────────── */

/* ── 下線（OKI [data-underline-anime-*]）＝ 1px 罫の行の正体 ─────────────
   静止時 gray5 の 1px が全幅に引かれ、ホバーで濃い線が左から伸びる。300ms ── */

/* ── 写真の拡大（OKI [data-image-scale-anime-*]）────────────────────────
   他社判断で 1.08 → 1.05、800ms → 300ms。仕掛けは OKI のまま ── */

/* ── 矢印（OKI .arrow-slide-in）。2 本の矢印が入れ替わる ─────────────── */
.arrow-slide-in{flex-shrink:0;box-sizing:content-box;padding-right:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));width:calc(var(--slide-in-arrow-size, 16) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));overflow:hidden;color:var(--color-oki-red)}
.arrow-slide-in .arrow-slide-in-inner{display:flex;position:relative;justify-content:center;align-items:center}
.arrow-slide-in .arrow-slide-in__icon{aspect-ratio:1/1;width:100%;height:100%}
.arrow-slide-in .arrow-slide-in__icon.-arrow-1{position:absolute;transform:translate(0);transition:transform .4s var(--easing-2),opacity .5s .2s var(--easing-1)}
.arrow-slide-in .arrow-slide-in__icon.-arrow-2{transform:translate(-250%);opacity:0;transition:transform .5s var(--easing-2),opacity .1s var(--easing-1)}
@media (any-hover: hover){
  [data-arrow-slide-in-anime-root]:hover .arrow-slide-in__icon.-arrow-1{transform:translate(120%);opacity:0;transition:transform .4s var(--easing-2),opacity .3s var(--easing-1)}
  [data-arrow-slide-in-anime-root]:hover .arrow-slide-in__icon.-arrow-2{transform:translate(0);opacity:1;transition:transform .5s 0s var(--easing-2),opacity .3s 0s var(--easing-1);transition-delay:.1s}
}
[data-arrow-slide-in-anime-root]:focus-visible .arrow-slide-in__icon.-arrow-1{transform:translate(120%);opacity:0;transition:transform .4s var(--easing-2),opacity .3s var(--easing-1)}
[data-arrow-slide-in-anime-root]:focus-visible .arrow-slide-in__icon.-arrow-2{transform:translate(0);opacity:1;transition:transform .5s 0s var(--easing-2),opacity .3s 0s var(--easing-1);transition-delay:.1s}

/* ── 動きを止めたい人の分（OKI は 1 本も持っていない。ここだけ真似しない）── */

/* ディップ・SmartHR: 1px 罫の行。OKI は一覧ページ (-news-archive) のとき
   1 件目に上罫を足している。同じ宣言をこの一覧の上辺に置く（宣言は OKI のまま） */
#okis-news .list-news-thumbnail{border-top:1px solid var(--color-oki-gray5)}

/* OKI の行数止め（utility） */
.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}

/* ニュース一覧だけ、写真の拡大を 1.08 / 800ms → 1.05 / 300ms にする（部品の判断）。
   共通部品の [data-image-scale-anime-*] は畳んで 1 つにしたので、差分だけここで上書きする */
#okis-news [data-image-scale-anime-target]{ --image-scale-size: 1.05; transition:scale var(--duration-300) ease }
#okis-news [data-image-scale-anime-target] img{ transition:scale var(--duration-300) var(--easing-1) }


/* ══════════════════════════════════════════════════════════════════════════════
   §7 事業領域の全幅の面
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════
   事業領域の全幅の面 — OKI の規則をそのまま移植したもの
   出どころ: oki/rules/business-segment.css 全 33 規則
             + oki/style.css の [data-underline-anime-target] / .deco-dot / .icon-base
   自分で書き起こした数値はひとつも無い。calc() の式は OKI の文字列のまま。
   ────────────────────────────────────────────────────────────────
   OKI からの相違は 4 つだけ（すべて意図的・末尾にまとめて注記）
     1. 色     --color-oki-red / red2 を青へ（:root 側で差し替え）
     2. 行数   4 → 2（HTML 側。CSS は 1 文字も変えていない）
     3. 12px 床 14px/10px の指定に max(12px, …) を被せた（OKI は 1024px 幅で 9.8px を出す）
     4. reduced-motion 1 本追加（OKI は 0 本）
   ══════════════════════════════════════════════════════════════════ */

/* ── 器（OKI: margin-top 46 / 左右 1 カラム） ── */
.home-business-segment-wrap{margin-top:calc(46 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-right:calc(var(--column-unit) * 1);padding-left:calc(var(--column-unit) * 1)}

/* ── 板（実測 1365 幅・padding 140px 30px・角丸は写真側が持つ） ── */
.home-business-segment:where([data-component-id=yhkERb]){position:relative;padding-top:calc(140 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-right:calc(var(--column-unit) * 1);padding-bottom:calc(140 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-left:calc(var(--column-unit) * 1);color:var(--color-oki-white)}

/* ── 写真の上に黒 50% の 1 枚。グラデーションは無い ── */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__image-filter{position:absolute;top:0;right:0;left:0;opacity:.5;z-index:1;background-color:var(--color-oki-black);width:100%;height:100%}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__image-wrap{position:absolute;top:0;left:0;border-radius:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));aspect-ratio:var(--image-rounded-aspect-ratio, 1/1);width:100%;height:100%;overflow:hidden}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__image{position:absolute;inset:0;opacity:0;transition:opacity var(--duration-500) var(--easing-1);margin:auto;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list li:last-child .home-business-segment__list_item{border-bottom:1px solid rgba(230,230,230,.4)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list-wrap{position:relative;z-index:1}

/* ── 行（4 列: 番号・説明・題・矢印） ── */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item{display:flex;position:relative;padding-top:calc(11 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-bottom:calc(60 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_number{width:calc(var(--column-unit) * 2);font-weight:670;font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1}

html[lang=ja] :is(.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_number){font-family:"Figtree","Noto Sans JP",system-ui,sans-serif}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_description{margin-top:calc(11 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));margin-right:calc(var(--column-unit) * 5);width:calc(var(--column-unit) * 12);font-weight:670;font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1.1}

html[lang=ja] :is(.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_description){font-family:"Noto Sans JP",system-ui,sans-serif;font-weight:700;line-height:150%;letter-spacing:calc(.42 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_title{position:relative;margin-top:calc(11 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));margin-left:calc(var(--column-unit) * .5);font-weight:790;font-size:calc(46 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1;letter-spacing:-.02em}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_title .deco-dot{position:absolute;top:.25lh;left:calc(var(--column-unit) * -1)}

html[lang=ja] :is(.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_title){font-size:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));letter-spacing:calc(1.08 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}

/* OKI の同スコープ規則。desktop の DOM には該当要素が無く一度も当たらないが、写しなので落とさず置く */
.home-business-segment:where([data-component-id=yhkERb]) .list-business-segment-thumbnail__item_image{--image-rounded-size: 5;--image-rounded-aspect-ratio: 81/58;flex-shrink:0;margin-left:auto;width:calc(var(--column-unit) * 5)}

/* ── 矢印（36×36 の枠に 16×16 のアイコン。素と塗りの 2 枚を重ねる） ── */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow-wrap{position:relative;position:absolute;top:0;right:0;bottom:0;margin:auto;width:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow{display:flex;position:absolute;top:0;left:0;justify-content:center;align-items:center;border-radius:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));width:100%;height:100%}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow .home-business-segment__list_arrow-icon{width:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));height:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));color:var(--color-oki-red2)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow.-bg-filled{background-color:var(--color-oki-red2)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow.-bg-filled .home-business-segment__list_arrow-icon{color:var(--color-oki-white)}

/* ── 罫（行の上端。OKI は before を最初から scaleX(1) で見せておき、hover で 0 へ畳んで after を伸ばす） ── */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_underline[data-underline-anime-target]{top:0;bottom:auto}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_underline[data-underline-anime-target]:before{transform:scaleX(1);background-color:#e6e6e666}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_underline[data-underline-anime-target]:after{background-color:#e6e6e6}

/* ── ここが下半分の見どころ。選ばれていない行は .4、選ばれた行だけ 1.0
      戻り 800ms（--duration-800）/ 切替 300ms（--duration-300） ── */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_number,.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_description,.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_title{opacity:.4;transition:opacity var(--duration-800) var(--easing-1)}

.home-business-segment:where([data-component-id=yhkERb]) .deco-dot,.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__image{transform:scale(1.06) translateZ(0);opacity:0;transition:all var(--duration-800) var(--easing-1)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_arrow.-bg-filled{opacity:0;transition:opacity var(--duration-500) var(--easing-1)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__image.active-class{transform:scale(1) translateZ(0);opacity:1;transition-duration:var(--duration-500)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item.hover .home-business-segment__list_number{opacity:1;transition-duration:var(--duration-300)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item.hover .home-business-segment__list_description{opacity:1;transition-duration:var(--duration-300)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item.hover .home-business-segment__list_title{opacity:1;transition-duration:var(--duration-300)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item.hover .home-business-segment__list_arrow.-bg-filled{opacity:1;transition-duration:var(--duration-300)}

.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_item.hover .deco-dot{opacity:1;transition-duration:var(--duration-300)}

/* ── 罫の土台（oki/style.css の [data-underline-anime-target] 6 規則をそのまま） ── */

/* ── 点（oki/style.css の .deco-dot 2 規則 + @media(min-width:1024px) 2 規則） ── */

/* ── アイコンの土台（OKI の `.icon-base path{fill:currentColor}` は塗りの図形前提。
      こちらの矢印は線の図形なので、その 1 行だけ落として stroke を使う） ── */

/* ── 出し分け（OKI の 2 規則そのまま。この面は 1024 未満では出さない） ── */

/* ══ 1024 未満で OKI が代わりに出す一覧（oki/style.css の #business-segment .business-segment--mobile 10 規則）
      OKI の :root は SP で --screen-size:390 / --column-size:24。全画面へ効かせると他の部品が動くので
      この節にだけ同じ値を置く（値は OKI のまま・置き場所だけ変えた） ══ */
@media (max-width: 1023.98px){
  #business-segment{--screen-size:390;--column-size:24;--column-unit:calc( 100 / var(--column-size) * (var(--effective-viewport-width) - var(--scrollbar-width)) * .01 )}
}
#business-segment .business-segment--mobile .list-business-segment{margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));color:var(--color-oki-black)}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment__item{display:flex;position:relative;padding-top:calc(17 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));padding-bottom:calc(32 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment__number{width:calc(var(--column-unit) * 2);font-weight:670;font-size:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1}
html[lang=ja] :is(#business-segment .business-segment--mobile .list-business-segment .list-business-segment__number){font-family:"Figtree","Noto Sans JP",system-ui,sans-serif}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment__title{padding-right:calc(var(--column-unit) * 5);font-weight:790;font-size:calc(26 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));line-height:1}
html[lang=ja] :is(#business-segment .business-segment--mobile .list-business-segment .list-business-segment__title){padding-right:calc(var(--column-unit) * 4);font-family:"Noto Sans JP",system-ui,sans-serif;font-size:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment-thumbnail__item_image{--image-rounded-size: 5;--image-rounded-aspect-ratio: 81/58;flex-shrink:0;margin-left:auto;width:calc(var(--column-unit) * 5)}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment__underline{top:0}
#business-segment .business-segment--mobile .list-business-segment>li:last-child .list-business-segment__item{border-bottom:1px solid var(--color-oki-gray5)}

/* ══ 自社の決まり ══════════════════════════════════════════════════
   「字は 12px 未満を作らない」（ネオキャリア）。OKI の式は 1440 幅でだけ 14px になり、
   1024 幅では 9.8px まで落ちる（実測）。式は残したまま床だけ被せる ══ */
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_number,
.home-business-segment:where([data-component-id=yhkERb]) .home-business-segment__list_description{font-size:max(12px, calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))))}
#business-segment .business-segment--mobile .list-business-segment .list-business-segment__number{font-size:max(12px, calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))))}

/* ══ OKI は 0 本。ここは 1 本入れる ══ */


/* ══ §8 2 列の節（t-and-i）══════════════════════════════════════════════════
   これだけは部品として渡されていないので、ここで OKI から移植した。
   出典: oki/rules/t-and-i.css 全 11 規則 ＋ oki/style.css の
         `#technologies-and-innovation` 2 規則（@media の内外は原本のまま）。
   見出し・写真・ボタン・点・段組みは §3 の共通部品をそのまま使う（新しい寸法を作らない）。
   中身だけ Remind のもの。 */
#technologies-and-innovation{
  margin-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  #technologies-and-innovation{
    margin-top:calc(150 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
#technologies-and-innovation .t-and-i__list{
  row-gap:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  #technologies-and-innovation .t-and-i__list{
    margin-top:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
#technologies-and-innovation .t-and-i__list_image{
  --image-rounded-size: 10; --image-rounded-aspect-ratio: 645/408;
  width:100%; --image-scale-size: 1.03;
}
#technologies-and-innovation .t-and-i__list_title{
  margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-left:calc(var(--column-unit) * 1.8);
}
@media (min-width: 1024px){
  #technologies-and-innovation .t-and-i__list_title{
    margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    margin-left:calc(var(--column-unit) * 1.8);
  }
}
html[lang=ja] :is(#technologies-and-innovation .t-and-i__list_title){
  font-size:calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  html[lang=ja] :is(#technologies-and-innovation .t-and-i__list_title){
    font-size:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
#technologies-and-innovation .t-and-i__list_description{
  margin-top:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-right:calc(var(--column-unit) * 2);
  margin-left:calc(var(--column-unit) * 2);
}
@media (min-width: 1024px){
  #technologies-and-innovation .t-and-i__list_description{
    margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    margin-right:calc(var(--column-unit) * 0);
    margin-left:calc(var(--column-unit) * 11);
  }
}
#technologies-and-innovation .t-and-i__list_button{
  margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-left:calc(var(--column-unit) * 2);
}
@media (min-width: 1024px){
  #technologies-and-innovation .t-and-i__list_button{
    margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    margin-left:calc(var(--column-unit) * 11);
  }
}


/* ══════════════════════════════════════════════════════════════════════════════
   §9 About の固定面（elevator）
   ══════════════════════════════════════════════════════════════════════════════ */
/* OKI .elevator の移植。注釈つきの原本 = scratchpad/site-audit/oki-copy/parts/elevator-about.css
 * --u = (100vw-15px)/1440。OKI が 60 回書いている calc を畳んだだけで値は同じ */
#about-us{margin-top:calc(70*var(--u))}
@media (min-width:1024px){#about-us{margin-top:calc(150*var(--u))}}
#about-us .overflow-hidden{overflow:hidden}
#about-us .relative{position:relative}
.elevator .elevator__sticky-area{display:flex;position:sticky;top:0;z-index:1}
.elevator .elevator__sticky-area_left{display:flex;flex-flow:column;justify-content:center;order:1;width:calc(var(--column-unit)*22)}
.elevator .elevator__sticky-area_image{order:2;width:calc(var(--column-unit)*20)}
.elevator .elevator__sticky-area_image-wrapper{position:relative;margin-top:calc(var(--column-unit)*1);margin-bottom:calc(var(--column-unit)*1);height:calc(100vh - calc(var(--column-unit)*2))}
.elevator .elevator__sticky-area_image_image{--image-rounded-size:10;--image-rounded-aspect-ratio:600/840;position:absolute;top:0;left:0;width:100%;height:calc(100vh - calc(var(--column-unit)*2))}
.elevator .elevator__sticky-area_pagination{display:flex;flex-direction:column;justify-content:center;align-items:center;order:3;width:calc(var(--column-unit)*2);height:100vh}
.elevator .elevator__sticky-area_pagination-inner{position:relative;margin-right:calc(var(--column-unit)*-2)}
.elevator .elevator__sticky-area_pagination_active{position:absolute;top:0;left:0;z-index:1;transition:all .4s var(--easing-3);border:1.5px solid var(--color-oki-red);border-radius:calc(4*var(--u))}
.elevator .elevator__sticky-area_pagination_active>div{margin:calc(1*var(--u));aspect-ratio:28/39;width:calc(27*var(--u))}
.elevator .elevator__sticky-area_pagination_link{display:block;opacity:.3;transition-duration:var(--duration-300);border:1.5px solid white;border-radius:calc(4*var(--u))}
.elevator .elevator__sticky-area_pagination_link.is-active{opacity:1;transition-delay:.2s;transition-duration:var(--duration-500)}
@media (any-hover:hover){.elevator .elevator__sticky-area_pagination_link:hover{opacity:1}}
.elevator .elevator__sticky-area_pagination_image{--image-rounded-size:2;--image-rounded-aspect-ratio:28/39;margin:calc(1*var(--u));width:calc(27*var(--u))}
.elevator .elevator__scroll-area{margin-top:-100vh;padding-bottom:calc(var(--column-unit)*1)}
.elevator .elevator__scroll-area_section{width:calc(var(--column-unit)*19);min-height:800px}
.elevator [data-elevator-image]{display:block;position:absolute;top:0;left:0;clip-path:polygon(0% calc(var(--tl) * 100%),100% calc(var(--tr) * 100%),100% calc(var(--br) * 100%),0% calc(var(--bl) * 100%));width:100%;height:100%}
.elevator [data-toggle-show-content]{position:absolute;top:0;left:0;transform:translate3d(0,15px,0)}
.elevator [data-toggle-show-content] [data-toggle-show-target]{display:inline-block;transform:translate3d(0,100%,0)}
.elevator .is-show[data-toggle-show-content]{transform:translateZ(0);opacity:1;transition:transform 1s var(--easing-3),opacity .8s var(--easing-1)}
.elevator .is-show[data-toggle-show-content] [data-toggle-show-target]{transform:translateZ(0);transition:transform .8s var(--easing-3)}
.elevator .is-hide[data-toggle-show-content]{transform:translate3d(0,-70%,0);opacity:0;transition:transform .8s var(--easing-3),opacity .4s var(--easing-1);pointer-events:none}
.elevator .is-hide[data-toggle-show-content] [data-toggle-show-target]{transform:translate3d(0,-70%,0);transition:transform .8s var(--easing-3)}
.elevator .is-show[data-toggle-show-content]>*:nth-child(1){--delay:0s;transition-delay:var(--delay)}
.elevator .is-show[data-toggle-show-content]>*:nth-child(2){--delay:.1s;transition-delay:var(--delay)}
.elevator .is-show[data-toggle-show-content]>*:nth-child(3){--delay:.2s;transition-delay:var(--delay)}
.elevator .is-show[data-toggle-show-content]>*:nth-child(4){--delay:calc((4 - 1) * .1s);transition-delay:var(--delay)}
.elevator .is-show[data-toggle-show-content]>*:nth-child(5){--delay:.4s;transition-delay:var(--delay)}

#about-us .about-us__list_pagination-wrap{display:flex;margin-top:calc(28*var(--u));margin-left:calc(var(--column-unit)*2);font-weight:670;font-size:calc(10*var(--u));line-height:1}
@media (min-width:1024px){#about-us .about-us__list_pagination-wrap{font-size:calc(12*var(--u))}}
#about-us .about-us__list_pagination{display:flex;justify-content:flex-end;align-items:center}
#about-us .about-us__list_pagination_bar{margin-right:calc(7*var(--u));margin-left:calc(7*var(--u));background:var(--color-oki-gray);width:calc(20*var(--u));height:1px}
#about-us .about-us__list_pagination_num{color:var(--color-oki-red)}
@media (min-width:1024px){#about-us .about-us__list_pagination_num{display:flex;width:2em;font-size:calc(12*var(--u))}}
#about-us .about-us__list_pagination_length{color:var(--color-oki-black)}
#about-us .about-us__content-wrap{position:relative;margin-top:calc(40*var(--u));margin-right:calc(var(--column-unit)*3);height:43vh}
@media (min-width:1024px){#about-us .about-us__content{margin-left:calc(var(--column-unit)*2)}}
#about-us .about-us__content_decodot{position:absolute;top:calc(15*var(--u));left:calc(30*var(--u))}
#about-us .heading-base{--font-size-ja-lg:calc(26*var(--u));--font-size-ja-lg-desktop:calc(50*var(--u));position:relative;color:var(--color-oki-black);font-style:normal;font-weight:790;font-size:var(--font-size-ja-lg);line-height:110%;letter-spacing:calc(1.08*var(--u))}
@media (min-width:1024px){#about-us .heading-base{font-size:var(--font-size-ja-lg-desktop);letter-spacing:calc(1.68*var(--u))}}
#about-us .heading-base .deco-dot{position:absolute;top:.2lh;left:calc(var(--column-unit)*-1)}
@media (max-width:1023.98px){#about-us .heading-base .deco-dot{width:calc(4*var(--u));height:calc(4*var(--u))}}
@media (min-width:1024px){#about-us .heading-base .deco-dot{width:calc(6*var(--u));height:calc(6*var(--u))}}
#about-us .about-us__list_title{margin-top:calc(20*var(--u));margin-left:calc(var(--column-unit)*1.8);line-height:1}
@media (min-width:1024px){#about-us .about-us__list_title{margin-top:calc(0*var(--u));margin-left:calc(var(--column-unit)*0);width:calc(var(--column-unit)*14)}}

#about-us [data-blink-decodot]{opacity:var(--decodot-blink-opacity, 1)}

#about-us .about-us__list_description{margin-top:calc(18*var(--u));margin-right:calc(var(--column-unit)*2);margin-left:calc(var(--column-unit)*2)}
@media (min-width:1024px){#about-us .about-us__list_description{margin-top:calc(115*var(--u));margin-right:0;margin-left:0;width:calc(var(--column-unit)*8)}}

#about-us .t-label-md{font-weight:800;font-size:calc(12*var(--u));line-height:1.2;letter-spacing:calc(.36*var(--u))}
@media (min-width:1024px){#about-us .t-label-md{font-size:calc(13*var(--u));letter-spacing:calc(.39*var(--u))}}

#about-us .about-us__list_button{--distance:calc(30*var(--u));margin-top:calc(30*var(--u));margin-left:calc(var(--column-unit)*2)}
@media (min-width:1024px){#about-us .about-us__list_button{margin-top:calc(48*var(--u));margin-left:calc(var(--column-unit)*0)}}
@media (max-width:1023.98px){.elevator .elevator__sticky-area{display:block;position:static} .elevator .elevator__sticky-area_pagination{display:none} .elevator .elevator__sticky-area_left, .elevator .elevator__sticky-area_image{width:100%} .elevator .elevator__sticky-area_left{display:block} .elevator .elevator__sticky-area_image-wrapper{margin-top:0;margin-bottom:0;height:auto} .elevator .elevator__sticky-area_image_image{position:relative;height:auto} .elevator [data-elevator-image]{position:relative;clip-path:none;margin-top:calc(40*var(--u))} .elevator [data-elevator-image] img{transform:none !important} .elevator .elevator__scroll-area{display:none} #about-us .about-us__list_pagination-wrap{display:none} #about-us .about-us__content-wrap{margin-right:0;height:auto} .elevator [data-toggle-show-content], .elevator .is-show[data-toggle-show-content], .elevator .is-hide[data-toggle-show-content]{position:relative;transform:none;opacity:1;transition:none;pointer-events:auto} .elevator [data-toggle-show-content] [data-toggle-show-target]{transform:none} #about-us .about-us__content + .about-us__content{margin-top:calc(50*var(--u))}}



/* ══════════════════════════════════════════════════════════════════════════════
   §10 数字
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   数字の節（OKI in Numbers → Remind in Numbers）
   出典: oki/rules/oki-numbers.css 全 31 規則（= oki/style.css の
         `.home-oki-numbers:where([data-component-id=yfxEAP])` 系）を丸ごと移植。
         構造の裏取りは oki/tree-main.txt:102-120、素の markup は oki/index.html。
   値は 1 つも書き起こしていない。@media (min-width:1024px) の内外も原本のまま。

   触ったのは:
     1. 色      … --color-oki-red / -red2 の「値」が青（root で差し替え済み・規則は無改造）。
                   加えてこの節だけ、点と棒を currentColor（白）に落とした ⇒ 下の【色 2】
     2. 中身    … 文言・写真・数字を Remind のもの（母数と時点を card-description に）
     3. セレクタ… `:where([data-component-id=…])` は特異度 0 の scope 指定。
                   その属性を我々の HTML に持たないので外した（parts/common.css と同じ判断）
   余白・大きさ・時間・曲線・入れ子は変えていない。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 1. 器（背景と中身を grid の同じ 1 マスに重ねる）───────────────────
   出典: oki-numbers.css:1,3 */
.home-oki-numbers{
  display:grid;
  grid-template-rows:100%;
  grid-template-columns:100%;
  color:var(--color-oki-white);
}
.home-oki-numbers .background,
.home-oki-numbers .content{ grid-row:-1/1; grid-column:-1/1 }

/* ── 2. 背景の写真 ────────────────────────────────────────────────────
   出典: oki-numbers.css:5（左右の余白は PC のみ）, :7, :13, :15
   SP は全幅・角丸 0、PC で左右 1 カラム空けて角丸 10px。 */
.home-oki-numbers .background img{ width:100%; height:100% }
.home-oki-numbers .image-rounded{
  --image-rounded-size: 0;
  --image-rounded-aspect-ratio: none;
  height:100%;
}
@media (min-width: 1024px){
  .home-oki-numbers .background{
    padding-right:calc(var(--column-unit) * 1);
    padding-left:calc(var(--column-unit) * 1);
  }
  .home-oki-numbers .image-rounded{ --image-rounded-size: 10 }
}

/* 【色 2】覆い。OKI には無い（OKI の写真は元から暗い）。
   front-recruit-back.jpg は白い壁が広く、白 #fbfbfb の字が乗らないので敷く。
   濃さは実測で決めた: 写真が真っ白（255,255,255）の最悪の点でも
   .62 の #001f45 を重ねれば地の輝度 0.1525 → 白字とのコントラスト 5.05:1（AA 通過）。
   字が乗るのは上 38% までなので、そこから下は .46 まで薄めて写真を見せる。 */
.home-oki-numbers .image-rounded::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--color-oki-red2) 74%, transparent) 0%,
    color-mix(in srgb, var(--color-oki-red2) 62%, transparent) 38%,
    color-mix(in srgb, var(--color-oki-red2) 46%, transparent) 100%);
  pointer-events:none;
}

/* ── 3. 中身の器 ──────────────────────────────────────────────────────
   出典: oki-numbers.css:9（SP）, :11（PC。左右の余白と overflow:clip は PC のみ） */
.home-oki-numbers .content{
  isolation:isolate;
  padding-top:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  padding-bottom:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .home-oki-numbers .content{
    padding-top:calc(80 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    padding-right:calc(var(--column-unit) * 1);
    padding-left:calc(var(--column-unit) * 1);
    overflow:clip;
  }
}

/* ── 4. 見出し ────────────────────────────────────────────────────────
   出典: oki-numbers.css:17（SP: 左右 2 カラム）, :19（PC: 右 3・左 2 カラム）
         題は oki/style.css `.heading-group-large:where([data-component-id=egjFA3]) .heading`
         （html[lang=ja] の 52px / 行 140% / 字間 1.56 を採る。欧文用の 66px は当たらない） */
.home-oki-numbers .heading-group-large{
  padding-right:calc(var(--column-unit) * 2);
  padding-left:calc(var(--column-unit) * 2);
}
@media (min-width: 1024px){
  .home-oki-numbers .heading-group-large{
    padding-right:calc(var(--column-unit) * 3);
    padding-left:calc(var(--column-unit) * 2);
  }
}
.home-oki-numbers .heading-group-large .heading{
  margin-top:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  color:currentColor;
  font-style:normal; font-weight:790;
  font-size:calc(28 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:130%;
  letter-spacing:calc(.84 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  .home-oki-numbers .heading-group-large .heading{
    margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    font-size:calc(52 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    line-height:140%;
    letter-spacing:calc(1.56 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
/* 島津の棒（社の決め事）。値は parts/common.css の
   `.heading-hgroup__title::before`（40×4px）と同一 — 見出しの印を 2 種類作らない。
   【色 2】この節だけ地が暗いので currentColor（白）。青のままだと覆いに沈んで消える。 */
.home-oki-numbers .heading-group-large .heading::before{
  content:"";
  display:block;
  width:40px; height:4px;
  background:currentColor;
}

/* ── 5. 札（SP は横送り・PC は 3 枚並ぶ）─────────────────────────────
   出典: oki-numbers.css:21（.track-mobile）, :25（SP 札）, :27（PC 札）
   .track-mobile の負の margin-left ＋ 同量の padding-left は OKI の中央スナップ用。
   （-230/2 + 20 → +230/2 + 20 で、器の外へ食い込ませてから中身を押し戻している） */
.home-oki-numbers .track-mobile{
  display:flex;
  position:relative;
  column-gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  flex-wrap:nowrap;
  margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-left:calc(calc(230 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * -.5 + calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  padding-right:calc(var(--column-unit) * 1);
  padding-left:calc(calc(230 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * .5 + calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  overflow-x:auto;
  scroll-snap-type:x mandatory;
}
.home-oki-numbers .card-carousel{
  display:grid;
  grid-auto-rows:auto 1fr auto;
  grid-auto-columns:auto;
  flex-shrink:0;
  border-radius:calc(8 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  background-color:var(--color-oki-white);
  padding:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))
          calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  aspect-ratio:230/324;
  width:calc(230 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  scroll-snap-align:center;
  color:var(--color-oki-black);
}
@media (min-width: 1024px){
  .home-oki-numbers .card-carousel{
    padding:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))
            calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    aspect-ratio:320/452;
    width:calc(320 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    scroll-snap-align:start;
  }
}

/* ── 6. 札の中身 ──────────────────────────────────────────────────────
   出典: oki-numbers.css:37-43（題）, :45-51（数）, :53-59（単位）, :61（説明）
   html[lang=ja] の枝を採る（当サイトは日本語のみ）。
   単位は数の p の中の block ＋ text-align:right ＝ 数の右下にぶら下がる。 */
.home-oki-numbers .card-title{
  color:var(--color-oki-red);
  font-weight:790;
  font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:100%;
  letter-spacing:-.01em;
}
@media (min-width: 1024px){
  .home-oki-numbers .card-title{
    font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.home-oki-numbers .card-number{
  justify-self:start;
  margin-top:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  font-weight:790;
  font-size:calc(60 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:100%;
  letter-spacing:-.03em;
  /* OKI は数だけ欧文の Saans に落としている（html[lang=ja] の枝）。
     その書体は持っていないので、当サイトの欧文（Figtree）に読み替えた。役目は同じ。 */
  font-family:"Figtree","Noto Sans JP",system-ui,sans-serif;
}
@media (min-width: 1024px){
  .home-oki-numbers .card-number{
    margin-top:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    font-size:calc(76 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.home-oki-numbers .card-unit{
  display:block;
  font-weight:790;
  font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:100%;
  letter-spacing:-.01em;
  text-align:right;
  font-family:"Noto Sans JP",system-ui,sans-serif;
}
@media (min-width: 1024px){
  .home-oki-numbers .card-unit{
    margin-top:calc(8 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    font-size:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.home-oki-numbers .card-description{
  font-weight:570;
  font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  line-height:150%;
  letter-spacing:-.01em;
}

/* ── 7. PC の 3 枚並び ────────────────────────────────────────────────
   出典: oki-numbers.css:29,31,33,35（.swiper-slide）＋ oki/style.css の
         swiper 素の `.swiper` / `.swiper-wrapper` / `.swiper-slide` 3 規則。
   PC 実測（oki/tree-main.txt:114-118）: 札 320 ＋ 左 15 ＝ 帯 335・335・最後だけ +30 で 365。
   3 枚で 1035 に対し器は 1365 ＝ 収まる。したがって横送りは動かない（OKI もそう）。 */
.home-oki-numbers .swiper{
  margin-left:auto; margin-right:auto;
  position:relative;
  overflow:hidden;
  list-style:none;
  padding:0;
  z-index:1;
  display:block;
}
.home-oki-numbers .swiper-wrapper{
  position:relative;
  width:100%; height:100%;
  z-index:1;
  display:flex;
  transition-property:transform;
  box-sizing:content-box;
}
.home-oki-numbers .swiper-slide{
  flex-shrink:0;
  position:relative;
  display:block;
  transition:opacity var(--duration-300) var(--easing-0);
  width:fit-content;
  padding-left:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.home-oki-numbers .swiper-slide:last-child{
  padding-right:calc(var(--column-unit) * 1);
}
/* JS が付ける印。付かなければ既定のまま見える（M-033: 可視性を JS に預けない） */
.home-oki-numbers [data-swiper-visibillity=showing]{ opacity:1 }
.home-oki-numbers [data-swiper-visibillity=hidden]{ opacity:0 }

/* ── 8. 矢印 ──────────────────────────────────────────────────────────
   出典: oki-numbers.css:23（.button-group）＋ oki/rules/button-base.css の
         `.button-square:where([data-component-id=t25RuN])` 系 20 規則。
   PC で 3 枚が収まる以上、両端に着いた状態＝ hollow ＋ 効かない、が正しい姿。
   初期 HTML をその姿にしてあり、JS は「器からあふれたときだけ」効かせる側に回る。 */
.home-oki-numbers .button-group{
  display:flex;
  column-gap:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  justify-content:flex-end;
  margin-top:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  margin-bottom:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  padding-right:calc(var(--column-unit) * 1);
}
.button-square{
  --button-base-font-size: 12;
  --button-base-color-text: var(--color-oki-white);
  --button-base-color-bg: var(--color-oki-red2);
  --button-base-color-border: transparent;
  --initial-opacity: 0;
  --active-translate: 0;
  --active-opacity: 1;
  display:inline-grid;
  align-content:center;
  justify-content:center;
  place-content:center;
  transition-duration:var(--duration-300);
  transition-property:background-color,color,border-color;
  transition-timing-function:var(--easing-0);
  border:1px solid var(--button-base-color-border);
  border-radius:calc(5 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  background-color:var(--button-base-color-bg);
  width:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  color:var(--button-base-color-text);
  line-height:100%;
}
.button-square>span{ grid-row:-1/1; grid-column:-1/1 }
@media (min-width: 1024px){
  .button-square{
    width:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
    height:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}
.button-square[data-variant=primary]{
  --button-base-color-bg: var(--color-oki-red2);
  --button-base-color-border: var(--color-oki-red2);
}
.button-square[data-variant=hollow]{ --button-base-color-bg: transparent }
.button-square[data-hollow-style=white][data-variant=hollow]{
  --button-base-color-border: rgba(255, 255, 255, .3);
  --button-base-color-text: var(--color-oki-white);
}
.button-square[data-disabled], .button-square:disabled{ cursor:default; pointer-events:none }
/* 矢印の押し出し（before が外から入り、after が外へ出る） */
.button-square>span{
  transform-origin:center;
  transition-duration:var(--duration-300);
  transition-property:transform,opacity;
  transition-timing-function:var(--easing-2),var(--easing-0);
}
.button-square[data-icon-direction=left]{
  --initial-translate: calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.button-square[data-icon-direction=right]{
  --initial-translate: calc(-15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
.button-square .before{ transform:translate(var(--initial-translate)); opacity:var(--initial-opacity) }
.button-square .after{ transform:translate(var(--active-translate)); opacity:var(--active-opacity) }
@media (any-hover: hover){
  .button-square[data-variant=hollow]:hover{ --button-base-color-border: rgba(255, 255, 255, .7) }
  .button-square:hover .before{ transform:translate(var(--active-translate)); opacity:var(--active-opacity) }
  .button-square:hover .after{ transform:translate(calc(var(--initial-translate) * -1)); opacity:var(--initial-opacity) }
}

/* ── 9. 出し分け（出典: oki/style.css `.desktop-only` / `.mobile-only`）── */
@media (max-width: 1023.98px){ .home-oki-numbers .desktop-only{ display:none !important } }
@media (min-width: 1024px){ .home-oki-numbers .mobile-only{ display:none !important } }

/* ── 10. 動きを減らす設定（OKI は 0 件。ここは真似しない）────────────── */



/* ══════════════════════════════════════════════════════════════════════════════
   §11 フッター
   ══════════════════════════════════════════════════════════════════════════════ */


.footer{ position:sticky; top:100vh; padding:calc(50 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); overflow:hidden; }
@media (min-width: 1024px){
.footer{ padding-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-right:calc(var(--column-unit) * 1); padding-left:calc(var(--column-unit) * 1); }
}
.footer{ --progress: 1 }
.footer .group{ display:grid; grid-template-rows:auto 1fr auto auto auto; grid-template-areas:"company global" "company language" "business ." "recruit ." "follow-us ." "copy copy"; grid-row-gap:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); row-gap:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-right:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-left:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }

/* ★ 2026-09-10 追加。**上の OKI の規則は 1 文字も触っていない。列幅だけ足す。**
   OKI の SP フッターは列幅を書いておらず `auto auto` で内容から決まる。
   OKI の右の列は「グローバル」「言語」の短いリンクなので 113px に収まるが、
   **こちらは同じ場所に住所と電話番号を置いている。**
   `TEL 06-6655-1623` は途中で折れない 1 かたまりなので、それが max-content になり:

     OKI 本家 375px … 会社情報 173px ／ 所在地 113px
     こちら 375px   … 会社情報 **96px** ／ 所在地 **191px**

   96px では「人材紹介FC事業」が 2 行に折れ、住所も「大阪府大阪市中央区久太郎町」で
   切れる（オーナー報告 2026-09-10）。
   そこで **OKI 本家が 375px で解決している実寸 173.359 : 113.203 を、そのまま比として固定**する。
   自分で決めた値は 1 つも無い。1024px 以上は下の @media が 4 列に上書きするので影響しない。 */
.footer .group{ grid-template-columns:minmax(0,173.359fr) minmax(0,113.203fr) }

/* ★ `fr` だけだと効かない。`Nfr` は内部的に `minmax(auto, Nfr)` で、**下限が min-content** に
   なるため。所在地の欄は住所の min-content が 208px あり（実測）、その下限に押されて
   173px を取り、会社情報の側が 113px に押し出されていた（＝比が逆になる）。
   `minmax(0, Nfr)` にして下限を外し、比のとおりに割る。住所は折り返す。 */
@media (min-width: 1024px){
.footer .group{ grid-template-rows:auto auto 1fr; grid-template-columns:calc(var(--column-unit) * 19) calc(var(--column-unit) * 8) calc(var(--column-unit) * 9) 1fr; grid-template-areas:"copy company business global" "copy company business language" "copy company recruit ." "copy company follow-us ."; row-gap:0; padding-right:0; padding-left:0; }
}
.footer .footer-navigation-group[data-type=company]{ grid-area:company }
.footer .footer-navigation-group[data-type=business]{ grid-area:business }
@media (min-width: 1024px){
.footer .footer-navigation-group[data-type=business]{ padding-bottom:calc(60 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.footer .footer-navigation-group[data-type=recruit]{ grid-area:recruit }
.footer .footer-navigation-group[data-type=follow-us]{ grid-area:follow-us }
.footer .footer-navigation-group[data-type=global]{ grid-area:global }
@media (min-width: 1024px){
.footer .footer-navigation-group[data-type=global]{ padding-bottom:calc(60 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.footer .footer-navigation-group[data-type=language]{ grid-area:language }
.footer-navigation-group a,
.footer-navigation-group .address{ display:block; font-weight:570; font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:190%; letter-spacing:-.01em; }
@media (min-width: 1024px){
.footer-navigation-group a,
.footer-navigation-group .address{ font-size:calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.footer-navigation-group .heading-menu{ margin-bottom:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
@media (min-width: 1024px){
.footer-navigation-group .heading-menu{ margin-bottom:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.heading-menu{ position:relative; font-weight:790; font-size:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100%; letter-spacing:-.01em; }
@media (min-width: 1024px){
.heading-menu{ font-size:calc(18 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.heading-menu .deco-dot{ position:absolute; top:0; left:calc(-14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }

.footer .copy{ grid-area:copy; margin-left:calc(-15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding-top:calc(6 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
@media (min-width: 1024px){
.footer .copy{ margin-left:0; padding-top:0; padding-left:calc(var(--column-unit) * 2) }
}
.footer .copy span{ display:block; font-style:normal; font-weight:790; font-size:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:104%; letter-spacing:-.8px; }
@media (min-width: 1024px){
.footer .copy span{ font-size:calc(52 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); letter-spacing:-1.04px; }
}
html[lang=ja] .footer .copy span{ width:auto; line-height:140%; font-size:calc(28 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
@media (min-width: 1024px){
html[lang=ja] .footer .copy span{ font-size:calc(36 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.footer .label-link-recruit{ display:flex; align-items:center; gap:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
.footer .label-link-recruit svg{ width:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
.footer .background{ position:absolute; bottom:0; left:0; transform:translateY(calc(calc(-10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * var(--progress))); transform-origin:bottom left; scale:1; border-radius:calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--color-oki-red); width:100%; height:calc(100% * (1 - var(--progress)) + calc(64 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * var(--progress)); }
@media (min-width: 1024px){
.footer .background{ transform:translate(calc(calc(var(--column-unit) * 1) * var(--progress)),calc(calc(-25 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * var(--progress))); width:calc(100% * (1 - var(--progress)) + calc(var(--column-unit) * 30) * var(--progress)); height:calc(100% * (1 - var(--progress)) + calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) * var(--progress)); }
}
.footer .bottom{ position:relative; margin-top:calc(79 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding:calc(30 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(22 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); color:var(--color-oki-white); }
@media (min-width: 1024px){
.footer .bottom{ display:grid; grid-template-areas:"copyright list"; justify-content:start; margin-top:calc(110 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); padding:calc(156 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(60 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
@media (max-width: 1023.98px){
html[lang=ja] .footer .bottom{ margin-top:calc(35 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
}
.footer .bottom .button{ display:flex; position:absolute; top:calc(calc(-44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) + calc(-20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))); right:calc(20 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); justify-content:center; align-items:center; opacity:0; z-index:1; border-radius:calc(4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); background-color:var(--color-oki-red); width:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
.footer .bottom .button svg{ width:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); height:calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); }
@media (max-width: 1023.98px){
.footer .bottom .button{ display:none }
}
@media (any-hover: hover){
.footer .bottom .button{ transition-duration:var(--duration-500),var(--duration-300); transition-property:top,background-color; transition-timing-function:var(--easing-2),var(--easing-0); }
.footer .bottom .button:hover{ background-color:var(--color-oki-red2) }
}
.footer .bottom .button[data-visible="false"]{ pointer-events:none }
.footer .bottom .list{ grid-area:list; margin-bottom:calc(-4 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); isolation:isolate; font-style:normal; font-weight:670; font-size:calc(13 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:190%; letter-spacing:-.01em; }
@media (min-width: 1024px){
.footer .bottom .list{ display:grid; grid-template-columns:1fr 1fr; grid-gap:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); gap:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); font-weight:700; font-size:calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100%; }
.footer .bottom .list li{ width:calc(var(--column-unit) * 8) }
}
.footer .bottom .copyright{ grid-area:copyright; align-self:end; opacity:.8; isolation:isolate; font-style:normal; font-weight:670; font-size:calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); line-height:100%; letter-spacing:-.01em; }
@media (max-width: 1023.98px){
.footer .bottom .copyright{ margin-top:calc(25 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))); text-align:right; }
}
@media (min-width: 1024px){
.footer .bottom .copyright{ width:calc(var(--column-unit) * 17) }
}
.footer .footer-navigation-group a,
.footer .bottom .list a{ display:flex; align-items:center; min-height:44px; }
.footer .bottom .list a{ display:inline-flex }
[data-hover-fade-target]{ transition:opacity var(--duration-800) var(--easing-1) }
@media (any-hover: hover){
[data-hover-fade-target]:any-link:hover{ opacity:.7; transition-duration:var(--duration-300) }
[data-hover-fade-root]:any-link:hover [data-hover-fade-target]{ opacity:.7; transition-duration:var(--duration-300) }
}

/* ══ §12 12px の床 ═════════════════════════════════════════════════════════
   流体の式（calc(N / --screen-size * …)）は画面が基準より狭いとそのまま縮む。
   式は 1 つも書き換えず、小さい字にだけ max(12px, …) の床を敷く。
   ここに並ぶのは「設計値が 13px 以下」または「1024〜1249px で 12 を割る」もの。
   実測で落ちていた例: ナビの札は 1024px 幅で 9.81px になっていた。 ═════════ */
.header-navigation-desktop .label{
  font-size:max(12px, calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
.button-blur{
  font-size:max(12px, calc(var(--button-blur-font-size) / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
.t-label-md{
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
@media (min-width: 1024px){
  .t-label-md{
    font-size:max(12px, calc(13 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  }
}
.t-label-sm, html[lang=ja] .t-label-sm{
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
.hero-home .button-scroll{
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
#about-us .t-label-md{
  font-size:max(12px, calc(12 * var(--u)));
}
@media (min-width: 1024px){
  #about-us .t-label-md{ font-size:max(12px, calc(13 * var(--u))) }
}
#about-us .about-us__list_pagination-wrap{
  font-size:max(12px, calc(10 * var(--u)));
}
.footer .bottom .list{
  font-size:max(12px, calc(13 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
.footer .bottom .copyright{
  font-size:max(12px, calc(12 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}

/* ══ §12b 畳んだときに出た 2 つの綻びを塞ぐ ════════════════════════════════
   どちらも実際に描いて測って見つけたもの。 */

/* (1) フッターの帯は --progress:1（閉じた 64px の細帯）から始まり、
       部品の JS が「フッターが画面に入った」と見て開く。JS が動かない機械では
       閉じたままで、下段の白い字が白地に乗って読めなかった（実測 比 1.03）。
       JS が動くときだけ 1 から始める＝走らなければ最初から開いている（M-033）。 */
html:not(.has-js) .footer{ --progress: 0 }

/* (2) 日付の灰色（OKI の --color-oki-gray #909090）は白地で比 3.19 だった。
       12px の字なので 4.5 が要る。この 1 か所だけ濃さを上げる（比 5.3）。
       OKI の変数の値は変えていない — 罫や棒に使っている灰色はそのまま。 */
.list-news-thumbnail .date{ color:#6b6b6b }

/* ══ §12c 床の残り（1024〜1440px の帯で 12px を割っていたもの）════════════
   流体の基数は 1024px から 1440 に切り替わるので、その直後がいちばん小さい
   （1024/1440 = 0.711 倍）。実測で 12px を割っていたのは次の 8 か所だけ。
   式は 1 つも書き換えず、床だけ足す。 */
.footer-navigation-group a,
.footer-navigation-group .address{
  font-size:max(12px, calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
@media (min-width: 1024px){
  .footer-navigation-group a,
  .footer-navigation-group .address{
    font-size:max(12px, calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  }
  #about-us .about-us__list_pagination_num{ font-size:max(12px, calc(12 * var(--u))) }
  .home-oki-numbers .card-unit{
    font-size:max(12px, calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  }
  html[lang=ja] .paragraph-base{
    font-size:max(12px, calc(16 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  }
}
.home-oki-numbers .card-description{
  font-size:max(12px, calc(14 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
html[lang=ja] .paragraph-base{
  font-size:max(12px, calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}
.menu-mobile .label-link{
  font-size:max(12px, calc(15 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
}


/* ══════════════════════════════════════════════════════════════════════════════
   §14 追加した 13 部品（parts2/）— 畳むときにしたこと
   ──────────────────────────────────────────────────────────────────────────────
     1. 各部品の :root は §1 の :root へ（articles の PC 分は §1 の @media へ）
     2. 各部品の @media (prefers-reduced-motion: reduce) は §13 へ
     3. herobar が単体描画用に持っていた「器の寸法」の写しは落とした（§5 が持つ）
   これ以外は各部品の原文のまま。§3 共通部品より後ろに置いてあるので、
   部品が共通部品を上書きすることは無い（どの部品も共通部品のセレクタを持たない）。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════════════
   §14-gateway
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   gateway — ヒーロー直下の「導線カード帯」（3 枚）
   ──────────────────────────────────────────────────────────────────────────────
   参照元: https://corp.infomart.co.jp/  （2026-09-08 取得）
     部品A「バナー帯」  #news 節の直後 …… <div class="js-fadein mb-12 pl-6 md:mb-28
            md:ml-[60px] md:pl-[calc(((100%-1120px)/2)-60px)]">
              <ul class="relative flex gap-x-0.5 max-md:flex-col max-md:gap-y-[1px]">
                <li class="group md:w-[calc((100%-2px)/2)]"> … 2 枚
     部品B「全幅バナー」その直後 …… <a class="js-fadein group"> の中の
              <p class="order-last … leading-[calc(24/15)]">（1 行の説明）
   規則の出どころ: https://corp.infomart.co.jp/assets/css/global2.css（Tailwind 出力）
   宣言は 1 つも書き直していない。取り出しは ref2/pick2.mjs（規則単位に開いて拾う）。

   参照元は Tailwind なので、クラス名が .flex / .grid / .relative / .hidden のように
   非常に一般的。この頁（oki-copy）は index.html で .grid 1 / .relative 2 / .group 7、
   style.css で .flex 3 / .grid 5 / .border 7 を既に使っている（実測）ので、
   そのまま置くと衝突する。よって全規則を :where(.remind-gateway) で囲った。
   :where() は特異度 0 なので、規則の効き方（特異度・順序）は参照元と同じままになる。

   ★ rem について: 参照元は html{font-size:calc(10 / var(--size-font-browser) * 100%)}
     ＝ 1rem = 10px。この頁の 1rem は 16px なので、rem を使う 3 宣言だけ px に直した
     （計算値は参照元と同一）。該当は text-6xl / text-xl / [4rem] の 3 つで、
     各所に「参照元: …rem」と原文を残してある。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── §0 :root（組み込み時に畳めるよう先頭に分ける）──────────────────────────
   参照元の `*,:before,:after{ --tw-… }`（変形の合成に使う既定値）のうち、
   この部品が実際に読む 7 本と `:before,:after{--tw-content:""}` を :root へ移した。
   カスタムプロパティは継承するので、`*` に置いたときと結果は同じ。
   ------------------------------------------------------------------------- */

/* ── §1 参照元の preflight から、この部品が寄りかかっている分だけ ───────────
   （global2.css の Tailwind preflight。原文のまま、スコープだけ付けた） */
:where(.remind-gateway) *,
:where(.remind-gateway) *:before,
:where(.remind-gateway) *:after{ box-sizing:border-box; border-width:0; border-style:solid }
:where(.remind-gateway) blockquote,
:where(.remind-gateway) dl,:where(.remind-gateway) dd,
:where(.remind-gateway) h1,:where(.remind-gateway) h2,:where(.remind-gateway) h3,
:where(.remind-gateway) figure,:where(.remind-gateway) p,:where(.remind-gateway) pre{ margin:0 }
:where(.remind-gateway) ol,
:where(.remind-gateway) ul,
:where(.remind-gateway) menu{ list-style:none; margin:0; padding:0 }
:where(.remind-gateway) a{ color:inherit; text-decoration:inherit }
:where(.remind-gateway) img,
:where(.remind-gateway) svg,
:where(.remind-gateway) video,
:where(.remind-gateway) canvas,
:where(.remind-gateway) audio,
:where(.remind-gateway) iframe,
:where(.remind-gateway) embed,
:where(.remind-gateway) object{ display:block; vertical-align:middle }
:where(.remind-gateway) img,
:where(.remind-gateway) video{ max-width:100%; height:auto }

/* ── §2 帯の外枠（部品A の wrapper）────────────────────────────────────────
   参照元の class は `js-fadein mb-12 pl-6 md:mb-28 md:ml-[60px]
   md:pl-[calc(((100%-1120px)/2)-60px)]`。

   1) js-fadein（= .js-fadein{opacity:0} を JS が戻す）は外した。理由は「初期値を
      不可視にして JS で戻す実装をしない」— 走らなければ帯ごと消えるため。

   2) 左の寄せ 3 本（pl-6 / md:ml-[60px] / md:pl-[calc(((100%-1120px)/2)-60px)]）は
      この頁の変数で書き直した。参照元のこの式は「参照元自身の中身の左端
      （max-w-contents=1120px を中央に置いたときの左端）に合わせ、右は画面の端まで
      流す」という意味で、60 も 1120 も参照元の grid の値。この頁の中身の左端は
      .t-container が calc(var(--column-unit) * 1)（1024px 以上で * 2）で決めている
      （style.css 92-95 行）ので、同じ意味になるのはそちら。原文のままだと 1440px で
      左端が 153px になり、この頁の中身の左端 60px と 93px ずれる（実測）。
      → .t-container の左側だけを使う。式はこの頁のもの、右へ流すのは参照元のもの。 */
:where(.remind-gateway) .mb-12{ margin-bottom:48px }
:where(.remind-gateway) .t-container-left{ padding-left:calc(var(--column-unit) * 1) }
@media (min-width: 1024px){
  :where(.remind-gateway) .t-container-left{ padding-left:calc(var(--column-unit) * 2) }
}

/* ── §3 帯（ul）と 1 枚（li）──────────────────────────────────────────── */
:where(.remind-gateway) .relative{ position:relative }
:where(.remind-gateway) .absolute{ position:absolute }
:where(.remind-gateway) .inset-0{ inset:0 }
:where(.remind-gateway) .z-10{ z-index:10 }
:where(.remind-gateway) .block{ display:block }
:where(.remind-gateway) .flex{ display:flex }
:where(.remind-gateway) .grid{ display:grid }
:where(.remind-gateway) .flex-col{ flex-direction:column }
:where(.remind-gateway) .items-center{ align-items:center }
:where(.remind-gateway) .justify-center{ justify-content:center }
:where(.remind-gateway) .gap-x-0\.5{ -moz-column-gap:2px; column-gap:2px }
:where(.remind-gateway) .h-full{ height:100% }
:where(.remind-gateway) .w-full{ width:100% }
:where(.remind-gateway) .overflow-hidden{ overflow:hidden }
:where(.remind-gateway) .px-5{ padding-left:20px; padding-right:20px }
:where(.remind-gateway) .text-white{ --tw-text-opacity: 1; color:rgb(255 255 255 / var(--tw-text-opacity)) }

/* 写真の上に敷く暗幕（a の ::after）*/
:where(.remind-gateway) .after\:absolute:after{ content:var(--tw-content); position:absolute }
:where(.remind-gateway) .after\:inset-0:after{ content:var(--tw-content); inset:0 }
:where(.remind-gateway) .after\:block:after{ content:var(--tw-content); display:block }
:where(.remind-gateway) .after\:h-full:after{ content:var(--tw-content); height:100% }
:where(.remind-gateway) .after\:w-full:after{ content:var(--tw-content); width:100% }
:where(.remind-gateway) .after\:bg-black\/30:after{ content:var(--tw-content); background-color:#0000008c }  /* 参照元 #0000004d（bg-black/30）。実測 2.37:1 だったので bg-black/55 へ */

/* ── §4 カードの中身（題・説明・矢印）────────────────────────────────── */
:where(.remind-gateway) .grid-cols-\[auto_30px\]{ grid-template-columns:auto 30px }
:where(.remind-gateway) .grid-rows-2{ grid-template-rows:repeat(2,minmax(0,1fr)) }
:where(.remind-gateway) .col-start-1{ grid-column-start:1 }
:where(.remind-gateway) .col-start-2{ grid-column-start:2 }
:where(.remind-gateway) .row-span-1{ grid-row:span 1 / span 1 }
:where(.remind-gateway) .row-span-2{ grid-row:span 2 / span 2 }
:where(.remind-gateway) .row-end-1{ grid-row-end:1 }

:where(.remind-gateway) .font-bold{ font-weight:700 }
:where(.remind-gateway) .tracking-widest{ letter-spacing:.1em }
/* 参照元 .text-6xl{font-size:2.6rem;line-height:1.4}（1rem=10px なので 26px）*/
:where(.remind-gateway) .text-6xl{ font-size:26px; line-height:1.4 }
/* 参照元 .text-xl{font-size:1.5rem;line-height:1.5}（= 15px）。leading- が後で上書く */
:where(.remind-gateway) .text-xl{ font-size:15px; line-height:1.5 }
:where(.remind-gateway) .leading-\[calc\(24\/15\)\]{ line-height:1.6 }

/* 矢印の丸 */
:where(.remind-gateway) .h-\[30px\]{ height:30px }
:where(.remind-gateway) .w-\[30px\]{ width:30px }
:where(.remind-gateway) .rounded-full{ border-radius:9999px }
:where(.remind-gateway) .border{ border-width:1px }
:where(.remind-gateway) .border-solid{ border-style:solid }
:where(.remind-gateway) .border-white{ --tw-border-opacity: 1; border-color:rgb(255 255 255 / var(--tw-border-opacity)) }
:where(.remind-gateway) .bg-white\/20{ background-color:#fff3 }
/* 中の 2 つの印（点 と 矢羽）*/
:where(.remind-gateway) .h-1{ height:4px }
:where(.remind-gateway) .w-1{ width:4px }
:where(.remind-gateway) .h-3\.5{ height:14px }
:where(.remind-gateway) .w-3\.5{ width:14px }
:where(.remind-gateway) .fill-white{ fill:#fff }

/* ── §5 変形と所要時間 ──────────────────────────────────────────────────
   参照元は transition-property を書いていない（duration だけ）。既定の
   transition-property:all / timing:ease がそのまま効く。原文どおり。 */
:where(.remind-gateway) .scale-0{ --tw-scale-x: 0; --tw-scale-y: 0; transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }
:where(.remind-gateway) .scale-100{ --tw-scale-x: 1; --tw-scale-y: 1; transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }
:where(.remind-gateway) .duration-300{ transition-duration:.3s }
:where(.remind-gateway) .duration-500{ transition-duration:.5s }

/* ── §6 ホバー ──────────────────────────────────────────────────────────
   囲いも参照元の原文（@media (hover: hover) and (pointer: fine)）。
   any-hover:hover の上位集合＝指だけの機械では 1 つも当たらない。 */
@media (hover: hover) and (pointer: fine){
  :where(.remind-gateway) .group:hover .group-hover\:scale-0{ --tw-scale-x: 0; --tw-scale-y: 0; transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }
  :where(.remind-gateway) .group:hover .group-hover\:scale-100{ --tw-scale-x: 1; --tw-scale-y: 1; transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }
  :where(.remind-gateway) .group:hover .group-hover\:scale-105{ --tw-scale-x: 1.05; --tw-scale-y: 1.05; transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }
}

/* ── §7 768px 未満（参照元の max-md:）──────────────────────────────────── */
@media not all and (min-width: 768px){
  :where(.remind-gateway) .max-md\:flex-col{ flex-direction:column }
  :where(.remind-gateway) .max-md\:gap-y-\[1px\]{ row-gap:1px }
}

/* ── §8 768px 以上（参照元の md:）──────────────────────────────────────
   md:w-… だけ 2 枚→3 枚に直した。参照元は calc((100%-2px)/2)（間 2px が 1 つ）。
   3 枚だと間が 2 つなので calc((100%-4px)/3)。式の形は原文のまま。 */
@media (min-width: 768px){
  :where(.remind-gateway) .md\:mb-28{ margin-bottom:112px }
  :where(.remind-gateway) .md\:w-\[calc\(\(100\%-4px\)\/3\)\]{ width:calc((100% - 4px)/3) }
}

/* ── §9 1024px 以上（参照元の lg:）────────────────────────────────────── */
@media (min-width: 1024px){
  :where(.remind-gateway) .lg\:pl-\[60px\]{ padding-left:60px }
  :where(.remind-gateway) .lg\:pr-\[50px\]{ padding-right:50px }
  :where(.remind-gateway) .lg\:grid-cols-\[auto_60px\]{ grid-template-columns:auto 60px }
  :where(.remind-gateway) .lg\:h-\[60px\]{ height:60px }
  :where(.remind-gateway) .lg\:w-\[60px\]{ width:60px }
  :where(.remind-gateway) .lg\:h-2{ height:8px }
  :where(.remind-gateway) .lg\:w-2{ width:8px }
}

/* ── §9.5 1280px 以上（参照元の xl:）──────────────────────────────────────
   参照元は題の大きい段を lg（1024px）に置いている。ただし参照元のカードは
   2 枚並びで lg の時点で 639px あり、こちらは 3 枚並びで 320px しか無い。
   実測 1024px で題（40px）が矢印の丸に 26px 重なった（グリッドの auto 列の
   最小内容 176px > 割り当て 150px）ので、この段だけ参照元の 1 つ上の
   ブレークポイント xl（= 1280px。参照元の .xl\:mr-10 等と同じ値）へ移した。
   値・クラスの形は原文のまま（.lg\:text-\[4rem\] → .xl\:text-\[4rem\]）。
   参照元 .lg\:text-\[4rem\]{font-size:4rem}（1rem=10px なので 40px）*/
@media (min-width: 1280px){
  :where(.remind-gateway) .xl\:text-\[4rem\]{ font-size:40px }
}

/* ── §10 動きを減らす設定（参照元には無い。この頁の決まりとして 1 本足す）── */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-strength
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   strength — 選ばれる理由（横に並ぶ 4 つの箱）
   ──────────────────────────────────────────────────────────────────────────
   出典: https://bakuraku.jp/ のトップ、`.top-bg-group1` > `.top-intro`
         （2026-09-08 に headless Chrome + CDP で実測。
          rules.mjs = CSS.getMatchedStylesForNode / 自作 grep2.mjs = 全 CSSOM 走査）

   なぜこの節を選んだか（先に SmartHR / freee / サイボウズを当たった結果）:
     - smarthr.co.jp のトップに「横に並ぶ箱」の特長節は無い（節は 5 つ・すべて縦組み）
     - smarthr.jp には `.top-why-chosen`＝「SmartHRが選ばれる理由」があるが
       **1 列の縦積み**（`ul.list` は 536px 幅の 1 カラム）。横並びではない
     - corp.freee.co.jp の `.serviceList` は 3 箱・横並びだがロゴ＋文だけで番号も図も無い
     - www.cybozu.co.jp のトップは全部ニュース／製品カード。番号付きの特長節は無い
     - kintone.cybozu.co.jp / kaonavi / HRBrain も見た。HRBrain の
       `.reason-section`（POINT 01–03・丸い番号を -16deg 傾けて角に掛ける）は
       題材としては一番近いが **3 箱で固定**（`.card{max-width:306px}` +
       `justify-content:space-between` なので 4 枚入れると隙間 0 でくっつく）
     - バクラクの `.top-intro` だけが「4 箱・横並び・番号・題・説明・図」を全部持つ

   原文のまま持ってきたもの（宣言は 1 つも書き起こしていない）:
     .top-bg-group1 / .top-bg / .top-intro / .l-inner-main / .u-relative /
     .top-intro__title / __lead / __list-title / __list-wrapper / __list /
     .top-intro-item と ::after / :last-child / __label / __label div /
     __title / __desc / __image / __image img /
     字の様式 .c-headline-56b .c-title-24b .c-body-18b .c-body-14r .c-label-12b
     .c-en-24sb と、その `tab:` / `pc:` 版、.u-text-center .u-color-inverse
     .u-mb-lg .u-mb-3xl .u-py-4xl .u-pt-2xl .u-pb-3xl

   変えたのは 5 つだけ:
     1. 変数名  … 参照元の `--spacing_xl` 等は名前が一般的すぎて他の部品とぶつかる。
                  **値は 1 つも変えずに** `--strength-` を頭に付けただけ（指示どおり）
     2. 色      … `.top-bg` の 2 段目までと番号チップの地を Remind の青へ
                  （#013572/#0053b1/#01358a/#2d81ec → --color-oki-red2 / --color-oki-red）。
                  比率・角度・停止位置は原文のまま
     3. 書体    … `--font-family-en` の Montserrat を、この頁が既に読んでいる Figtree へ
     4. 土台    … 参照元は `body{line-height:1.5（単位無し）}` の上に乗っている。
                  oki-copy の body は 1.4 なので、その土台を **この節の中だけ** に
                  置き直した（下の §0）。これが無いと `.top-intro-item__desc` の
                  18px（=12px×1.5）と `.top-intro__list-title` の 66px がずれる
     5. 動きの停止 … 参照元に prefers-reduced-motion は 1 本も無い。こちらの決まりで
                  1 本足した（§5。足したものだと分かるよう節を分けてある）

   持ってこなかったもの:
     - 節の末尾にある資料ダウンロードのボタン（`.top-button` 一式）。別部品なので外した
     - `* { scroll-behavior: auto !important }`。参照元の全域規則で、この部品の話ではない

   ホバー: 参照元の CSS に `.top-intro` 系の `:hover` は **1 本も無い**（grep2.mjs で確認）。
           無いものは作らない。よって `@media (any-hover:hover)` の中身も空。
   JS:     同じく無し（`js-` の印も付いていない）。strength.js は空。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── :root（参照元 :root の値そのまま。名前だけ --strength- を付けた）──────── */

/* ══ §0 土台 ══════════════════════════════════════════════════════════════
   参照元の body は **単位無しの 1.5**（body 直下に 10px の箱を挿して 15px と実測。
   150% だと 24px が固定で継がれてしまい、12px の説明文が 24px 行になる）。
   oki-copy の body は 1.4 なので、その土台を節の中だけ 1.5 に戻す。
   これが無いと `.top-intro__list-title`（規則に line-height が無い）が 66px→24px、
   `.top-intro-item__desc` が 18px→22.4px にずれる。 */
.top-bg-group1{ line-height: 1.5 }

/* ══ §1 帯（地）══════════════════════════════════════════════════════════
   出典: bakuraku.jp  .top-bg-group1 / .top-bg
   `.top-bg` は節と同じ高さの絶対配置。`.top-intro` が position:relative なので上に乗る。 */
.top-bg-group1{ position: relative }
.top-bg{
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  background: linear-gradient(var(--strength-bg-top-1) 0%, var(--strength-bg-top-2) 60%, var(--strength-smoke-5) 100%);
}

/* ══ §2 節と器 ════════════════════════════════════════════════════════════
   出典: bakuraku.jp  .top-intro / .l-inner-main / .u-relative */
.top-intro{ padding-top: var(--strength-spacing_3xl) }
.u-relative{ position: relative }

/* 1080px 以上は左右の余白が 0（max-width だけ）。つまり 1080〜1130px の間は
   箱が画面の端に着く。参照元も同じ挙動で、そこは直していない。 */
.l-inner-main{
  max-width: var(--strength-inner-main-pc);
  margin-left: auto;
  margin-right: auto;
}
@media (max-width: 1079px){
  .l-inner-main{
    max-width: 100%;
    padding-left: var(--strength-gutter-sp);
    padding-right: var(--strength-gutter-sp);
  }
}

/* ══ §3 見出し・リード・英字の小見出し ════════════════════════════════════
   出典: bakuraku.jp  .top-intro__title / __lead / __list-title
   （!important は参照元のまま。字の様式クラスより後に効かせるために付いている） */
.top-intro__title{ font-weight: 700 !important }
@media (max-width: 1079px){
  .top-intro__title{ line-height: 150% !important }
}

.top-intro__lead{
  font-weight: 400 !important;
  line-height: 175% !important;
}

.top-intro__list-title{
  font-size: 44px;
  font-weight: 600;
  font-family: var(--strength-font-family-en) !important;
}

/* ══ §4 4 つの箱 ══════════════════════════════════════════════════════════
   出典: bakuraku.jp  .top-intro__list-wrapper / __list / .top-intro-item 一式
   ・PC(1080-)  : 4 列 1fr、間 32px
   ・~1079px    : 列を 257px 固定にして、器を overflow:auto の横帯にする。
                  器の右外余白 -24px は、器の親の左右 24px のうち右だけ打ち消して
                  画面端まで見せるため。**頁そのものは横に伸びない**
   ・4 枚目だけ  : 地を白＋青い光、続きの ▶ は消す（＝ここで終わり、の印） */
@media (max-width: 1079px){
  .top-intro__list-wrapper{
    overflow: auto;
    margin-right: calc(-1 * var(--strength-spacing_lg));
  }
}

.top-intro__list{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--strength-spacing_xl);
}
@media (max-width: 1079px){
  .top-intro__list{ grid-template-columns: repeat(4, 257px) }
}

.top-intro__list .top-intro-item:last-child{
  background: var(--strength-general-white);
  box-shadow: var(--strength-bakuraku-20) 0px 0px 24px 0px;
}

/* ↓ `--strength-bg-secondary` は **わざと定義していない**。参照元も
   `var(--bg-secondary, #f2f5f9)` と書いておきながら `--bg-secondary` を持っておらず、
   実際に効いているのは後ろの #f2f5f9。同じ形をそのまま残してある（後述の
   `--strength-text-inverse` も同じ）。 */
.top-intro .top-intro-item{
  border-radius: var(--strength-radius_md, 8px);
  background: var(--strength-bg-secondary, #f2f5f9);
  padding: var(--strength-spacing_lg);
  padding-bottom: 0;
  display: flex;
  flex-direction: column;
  position: relative;
}

/* 箱と箱をつなぐ ▶（間 32px のまん中に置かれる。地の青の上なので白のまま） */
.top-intro .top-intro-item::after{
  content: "";
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2217%22%20height%3D%2219%22%20viewBox%3D%220%200%2017%2019%22%20fill%3D%22none%22%3E%20%3Cpath%20d%3D%22M16.4265%208.42772C17.1123%208.80873%2017.1123%209.79503%2016.4265%2010.176L1.48564%2018.4765C0.819112%2018.8468%20-8.33269e-07%2018.3648%20-7.9994e-07%2017.6024L-7.42881e-08%201.00139C-4.09589e-08%200.238909%200.819111%20-0.243059%201.48564%200.127236L16.4265%208.42772Z%22%20fill%3D%22white%22%2F%3E%3C%2Fsvg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  width: 20px;
  height: 18px;
  position: absolute;
  inset: 80px -30px auto auto;
}
.top-intro .top-intro-item:last-child .top-intro-item__image{ margin-bottom: auto }
.top-intro .top-intro-item:last-child::after{ display: none }

.top-intro .top-intro-item__label{
  display: flex;
  gap: 4px;
  margin-bottom: 12px;
}
.top-intro .top-intro-item__label div{
  border-radius: 2px;
  background: linear-gradient(105deg, var(--strength-chip-1) 1.91%, var(--strength-chip-2) 100%);
  color: var(--strength-text-inverse, #fff);
  padding: 0px 7px;
  align-content: center;
}
.top-intro .top-intro-item__label div:nth-child(2){
  font-size: 12px;
  font-weight: bold;
}
.top-intro .top-intro-item__label div:first-child{
  font-weight: 600;
  padding: 1px 7px;
  font-family: var(--strength-font-family-en);
  font-size: 16px;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  text-align: center;
}

.top-intro .top-intro-item__title{ margin-bottom: 12px }
.top-intro .top-intro-item__desc{
  font-size: 12px;
  padding-bottom: var(--strength-spacing_md);
}
.top-intro .top-intro-item__image{ margin-top: auto }
.top-intro .top-intro-item__image img{ margin: auto }

/* ══ §5 字の様式と道具クラス ══════════════════════════════════════════════
   出典: bakuraku.jp（素 → `tab:`(~1079) → `pc:`(1080~) の順で書かれている。
   特異度が同じなので、この並び順そのものが効き方を決めている＝順序も原文のまま） */
.c-headline-56b{
  font-size: var(--strength-font-size-4l);
  font-family: var(--strength-font-family-jp);
  font-weight: var(--strength-font-weight-b);
  font-style: normal;
  line-height: var(--strength-line-height-md);
  letter-spacing: var(--strength-letter-spacing-lg);
  text-decoration: none;
  text-transform: none;
}
.c-title-24b{
  font-size: var(--strength-font-size-xl);
  font-family: var(--strength-font-family-jp);
  font-weight: var(--strength-font-weight-b);
  font-style: normal;
  line-height: var(--strength-line-height-sm);
  letter-spacing: var(--strength-letter-spacing-lg);
  text-decoration: none;
  text-transform: none;
}
.c-body-18b{
  font-size: var(--strength-font-size-md);
  font-family: var(--strength-font-family-jp);
  font-weight: var(--strength-font-weight-b);
  font-style: normal;
  line-height: var(--strength-line-height-md);
  letter-spacing: var(--strength-letter-spacing-md);
  text-decoration: none;
  text-transform: none;
}
.c-body-14r{
  font-size: var(--strength-font-size-xs);
  font-family: var(--strength-font-family-jp);
  font-weight: var(--strength-font-weight-r);
  font-style: normal;
  line-height: var(--strength-line-height-lg);
  letter-spacing: var(--strength-letter-spacing-md);
  text-decoration: none;
  text-transform: none;
}
.c-label-12b{
  font-size: var(--strength-font-size-2s);
  font-family: var(--strength-font-family-jp);
  font-weight: var(--strength-font-weight-b);
  font-style: normal;
  line-height: var(--strength-line-height-sm);
  letter-spacing: var(--strength-letter-spacing-md);
  text-decoration: none;
  text-transform: none;
}
.c-en-24sb{
  font-size: var(--strength-font-size-xl);
  font-family: var(--strength-font-family-en);
  font-weight: var(--strength-font-weight-b);
  font-style: normal;
  letter-spacing: var(--strength-letter-spacing-lg);
  text-decoration: none;
  text-transform: none;
}
.u-text-center{ text-align: center }
.u-color-inverse{ color: var(--strength-color-text-inverse) }
.u-mb-lg{ margin-bottom: var(--strength-spacing_lg) }
.u-mb-3xl{ margin-bottom: var(--strength-spacing_3xl) }
.u-py-4xl{
  padding-top: var(--strength-spacing_4xl);
  padding-bottom: var(--strength-spacing_4xl);
}
.u-pt-2xl{ padding-top: var(--strength-spacing_2xl) }
.u-pb-3xl{ padding-bottom: var(--strength-spacing_3xl) }

@media (max-width: 1079px){
  .tab\:c-title-24b{
    font-size: var(--strength-font-size-xl);
    font-family: var(--strength-font-family-jp);
    font-weight: var(--strength-font-weight-b);
    font-style: normal;
    line-height: var(--strength-line-height-sm);
    letter-spacing: var(--strength-letter-spacing-lg);
    text-decoration: none;
    text-transform: none;
  }
  .tab\:c-body-14r{
    font-size: var(--strength-font-size-xs);
    font-family: var(--strength-font-family-jp);
    font-weight: var(--strength-font-weight-r);
    font-style: normal;
    line-height: var(--strength-line-height-lg);
    letter-spacing: var(--strength-letter-spacing-md);
    text-decoration: none;
    text-transform: none;
  }
  .tab\:c-en-24sb{
    font-size: var(--strength-font-size-xl);
    font-family: var(--strength-font-family-en);
    font-weight: var(--strength-font-weight-b);
    font-style: normal;
    letter-spacing: var(--strength-letter-spacing-lg);
    text-decoration: none;
    text-transform: none;
  }
  .tab\:u-mb-lg{ margin-bottom: var(--strength-spacing_lg) }
  .tab\:u-pt-2xl{ padding-top: var(--strength-spacing_2xl) }
  .tab\:u-pb-3xl{ padding-bottom: var(--strength-spacing_3xl) }
}

@media (min-width: 1080px){
  .pc\:u-text-center{ text-align: center }
}

/* ══ §6 ホバー ════════════════════════════════════════════════════════════
   参照元の CSS に `.top-intro` 系の :hover は 1 本も無い（全 CSSOM を走査して確認）。
   無い作り込みは足さない。この枠は「見た結果、空だった」ことを残すために置いてある。 */
@media (any-hover: hover){
  /* （参照元に該当規則なし） */
}

/* ══ §7 動きを減らす ══════════════════════════════════════════════════════
   ここだけ参照元に無い。こちらの決まりで 1 本足したもの。
   参照元は横帯を素の overflow:auto で作っており、頁側の scroll-behavior:smooth を
   継ぐと指示に反して滑るので、その 1 点だけ止める。見た目は 1px も動かない。 */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-flow
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   flow — 加盟までの流れ（STEP 01〜05 が縦の線でつながる図）
   ────────────────────────────────────────────────────────────────────────────
   参照元: https://jp.sansan.com/plan/ の `<section id="flow">`（「導入の流れ」）
   規則の出どころ（実ファイル）:
     .mpu1lu0 〜 .mpu1lu8       … /_next/static/css/4464f9f909d8e08e.css
     .vu0myo0 / .vu0myo2 / .vu0myo5 / .vu0myoe … /_next/static/css/1c55254dd012f261.css
     .sap2o40                   … /_next/static/css/202df7a1890ceefb.css
     .z4jpy7*                   … /_next/static/css/5d5777f7f7e6cde6.css
     .p9qp2c*                   … /_next/static/css/0ef5a1e643c14d3f.css
     ._1xo1mbu*                 … /_next/static/css/b517f733ec6a798b.css
     ._1pa5k8x*                 … /_next/static/css/77de41d4f289675d.css
   セレクタ名は参照元のまま（vanilla-extract のハッシュ名）。読み替えは:
     .mpu1lu0=一覧 / .mpu1lu1=1 段 / .mpu1lu2=左（STEP＋題）/ .mpu1lu3=STEP の字 /
     .mpu1lu6=右（説明）※縦線はこれの ::before / .mpu1lu8=右下のリンク置き場
     .sap2o40=段組み / .z4jpy7*=見出し書体 / .p9qp2c*=本文書体 / ._1xo1mbu*=文字リンク

   なぜ kaminashi / raksul / smarthr を使わなかったか（上から試した結果）:
     kaminashi.jp     … 「導入までの流れ」はある。ただし 1 段 = 280×280 の写真 +
                        段の間に矢印の SVG 画像で、番号も線も無い（.symbol-6 の実規則は
                        `flex-direction:row; width:1440px` だけ）。線でつなぐ図として
                        持ってこられる規則が存在しない。
     corp.raksul.com  … 描画後の本文に STEP も「流れ」も 0 件。
     smarthr.co.jp    … 同上（smarthr.jp / pricing / support も描画して 0 件）。
   → 3 つとも「読めない」のではなく「その部品が無い」ので、同等の日本語 BtoB として
     Sansan の #flow を使った。cybozu の kintone /price にも Step 01〜04 はあるが、
     段の間は矢印の SVG 画像・段ごとに専用イラストが要る・STEP の字が 10px なので採らず。

   原文から変えたところ（これ以外は 1 行も触っていない。詳細は報告に 1 行ずつ）:
     1. 参照元は html{font-size:62.5%}（= 1rem 10px）を敷いている。この 1 枚は
        16px 基準なので rem をそのまま置くと 1.6 倍になる。数値は原文のまま残し、
        単位だけ --flow-rem（.625rem = 10px）へ読み替えた（20rem → calc(20*var(--flow-rem))）。
     2. 色は :root のトークンへ差し替え（この 1 枚の既存トークンだけを使い、新色は作らない）。
     3. 参照元固有の書体名（sofia-pro）は落とし、太さ・行送り・字間・palt は原文のまま。
     4. vw の字に max(12px, …) の床を敷いた（式そのものは触っていない）。
     5. ホバーは @media (any-hover:hover) で囲んだ（原文は (hover:hover)）。
     6. 到達しない分岐 .mpu1lu4 / .mpu1lu5 / .mpu1lu7 / .z4jpy7f は落とした
        （出荷中の markup が 1 つも使っておらず、値も 62.5% 前提でない旧版の残骸）。
     7. 節の外側の空きだけ、参照元の .vu0myo2（padding:6rem 0）を落として
        この 1 枚の既存の節送りの式に差し替えた（理由と実測は下のブロックに書いた）。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時はこの 1 行を土台の :root へ畳む）──────────────────── */

/* ── 節の送り（出典: この 1 枚の style.css の #technologies-and-innovation / #okis-news。
      元は OKI の規則）────────────────────────────────────────────────────
   参照元の節は `.vu0myo2{padding:6rem 0}` を自分で持っている（＝ Sansan の節送りは
   上下 60px）。この 1 枚の節送りは 150px（PC）/ 67px（SP）で、実測すると参照元の
   60px のままでは前の節との間だけ 60px になり、他の節と食い違った。
   図そのものではない「節の外側の空き」なので、この 1 枚の既存の式に差し替えた。
   → 実測: 前の節との間 60px → 150px（他の節と同じ）。下側は元から 150px。 */
#partner-flow{
  margin-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  #partner-flow{
    margin-top:calc(150 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}

/* ── 節の器（出典: 1c55254dd012f261.css）──────────────────────────────────
   `.vu0myom` / `.vu0myoh` は参照元で宣言を 1 つも持たない（vanilla-extract の
   空 variant）ので markup にだけ残し、規則は書いていない。 */
.vu0myo0{ position:relative }
.vu0myo5{ max-width:calc(120 * var(--flow-rem)); margin:0 auto }
.vu0myoe{ max-width:calc(120 * var(--flow-rem)) }
.vu0myoe,.vu0myof{ margin-left:auto; margin-right:auto }

/* ── 段組み（出典: 202df7a1890ceefb.css）──────────────────────────────────
   見出しと一覧の間の空きは、参照元と同じくこの grid の gap が持つ
   （PC 8rem / SP 8.5334vw。数値は markup の inline 変数で参照元のまま）。 */
.sap2o40{
  --grid-columns:repeat(1,minmax(0,auto));
  --grid-columns-sp:repeat(1,minmax(0,auto));
  --grid-gap:calc(2.4 * var(--flow-rem));
  --grid-gap-sp:4.2667vw;
  --grid-align-items:stretch;
  --grid-justify-content:flex-start;
  display:grid;
  grid-template-columns:var(--grid-columns);
  grid-gap:var(--grid-gap);
  gap:var(--grid-gap);
  align-items:var(--grid-align-items);
  justify-content:var(--grid-justify-content);
}

/* ── 流れの図 本体（出典: 4464f9f909d8e08e.css）──────────────────────────
   縦の線は .mpu1lu6:before。1 段ぶんの高さ（100%）の 1px を、左から 20rem
   ＝ STEP 列の右端に置く。段と段の間は .mpu1lu0 の row-gap 1.6rem だけ空く。 */
.mpu1lu0{
  display:flex; flex-direction:column;
  row-gap:calc(1.6 * var(--flow-rem));
  max-width:calc(102.4 * var(--flow-rem));
  width:100%; margin:0 auto;
}
.mpu1lu1{
  position:relative; display:grid;
  grid-template-columns:calc(20 * var(--flow-rem)) 1fr;
  grid-gap:calc(4 * var(--flow-rem)); gap:calc(4 * var(--flow-rem));
  min-height:calc(13.6 * var(--flow-rem));
}
.mpu1lu1:first-child{ padding-top:0 }
.mpu1lu1:last-child{ border-bottom:none }
.mpu1lu2{ display:flex; flex-direction:column; gap:calc(.4 * var(--flow-rem)); align-self:center }
.mpu1lu3{
  font-size:calc(1.4 * var(--flow-rem));
  font-weight:600; line-height:1.4;
  color:#6b6b6b;      /* 参照元: #b5cce0 → 部品は --color-oki-gray(#909090) だったが
                        白地 14px で 3.19:1。この頁の日付と同じ #6b6b6b（5.74:1）へ */
  letter-spacing:.03em;
}
.mpu1lu6{ display:flex; flex-direction:column; gap:calc(1.6 * var(--flow-rem)); align-self:center }
.mpu1lu6:before{
  content:""; position:absolute; top:0;
  left:calc(20 * var(--flow-rem));
  width:calc(.1 * var(--flow-rem)); height:100%;
  background-color:var(--color-oki-line-gray);   /* 参照元: #e3e3e3 */
}

@media (max-width:768px){
  .vu0myo5{ max-width:100% }
  .vu0myoe,.vu0myof{ max-width:100%; padding:0 4.2667vw }
  .sap2o40{ grid-template-columns:var(--grid-columns-sp); gap:var(--grid-gap-sp) }

  .mpu1lu0{ row-gap:0 }
  .mpu1lu0,.mpu1lu1{ border-bottom:1px solid var(--color-oki-line-gray) }
  .mpu1lu1{ grid-template-columns:1fr; gap:2.1334vw; padding:4.2667vw 0 }
  .mpu1lu2{ align-items:flex-start; gap:1.0667vw }
  .mpu1lu3{ font-size:max(12px, 3.2vw) }        /* 原文 3.2vw に床だけ足した */
  .mpu1lu6{ gap:3.7334vw }
  .mpu1lu6:before{ content:none }
  .mpu1lu8{ display:flex; justify-content:flex-end }
}

/* ── 段の題の書体（出典: 5d5777f7f7e6cde6.css）────────────────────────────
   .z4jpy70 の font-family（sofia-pro 一式）は落とし、太さ・行送り・字間・palt は原文のまま。
   .z4jpy7f は参照元で宣言を持たない空 variant なので落とした。 */
.z4jpy70{ font-weight:700; line-height:1.4; letter-spacing:.03em; font-feature-settings:"palt" }
.z4jpy7b{ font-size:calc(2.4 * var(--flow-rem)); font-weight:700 }
.z4jpy7j{ text-align:left }
.z4jpy7o{ color:var(--color-oki-red) }          /* 参照元: var(--_1l3pi61y) = #004e98 */
@media (max-width:768px){
  .z4jpy70{ letter-spacing:.02em }
  .z4jpy7b{ font-size:max(12px, 4.8vw) }        /* 原文 4.8vw に床だけ足した */
}

/* ── 説明の書体（出典: 0ef5a1e643c14d3f.css）──────────────────────────────
   .p9qp2c0 の font-family（var(--_1p7shmp0) = sofia-pro 一式）は落とした。
   行送り 1.8 / 字間 .03em / palt / 太さ 500 は参照元の変数の値そのまま。 */
.p9qp2c0{ line-height:1.8; letter-spacing:.03em; font-feature-settings:"palt" }
.p9qp2c1{ font-size:calc(1.6 * var(--flow-rem)) }
.p9qp2c4,.p9qp2c5{ font-weight:500 }            /* 参照元: var(--_1p7shmp4) = var(--fw-medium) = 500 */
.p9qp2c7{ margin:0 }
.p9qp2cb{ text-align:left }
.p9qp2cf{ color:var(--color-oki-black) }        /* 参照元: var(--_1l3pi61u) = #1a1a1a */
@media (max-width:768px){
  .p9qp2c1{ font-size:max(12px, 3.7334vw) }     /* 原文 3.7334vw に床だけ足した */
}

/* ── 文字リンク（出典: b517f733ec6a798b.css / 77de41d4f289675d.css）────────
   font-family は落とした。transition の秒数と曲線（.6s linear）は原文のまま。 */
._1xo1mbu0{
  display:inline-flex; align-items:center; gap:calc(.8 * var(--flow-rem));
  color:var(--color-oki-red);                   /* 参照元: #004e98 */
  font-weight:700;
  font-size:calc(1.6 * var(--flow-rem));
  line-height:1.4; letter-spacing:.03em;
  text-decoration:none; cursor:pointer;
  transition:color .6s linear, text-decoration .6s linear;
}
._1xo1mbu0:active,a:active ._1xo1mbu0{ text-decoration:underline }
._1xo1mbu3{
  display:inline-flex; align-items:center; justify-content:center;
  position:relative; top:.08em;
  width:calc(1.6 * var(--flow-rem)); height:calc(1.6 * var(--flow-rem));
  flex-shrink:0;
}
._1pa5k8x0{ display:inline-block; flex-shrink:0; vertical-align:middle }
._1pa5k8x1{ width:calc(1.6 * var(--flow-rem)); height:calc(1.6 * var(--flow-rem)) }

/* 原文は @media (hover:hover)。指示に合わせて any-hover に置き換えた */
@media (any-hover:hover){
  ._1xo1mbu0:hover,a:hover ._1xo1mbu0{ text-decoration:underline }
}
@media (max-width:768px){
  ._1xo1mbu0{ gap:2.1334vw; font-size:max(12px, 4vw) }   /* 原文 4vw に床だけ足した */
  ._1xo1mbu3{ width:3.7334vw; height:3.7334vw }
  ._1pa5k8x1{ width:3.7334vw; height:3.7334vw }
}

/* ── 動きを減らす設定 ────────────────────────────────────────────────────
   この部品の動きは文字リンクの色替えだけ。JS は 1 つも要らない（線も段も素の CSS）。 */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-result
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   result — 数字で見る変化（入れる前と、入れたあと）
   ──────────────────────────────────────────────────────────────────────────
   出典: https://www.persol-group.co.jp/sustainability/well-being/worlddata/
         （「はたらいて、笑おう。」グローバル調査サイト。参照元候補の 1 番目
           www.persol-group.co.jp の中にある頁）
         規則は同サイトが配っている  assets/styles/index.css の
         `.p-ranking { … }` 〜 `.p-concept {` 直前までの 482 行を写した。
         2026-09-08 に headless Chrome + CDP で二重に確認している:
           1) rules.mjs（CSS.getMatchedStylesForNode）で
              `.p-ranking__table-head` / `__table-head__result` / `__table-grid`
              に「実際に効いている宣言」を取り、下の写しと一字一句を突き合わせた
              （記録: /tmp/rules-ranking.txt）
           2) 頁のランキングを実際に開いて（`.l-header__ranking-button` を click）
              行 143 本が描かれた姿を撮り、DOM の 1 行を採取した
              （記録: /tmp/ranking.png、行の outerHTML）

   なぜこの節を選んだか（他を当たった結果）:
     - smarthr.co.jp 系は recruit.smarthr.co.jp/environment/#number に
       「数字で見るSmartHR」がある**が、図はすべて出来合いの SVG 画像**
       （/_astro/number01.*.svg 等）。CSS に図の作りが無いので「規則ごと移植」が
       できない
     - corp.freee.co.jp のトップは節 6 つ・図ゼロ（headless で実測）
     - www.persol-group.co.jp のトップの OUR GROUP TODAY は大きい数字＋アイコンだけ
       （図なし）、/special/culturedeck/ の `c-summary__circle` は
       **文字を丸で囲んだもの**でグラフではない
     - この worlddata の `.p-ranking` だけが「帯・目盛り・前の値」を全部
       CSS で持っている（conic-gradient / stroke-dasharray を使う頁は 3 サイトに無い）

   図の作り（参照元のまま）:
     ・0〜100 の目盛りを `.p-ranking__table-head__result` が 11 等分で置き、
       その裏に `.p-ranking__table-grid` が 10 本の縦線を opacity .13 で敷く
     ・行ごとに太い帯 `.p-ranking__bar-chart__current`（24px・縁つき）と、
       その下に細い帯 `.p-ranking__bar-chart__previous`（8px）が並ぶ
     ・帯の幅は**参照元も HTML の inline style で与えている**（実測した 1 行:
       `<div class="p-ranking__bar-chart__current" style="width: 96.103%;">`）。
       こちらも同じやり方にしたので、JS が 1 行も動かなくても帯は出る
     ・右の数字は `.p-ranking__label__current` と `__previous`。後者は
       CSS の ::before/::after が丸括弧を付ける

   原文のまま持ってきた規則（値は 1 つも書き起こしていない）:
     .p-ranking__head / __title と ::before / __table-head と ::after /
     __table-head__summary と > li と :last-child / __table-head__rank と
     > .is-previous / __table-head__result / __body / __contents /
     __table-grid と > * / __list と > li と :hover::after /
     __summary / __question-ranks / __question-previous-rank と ::before ::after /
     __filter / __question-subject /
     __country-name / __country-name__ja / __country-name__en /
     __result / __chart / __chart__labels /
     __bar-chart__current / __bar-chart__previous /
     __label__previous と ::before ::after / __foot / __note--mobile
     ＋ @media (max-width: 768px) の同名 21 規則
     ＋ 字の様式 .c-typography__sans-en__{subtitle1,body1,caption1} /
       .c-typography__sans-ja__{subtitle2,body1,body2,caption1,caption1--mobile} /
       .c-typography__serif__headline1 と、その max-width:768px 版

   変えたところ（1 行ずつ）:
     1. 色    … 参照元の直書き 5 色をトークンにして中身を Remind の青へ。
                #EFE94D→--result-ground / #000→--result-ink /
                #EFE9DE→--result-accent と --result-fill /
                #aaa449→--result-fill-line / #c2bc54→--result-previous。
                比率・太さ・不透明度は 1 つも触っていない。
                **地より太い帯の方が明るい**という参照元の関係は崩していない。
                最初これを反転（地=薄青／帯=濃紺）して組んだところ、SP で
                `__chart__labels` が帯の上に重なる作りのため濃紺の上に濃紺の字が
                乗って読めなくなった。実測（375px の写真）で見つけて戻した
                なお参照元は #EFE9DE を「見出しの下敷き」と「太い帯の中」の
                **2 つの役割**に使い回している。役割ごとに 2 トークンへ分けた
     2. 器    … 参照元の `.p-ranking` は全画面のかぶせ物（position:fixed /
                height:100vh / z-index:100 / pointer-events:none）で、中身は
                `.p-ranking__container{visibility:hidden}` を JS が
                `.is-visible` で開ける作り。**これは「初期値を不可視にして JS で戻す」
                そのもの**なので丸ごと外し、素の `<section class="result">` に置いた。
                併せて `__background`（height:0 / visibility:hidden の演出用の地）、
                `__close-button`、`.is-visible` の 4 規則を落とした
     3. 器2   … `.p-ranking__container` から height:100% と visibility:hidden を外した
                （100vh のパネル前提の宣言。grid の行組みは原文のまま）
     4. 器3   … `.p-ranking__body` から overflow-y:scroll を外した
                （パネル内スクロール前提。頁の節では常時スクロールバーが出るだけ）
     5. 列    … `.p-ranking__summary` / `__table-head__summary` の
                `grid-template-columns: 80px 48px 48px 1fr` から、参照元固有の
                外部指標 2 列（WHR / GDP）を落として `80px 1fr` にした。
                mobile の `72px 40px 40px 1fr` も同じ理由で `72px 1fr`。
                併せて使い道の無くなった `__whr-rank` / `__gdp-rank` を落とした
     6. 幅    … 5 の 80px / 72px は参照元の中身（順位「1」と「(5)」）に合わせた幅で、
                こちらの中身（「125」と「(135)」）が入らない。実測して
                104px / 96px に広げた（式の形は同じ。§実測の記録は報告に）
     7. 絞り  … `__question-buttons`（Q1-Q3）と `__area-buttons`（地域）は
                この頁の操作。押しても何も起きない飾りを出さないため落とした。
                入れ物の `__filter`（padding-bottom:48px / margin-bottom:16px）と
                その中に絶対配置される `__question-subject` は**規則ごと残し**、
                頭の 2 段組み（左＝題／右＝時点、下の帯＝一文）として使っている
     8. 指    … `.p-ranking__list > li{cursor:pointer}` を落とした。参照元の行は
                押すと国の詳細が開くが、こちらの行は押せない
     9. ホバー … 参照元は `@media (min-width: 768px)` で囲っている。こちらの決まりに
                合わせて `and (any-hover: hover)` を足した（条件は原文＋1 つ）
    10. 文言  … `__table-head::after` の `'（前年結果）'` → `'（　）は残り'`、
                mobile 版の `'*（）は前年の調査結果'` → `'*（　）は残り'`
    11. 書体  … UniversalSans / YakuHanJPs / YuGothic / Shippori Mincho は
                こちらで使えないので落とし、和文は "Noto Sans JP"、
                欧文は既にこの頁が読んでいる "Figtree" にした。重さ・字送り・行送りは原文のまま
    12. 12px  … 参照元の caption1（10px）と sans-ja__body2（11px）は 12px 未満。
                `max(12px, 10px)` の形で床を敷いた（元の数字が読めるように式で残した）
    13. 動き  … 参照元の `.p-ranking` に prefers-reduced-motion は 1 本も無い。
                こちらの決まりで最後に 1 本足した（§5）
    14. 高さ  … `.p-ranking__list > li{height:48px}` と SP の `__summary{height:24px}`
                を auto + min-height に変えた。参照元の題は国名で必ず 1 行だが、
                こちらは文なので 2 行になる行がある。**切る（ellipsis）のではなく
                伸ばす**方を採った。実測で見つけた断面は 2 つ:
                  ・375px … `__summary` が ch=24 / sh=36（題が 2 行）
                  ・1024px … 行が 48px 固定のまま題が 2 行になり、
                             2 行目が下の罫をまたいで次の行に重なっていた
                             （写真 shot-1024.png の 1 回目）
    16. 縦の伸び … 14 で行の高さを auto + min-height にしたため、
                `__summary` / `__result` / `__chart` の `height: 100%` が
                「親の高さが不定 → auto に解決」しつつ**指定はある**扱いになり、
                flex の stretch が効かなくなった（実測: 1440px で行 48px に対し
                summary が 24px・result が 44px で上端に寄っていた）。
                この 3 つを `height: auto` に変えて stretch に戻した。
                参照元では親の高さが 48px 固定だったので `100%` と `auto`+stretch は
                同じ結果になる。**見た目は参照元と同じまま、行が伸びるときだけ追従する**。
                `__chart` だけは親が `align-items:center` の grid なので
                `align-self: stretch` を 1 行足した（これが無いと帯が 2px 下がり、
                左の題と高さが合わない。実測で合わせた）
    15. 土台  … §0 のリセットは `:where()` で書いた。`:is()` にすると型セレクタの
                特異度（0,1,1）を持ってしまい、`.p-ranking__body{padding:0 80px}`
                （0,1,0）を打ち消す。最初 `:is()` で書いて 80px の余白が丸ごと
                死んでいたのを実測で見つけた

   持ってこなかったもの: `_:-ms-lang(x)::-ms-backdrop` 系 16 規則（IE11 向けの
   到達しない分岐）、`__open-button`（HTML に存在しない）。
   JS: 参照元の帯は JS が幅を書くが、こちらは HTML の inline style で静かに置く。
       result.js は空。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── :root（参照元の直書き色を、役割ごとにトークンへ。中身は Remind の青）──── */

/* ══════════════════════════════════════════════════════════════════════════
   §0 節の器 — 参照元のかぶせ物（position:fixed / visibility:hidden）の代わり。
       参照元は Meyer リセット（`font: inherit` / `body{line-height:1}`）の上に
       乗っているので、その土台だけをこの節の中に置き直した。
       ここは移植ではなく置き換え。JS が動かなくても中身は最初から見える。
   ══════════════════════════════════════════════════════════════════════════ */
.result{
  background-color: var(--result-ground);
  color: var(--result-ink);
  line-height: 1;                     /* 参照元 body{line-height:1} 相当 */
  padding: 56px 0 40px;
}
.result :where(h2,h3,p,ul,li,div,span){
  margin: 0; padding: 0; border: 0;
  font-size: 100%; font: inherit; vertical-align: baseline;
}
.result :where(ul){ list-style: none }

/* ══════════════════════════════════════════════════════════════════════════
   §1 字の様式（出典: 同 index.css の `.c-typography__…`）
       家族名だけ差し替え、大きさ・重さ・字送り・行送りは原文のまま。
       10px / 11px には max(12px, …) の床を敷いた。
   ══════════════════════════════════════════════════════════════════════════ */
.c-typography__serif__headline1{
  font-family: "Noto Sans JP", system-ui, sans-serif;   /* 参照元 YakuHanMPs, "Shippori Mincho B1", serif */
  font-size: 32px;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 48px;
}
.c-typography__sans-en__subtitle1{
  font-family: "Figtree", system-ui, -apple-system, BlinkMacSystemFont, sans-serif; /* 参照元 UniversalSans, … */
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 32px;
}
.c-typography__sans-en__body1{
  font-family: "Figtree", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 24px;
}
.c-typography__sans-en__caption1{
  font-family: "Figtree", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: max(12px, 10px);          /* 参照元 10px。12px の床 */
  font-weight: 400;
  letter-spacing: 0.05em;
  line-height: 16px;
}
.c-typography__sans-ja__subtitle2{
  font-family: "Noto Sans JP", system-ui, sans-serif;   /* 参照元 YakuHanJPs, YuGothic, … */
  font-size: 15px;
  letter-spacing: 0;
  line-height: 24px;
}
.c-typography__sans-ja__body1{
  font-family: "Noto Sans JP", system-ui, sans-serif;
  font-size: 13px;
  letter-spacing: 0.05em;
  line-height: 24px;
}
.c-typography__sans-ja__body2{
  font-family: "Noto Sans JP", system-ui, sans-serif;
  font-size: max(12px, 11px);          /* 参照元 11px。12px の床 */
  letter-spacing: 0.05em;
  line-height: 20px;
}
.c-typography__sans-ja__caption1{
  font-family: "Noto Sans JP", system-ui, sans-serif;
  font-size: max(12px, 10px);          /* 参照元 10px。12px の床 */
  letter-spacing: 0.1em;
  line-height: 16px;
}

/* ══════════════════════════════════════════════════════════════════════════
   §2 表の頭（題・目盛り・（　）は残り）  — 出典: 同 index.css `.p-ranking__…`
   ══════════════════════════════════════════════════════════════════════════ */
.p-ranking__container{
  display: grid;
  grid-template-columns: 100%;
  grid-template-rows: max-content 1fr max-content;
  width: 100%;
}
.p-ranking__head{
  padding: 24px 80px 0;
}
.p-ranking__title{
  display: inline-block;
  position: relative;
  z-index: 0;
  padding-bottom: 24px;
}
.p-ranking__title::before{
  content: '';
  background-color: var(--result-accent);
  position: absolute;
  top: 8px;
  left: 0;
  width: 100%;
  height: 16px;
  z-index: -1;
}
.p-ranking__filter{
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  width: 100%;
  padding-bottom: 48px;
  margin-bottom: 16px;
}
.p-ranking__question-subject{
  position: absolute;
  bottom: -4px;
  left: 0;
}
.p-ranking__table-head{
  border-bottom: solid 2px var(--result-ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  width: 100%;
  height: 48px;
}
.p-ranking__table-head::after{
  content: '（　）は残り';
  display: flex;
  align-items: center;
  justify-content: flex-end;
  position: absolute;
  top: 0;
  right: 0;
  width: max-content;
  height: 100%;
  opacity: 0.67;
}
.p-ranking__table-head__summary{
  display: grid;
  grid-template-columns: 104px 1fr;    /* 参照元 80px 48px 48px 1fr（変更 5・6） */
  align-items: center;
  width: max-content;
  height: 100%;
}
.p-ranking__table-head__summary > li{
  text-align: center;
}
.p-ranking__table-head__summary > li:last-child{
  text-align: left;
  padding-left: 16px;
}
.p-ranking__table-head__rank{
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: 100%;
}
.p-ranking__table-head__rank > .is-previous{
  opacity: 0.67;
}
.p-ranking__table-head__result{
  display: grid;
  grid-template-columns: repeat(11, calc( 100% / 11));
  align-items: center;
  justify-items: center;
  position: relative;
  width: calc( ( 50% - 128px ) / 10 * 11);
  height: 100%;
  margin-right: calc( 128px - ( 50% - 128px ) / 10 / 2);
}

/* ══════════════════════════════════════════════════════════════════════════
   §3 表の body（目盛りの縦線・行・帯・数字）
   ══════════════════════════════════════════════════════════════════════════ */
.p-ranking__body{
  padding: 0 80px;
}
.p-ranking__contents{
  position: relative;
  height: max-content;
}
.p-ranking__table-grid{
  display: grid;
  grid-template-columns: repeat(10, 10%);
  align-items: center;
  justify-items: center;
  position: relative;
  position: absolute;
  top: 0;
  right: 128px;
  width: calc( 50% - 128px);
  height: 100%;
  z-index: 0;
  opacity: 0.13;
}
.p-ranking__table-grid > *{
  border-right: solid 1px var(--result-ink);
  width: 100%;
  height: 100%;
}
.p-ranking__list{
  position: relative;
}
.p-ranking__list > li{
  border-bottom: solid 1px var(--result-ink);
  display: flex;
  width: 100%;
  height: auto;                        /* 参照元 48px 固定（変更 14） */
  min-height: 48px;
}
@media (min-width: 768px) and (any-hover: hover){
  .p-ranking__list > li:hover{
    position: relative;
  }
  .p-ranking__list > li:hover::after{
    content: '';
    background-color: var(--result-ink);
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0.08;
  }
}
.p-ranking__summary{
  border-right: solid 1px var(--result-ink);
  display: grid;
  grid-template-columns: 104px 1fr;    /* 参照元 80px 48px 48px 1fr（変更 5・6） */
  align-items: center;
  justify-content: flex-start;
  width: 50%;
  height: auto;                        /* 参照元 100%（変更 16） */
}
.p-ranking__question-ranks{
  border-right: solid 1px var(--result-ink);
  display: grid;
  grid-template-columns: repeat(2, 50%);
  align-items: center;
  justify-items: center;
  width: 100%;
  height: 100%;
  padding: 0 8px;
}
.p-ranking__question-previous-rank{
  opacity: 0.5;
}
.p-ranking__question-previous-rank::before{ content: '(' }
.p-ranking__question-previous-rank::after{ content: ')' }
.p-ranking__country-name{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-left: 16px;
}
.p-ranking__country-name__ja{
  font-weight: 700;
}
.p-ranking__country-name__en{
  text-align: right;
  padding-right: 16px;
}
.p-ranking__result{
  display: grid;
  grid-template-columns: 1fr 128px;
  align-items: center;
  justify-content: flex-start;
  width: 50%;
  height: auto;                        /* 参照元 100%（変更 16） */
}
.p-ranking__chart{
  border-right: solid 1px var(--result-ink);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  align-self: stretch;                 /* 追加（変更 16） */
  height: auto;                        /* 参照元 100%（変更 16） */
}
.p-ranking__chart__labels{
  display: grid;
  grid-template-columns: repeat(2, 50%);
  align-items: center;
  justify-items: flex-start;
  width: 100%;
  height: 100%;
  padding: 0 16px;
}
.p-ranking__bar-chart__current{
  display: block;
  border: solid 1px var(--result-fill-line);
  border-left: none;
  background-color: var(--result-fill);
  width: 0;                            /* 幅は HTML の inline style（参照元も同じ） */
  height: 24px;
  margin-top: 12px;
}
.p-ranking__bar-chart__previous{
  display: block;
  background-color: var(--result-previous);
  width: 0;                            /* 同上 */
  height: 8px;
}
.p-ranking__label__previous{
  opacity: 0.5;
}
.p-ranking__label__previous::before{ content: '(' }
.p-ranking__label__previous::after{ content: ')' }
.p-ranking__foot{
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 48px;
  padding: 0 80px;
}
.p-ranking__note--mobile{
  display: none;
}

/* ══════════════════════════════════════════════════════════════════════════
   §4 SP（出典: 同 index.css の @media (max-width: 768px) 内の同名規則）
       参照元の断面（768px）をそのまま使っている。
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 768px){
  .result{ padding: 32px 0 24px }

  .c-typography__serif__headline1{
    font-family: "Noto Sans JP", system-ui, sans-serif;
    font-size: 18px;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 28px;
  }
  .c-typography__sans-ja__subtitle2{
    font-family: "Noto Sans JP", system-ui, sans-serif;
    font-size: 13px;
    letter-spacing: 0;
    line-height: 20px;
  }
  .c-typography__sans-ja__body1{
    font-family: "Noto Sans JP", system-ui, sans-serif;
    font-size: max(12px, 11px);        /* 参照元 11px。12px の床 */
    letter-spacing: 0.05em;
    line-height: 20px;
  }

  .c-typography__sans-ja__caption1--mobile{
    font-family: "Noto Sans JP", system-ui, sans-serif;
    font-size: max(12px, 10px);        /* 参照元 10px。12px の床 */
    letter-spacing: 0.1em;
    line-height: 16px;
  }

  .p-ranking__head{
    padding: 16px 16px 0;
  }
  .p-ranking__title{
    padding-bottom: 16px;
  }
  .p-ranking__filter{
    flex-direction: column;
    padding-bottom: 0;
    margin-bottom: 12px;
  }
  .p-ranking__question-subject{
    text-align: justify;
    position: relative;
    bottom: auto;
    left: auto;
  }
  .p-ranking__table-head{
    height: 24px;
  }
  .p-ranking__table-head::after{
    content: '*（　）は残り';
  }
  .p-ranking__table-head__summary{
    grid-template-columns: 96px 1fr;   /* 参照元 72px 40px 40px 1fr（変更 5・6） */
    width: 100%;
  }
  .p-ranking__table-head__rank{
    justify-content: center;
  }
  .p-ranking__table-head__rank > .is-previous{
    display: none;
  }
  .p-ranking__table-head__result{
    display: none;
  }
  .p-ranking__body{
    padding: 0 16px;
  }
  .p-ranking__contents{
    position: relative;
    height: max-content;
  }
  .p-ranking__table-grid{
    display: none;
  }
  .p-ranking__list > li{
    flex-direction: column;
    width: 100%;
    height: auto;                      /* 参照元 48px 固定。題が 2 行になるので伸ばす（変更 14） */
  }
  .p-ranking__summary{
    border-right: none;
    border-bottom: solid 1px var(--result-ink);
    display: grid;
    grid-template-columns: 96px 1fr;   /* 参照元 72px 40px 40px 1fr（変更 5・6） */
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    height: auto;                      /* 参照元 24px 固定（変更 14） */
    min-height: 24px;
    padding: 4px 0;
  }
  .p-ranking__question-ranks{
    grid-template-columns: 44px 44px;  /* 参照元 40px 24px（変更 6） */
    padding-left: 0;
  }
  .p-ranking__country-name{
    align-items: flex-start;
    justify-content: flex-start;
  }
  .p-ranking__country-name__en{
    display: none;
    padding-right: 0;
  }
  .p-ranking__result{
    display: flex;
    grid-template-columns: none;
    align-items: center;
    justify-content: flex-start;
    position: relative;
    width: 100%;
    height: 24px;
  }
  .p-ranking__chart{
    align-items: flex-start;
    border-right: none;
    width: 100%;
    height: 16px;
  }
  .p-ranking__chart__labels{
    grid-template-columns: 52px max-content;  /* 参照元 40px max-content（変更 6） */
    position: absolute;
    top: 0;
    left: 0;
    width: max-content;
    padding-left: 0;
  }
  .p-ranking__bar-chart__current{
    border: none;
    height: 100%;
    margin-top: 0;
  }
  .p-ranking__bar-chart__previous{
    display: none;
  }
  .p-ranking__foot{
    justify-content: flex-start;
    height: 40px;
    padding: 0 16px;
  }
  .p-ranking__note--desktop{
    display: none;
  }
  .p-ranking__note--mobile{
    display: block;
    padding: 16px 0 32px;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   §5 動きを減らす設定（参照元には無い。こちらの決まりで 1 本足したもの）
       この節は最初から静止しているので、消すものは行のホバーの色だけ。
   ══════════════════════════════════════════════════════════════════════════ */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-articles
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   articles — 記事・ノウハウの横スクロールカルーセル
   ──────────────────────────────────────────────────────────────────────────
   参照元: corp.chatwork.com/ja/ の `section.l-section.news` の記事カルーセル
           （候補 3 本 giftee / mercari / layerx はいずれも記事カルーセルを
             持っていなかったため、同等の日本語 BtoB サイトへ振り替えた。
             詳細と実測値は報告に記載）

   持ち込んだのは「仕組みと、実測した定数」:
     ・器             … 節が overflow:clip で、札は器の右端を越えて視野の端まで流れる
     ・1 歩            … 札幅 + 隙間（実測 367 + 30 = 397px）
     ・移動            … 400ms cubic-bezier(.25, 1, .5, 1)（実測。落ち着いたら遷移を外す）
     ・掴んだとき      … 300px 引くとちょうど 1 歩ぶん進む＝最寄りの札の頭に吸い付く
     ・端             … 最後まで行ったらそこで止まる（巻き戻さない）
     ・矢印           … 80x80 の円、輪は ::before の 2px、押せる側は
                        hover で輪が scale(.86)、transition transform .16s ease-out
                        prev は next を rotate(180deg) しただけ
     ・進み具合        … 215x2 の帯。中の棒は width を % で動かし
                        transition width .2s ease-out
     ・札             … flex 縦 / 内側 30px / 角 6px / 枠 2px / 白地。
                        中身は 上から「区分＋日付 → 写真(3:2) → 題」
   値は素の px ではなく、このページの既存の書き方 calc(N * var(--u)) に載せた
   （--u = (視野幅 - スクロールバー) / --screen-size。設計幅で N px になる）。

   参照元と変えたところ（報告に 1 行ずつ書いた）:
     1. 色      … 参照元の橙 #F04600 → --color-oki-red（#003678）
     2. 動きの土台 … transform:translateX() ではなく素のスクロール器にした。
                    JS が動かなくても札に手が届く必要があるため（初期値を不可視に
                    して JS で戻す実装をしない、と同じ理由）。1 歩・吸い付き・
                    端の止まりは実測どおりの値で、慣性はブラウザ自身のものになる
     3. 矢印の無効化 … 参照元は端でも矢印が生きたまま（巻き戻す）。
                    ここでは端に着いたら disabled にする
     4. 文言・写真 … Remind のもの
   ══════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時にページの :root へ畳む） ───────────────────────── */

/* ── 節（参照元: section.l-section.news / padding 80px 0 110px → PC 150px 0 110px、
      overflow:clip。札が器の右を越えて視野の端まで流れ、ここで切れる） ──── */
.articles{
  padding-top: calc(80 * var(--u));
  padding-bottom: calc(110 * var(--u));
  overflow: clip;
}
@media (min-width: 1024px){
  .articles{ padding-top: calc(150 * var(--u)) }
}

/* 題と操作を 1 行に（参照元: .sectionhead が flex、右端に .carouselnav） */
.articles__head{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: calc(24 * var(--u));
  margin-bottom: calc(40 * var(--u));
}
@media (min-width: 1024px){
  .articles__head{ margin-bottom: calc(56 * var(--u)) }
}

/* ── 操作（矢印 — 進み具合 — 矢印）実測 gap 30 / 20 ───────────────────── */
.articles__nav{
  display: flex;
  align-items: center;
  gap: var(--articles-nav-gap);
  flex-shrink: 0;
}

/* 矢印。実測: 80x80 / border-radius 50% / display grid / place-content center /
   padding-left 3px / position relative。prev は next を 180 度回しただけ */
.articles__arrow{
  position: relative;
  display: grid;
  place-content: center;
  padding: 0 0 0 calc(3 * var(--u));
  width: var(--articles-arrow);
  height: var(--articles-arrow);
  border: none;
  border-radius: 50%;
  background-color: rgba(0,0,0,0);
  color: var(--color-oki-red);
  cursor: pointer;
  appearance: none;
  transition: opacity var(--articles-bar-duration) ease-out;
}
.articles__arrow.-prev{ transform: rotate(180deg) }

/* 輪は疑似要素。実測: 2px solid（参照元は accent）/ 円 / inset 0 /
   transition transform .16s ease-out */
.articles__arrow::before{
  content: "";
  display: block;
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  border: calc(2 * var(--u)) solid var(--color-oki-red);
  border-radius: 50%;
  transition: transform var(--articles-ring-duration) ease-out;
}
.articles__arrow_icon{
  width: calc(20 * var(--u));
  height: calc(20 * var(--u));
  display: block;
}

/* 端に着いたら押せなくする。※参照元にはこの状態が無い（向こうは端でも生きたまま） */
.articles__arrow[disabled]{
  opacity: .28;
  cursor: auto;
  pointer-events: none;
}

/* 進み具合。実測: 外 215x2 / 角 2px / overflow hidden / 地は accent の 2 割、
   中の棒は accent、width を % で動かし transition width .2s ease-out。
   SP では出さない（実測 display:none） */
.articles__progress{
  display: none;
  width: var(--articles-progress);
  height: calc(2 * var(--u));
  border-radius: calc(2 * var(--u));
  overflow: hidden;
  background-color: color-mix(in srgb, var(--color-oki-red) 20%, transparent);
}
.articles__progress-bar{
  display: block;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background-color: var(--color-oki-red);
  transition: width var(--articles-bar-duration) ease-out;
}
@media (min-width: 1024px){
  .articles__progress{ display: block }
}

/* ── 流れる器 ──────────────────────────────────────────────────────────
   参照元は list に inline の translateX を当てる作りだが、ここは素の
   スクロール器にした（JS が動かなくても札に手が届くようにするため）。
   1 歩・吸い付き・端の止まりは参照元の実測どおり:
     1 歩 = 札 + 隙間、掴んで放すと最寄りの札の頭に吸い付く、端で止まる。 */
.articles__viewport{
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-inline-start: var(--articles-pad);
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-block: calc(2 * var(--u));
  -webkit-overflow-scrolling: touch;
}
.articles__viewport::-webkit-scrollbar{ display: none }

.articles__list{
  display: flex;
  gap: var(--articles-gap);
  padding-inline: var(--articles-pad);
  margin: 0;
  padding-block: 0;
  list-style: none;
}
/* 末尾の余白。Chrome は横に流れる flex の器で list の padding-inline-end を
   スクロール幅に数えないため（実測: 末尾の 1 枚が視野の右端に張り付いた）、
   同じ幅の詰め物を 1 つ置いて右の余白を作る */
.articles__list::after{
  content: "";
  /* 直前に隙間が 1 つ入るぶんを引く（引くと負になる SP は 0 に落とす）。
     PC 実測: 右の余白 60px = 左の余白と同じ */
  flex: 0 0 max(1px, calc(var(--articles-pad) - var(--articles-gap)));
  align-self: stretch;
}
.articles__slide{
  flex: 0 0 var(--articles-card);
  scroll-snap-align: start;
}

/* ── 札。実測: flex 縦 / justify-content stretch / 白地 / 角 6px /
      枠 2px（参照元 #F3F3F3）/ 内側 30px / height 100% /
      transition border .2s ease-out ───────────────────────────────────── */
.articles__card{
  display: flex;
  flex-direction: column;
  justify-content: stretch;
  height: 100%;
  padding: var(--articles-inset) var(--articles-inset-x);
  border: calc(2 * var(--u)) solid var(--color-oki-gray3);
  border-radius: var(--articles-radius);
  background-color: #fff;
  color: var(--color-oki-black);
  transition: border-color var(--articles-bar-duration) ease-out;
}

/* 区分と日付。実測: 下に 15px */
.articles__meta{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(12 * var(--u));
  margin-bottom: calc(15 * var(--u));
}
/* 区分の札。実測: 12px / 700 / line-height 1 / padding 5px 12px / 角 18px /
   色は accent。12px を割らないよう床を敷いた */
.articles__category{
  padding: calc(5 * var(--u)) calc(12 * var(--u));
  border: 1px solid color-mix(in srgb, var(--color-oki-red) 35%, transparent);
  border-radius: calc(18 * var(--u));
  color: var(--color-oki-red);
  font-size: max(12px, calc(12 * var(--u)));
  line-height: 1;
  font-weight: 700;
  white-space: nowrap;
}
/* 日付。実測: 14px / 500 / line-height 28px */
.articles__date{
  /* 部品は --color-oki-gray(#909090) だったが白地 14px で 3.19:1。
     この頁のニュース一覧の日付と同じ #6b6b6b（5.74:1）へ */
  color: #6b6b6b;
  font-size: max(12px, calc(14 * var(--u)));
  line-height: calc(28 / 14);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* 写真。実測: figure が 3/2、下に 16px、img は cover で角 6px */
.articles__figure{
  margin: 0 0 calc(16 * var(--u));
  aspect-ratio: 3 / 2;
  border-radius: var(--articles-radius);
  overflow: hidden;
  background-color: var(--color-oki-gray3);
}
.articles__figure img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1);
  transition: transform var(--duration-800) var(--articles-easing);
}

/* 題。実測: PC 16px / SP 15px、どちらも 700 で line-height 1.6 */
.articles__title{
  margin: 0;
  font-size: max(12px, var(--articles-title));
  line-height: 1.6;
  font-weight: 700;
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

/* 掴める合図。指では既定でそのまま引けるので、マウスのときだけ出す */
@media (any-hover: hover){
  .articles__viewport{ cursor: grab }
  .articles__viewport.is-dragging{ cursor: grabbing }
  .articles__viewport.is-dragging .articles__card{ pointer-events: none }

  /* 参照元の実測: 輪が scale(.86) になる */
  .articles__arrow:hover::before{ transform: scale(.86) }
  /* 参照元は border に遷移を当てているだけで hover 値を読めなかったので、
     その遷移先を accent にした（ここは自分で決めた） */
  .articles__card:hover{ border-color: var(--color-oki-red) }
  .articles__card:hover .articles__figure img{ transform: scale(1.06) }
}

/* 掴んでいる間は吸い付きを切る（放した瞬間に最寄りへ吸い付かせるため） */
.articles__viewport.is-dragging{
  scroll-snap-type: none;
  scroll-behavior: auto;
}


/* ══════════════════════════════════════════════════════════════════════════════
   §14-message
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   代表メッセージ（大きな写真＋その脇の組版）
   出典: https://www.persol-group.co.jp/corporate/vision/ の `.p-media-section`
         規則は https://www.persol-group.co.jp/assets/individual/corporate/vision/css/style.css
         （素の値・素の入れ子）と、同サイトの共通 https://www.persol-group.co.jp/assets/css/style.css
         から取り出したものをそのまま置いている。px を測って書き直したものは 1 つも無い。

   参照元の姿:
     section.p-media-section.p-media-section--ltr.js-maskAnime-media
       > .p-media-section__inner            … flex / max-width 1288 / padding 0 40px
         > .p-media-section__cont           … width 50% / padding 120px 0（文字の柱）
         > .p-media-section__pic > span > img … 右半分を absolute で占める。span が skew(5deg)

   移植で触ったのは次の 5 つだけ（それ以外は原文のまま）:
     1. 単位   … 参照元は html{font-size:62.5%}（＝1rem=10px）の上で 3.2rem 等と書いてある。
                 この土台の根は 16px なので、そのまま持ってくると 1.6 倍に化ける。
                 数字（3.2 / 1.8 / …）は原文のまま残したいので、10px ぶんの物差しを
                 `--message-rem: .625rem` として :root に足し、`calc(3.2 * var(--message-rem))`
                 と書いた。描かれる px は参照元と同じ 32px で、利用者のブラウザ既定文字サイズにも
                 参照元と同じように追従する（px 直書きにするとここが死ぬ）。
     2. 色     … #97999B → var(--message-bg) / #ffffff → var(--message-fg) /
                 #d9d9d6 → var(--message-rule)。中身は oki-copy の青トークンに寄せた。
     3. 書体   … 参照元の "メイリオ" 等の指定は落とし、和文は "Noto Sans JP" のみ残した。
     4. 出現   … 参照元は「素で opacity:0、JS が .js-fired を足して見せる」形。JS が動かないと
                 写真も文字も永久に消えるので向きを逆にした（値・時間・曲線は原文のまま）。§6 参照。
     5. 落とした分岐 … `--rtl` 一式（この節では使わない）／
                 `.p-media-section--ltr .p-media-section__cont::before`（content が無く描かれない）／
                 `_:-ms-input-placeholder` の IE 用ハック／`.p-section__ttl`（同居セレクタの片割れ）。

   写真は front-recruit01.jpg（450×300）を流用している。器は 1440 幅で 720×約 870 になるので
   約 2.9 倍に引き伸ばされて甘い。差し替え前提（1440×1800 以上を推奨）。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時にここだけ畳む）──────────────────────────────────── */

/* ══ §1 器 ════════════════════════════════════════════════════════════════
   出典: pv/style.css `.p-media-section` / `__inner` / `__cont` / `__cont > *`
   ＋ 文字の大きさと行送りは共通 style.css の `body` 規則
     （@media (min-width:768px) → 1.6rem/1.7、@media (max-width:767px) → 1.5rem/1.7）を、
      1 節に折り込む都合で `.p-media-section` にスコープして持ってきたもの。 */
.p-media-section{
  position: relative;
  background-color: var(--message-bg);
  overflow: hidden;
  /* ↓ 参照元の body 規則（値そのまま） */
  font-family: "Noto Sans JP", system-ui, sans-serif;
  font-size: calc(1.6 * var(--message-rem));
  line-height: 1.7;
}
@media screen and (max-width: 767px){
  .p-media-section{ font-size: calc(1.5 * var(--message-rem)); line-height: 1.7 }
}

.p-media-section__inner{
  display: flex;
  max-width: 1288px;
  margin: 0 auto;
  padding: 0 40px;
  color: var(--message-fg);
}
@media screen and (max-width: 767px){
  .p-media-section__inner{ display: block; padding: 0 20px }
}

.p-media-section__cont{
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 50%;
  padding: 120px 0;
}
@media screen and (max-width: 767px){
  .p-media-section__cont{ width: auto; padding: 80px 0 60px }
}

/* 写真の斜めの縁が下で文字側へ入り込むので、柱の中身は必ず上に置く */
.p-media-section__cont > *{ position: relative; z-index: 2 }

.p-media-section--ltr .p-media-section__inner{ flex-direction: row }

/* ══ §2 節の題（80×4 の罫が下に付く）══════════════════════════════════════
   出典: pv/style.css `.p-section__ttl, .p-media-section__ttl` と その ::before、
         そのあとに来る `.p-media-section__ttl{margin-bottom:2.5em}`。
         参照元と同じ順で置いてある（同特異度・後勝ちで margin-bottom が 2.5em になる）。 */
.p-media-section__ttl{
  position: relative;
  margin-bottom: 1.75em;
  padding-bottom: 0.625em;
  font-size: calc(3.2 * var(--message-rem));
  font-weight: normal;
}
@media screen and (max-width: 767px){
  .p-media-section__ttl{
    padding-bottom: .8125em;
    font-size: calc(2.4 * var(--message-rem));
    text-align: center;
  }
}
.p-media-section__ttl::before{
  content: '';
  display: inline-block;
  position: absolute;
  left: 0;
  bottom: 0;
  width: 80px;
  height: 4px;
  background-color: var(--message-rule);
}
@media screen and (max-width: 767px){
  .p-media-section__ttl::before{ right: 0; margin: auto }
}
.p-media-section__ttl{ margin-bottom: 2.5em }
@media screen and (max-width: 767px){
  .p-media-section__ttl{ margin-bottom: 2.375em }
}

/* ══ §3 標語（引用として読ませる行）════════════════════════════════════════
   器は pv/style.css `.p-txt__vision2`（max-width:600px / margin-bottom:60px）。
   参照元はここに標語を「画像」で置いているので、文字にしたときの大きさの規則が無い。
   同じ style.css の `.p-hero__heading`（この頁の標語の大きさ）から
   font-size と font-weight だけを取った。text-align:center と margin-bottom:3.625em は
   取っていない（標語が中央でなく左の柱に入るため）。 */
.p-txt__vision2{
  max-width: 600px;
  margin-bottom: 60px;
}
.p-txt__vision2{
  font-size: calc(4 * var(--message-rem));
  font-weight: normal;
}
@media screen and (max-width: 767px){
  .p-txt__vision2{ font-size: calc(2.4 * var(--message-rem)) }
}

/* ══ §4 本文と署名 ════════════════════════════════════════════════════════
   出典: pv/style.css `.p-media-section__txt`（line-height:2）と
         `.p-hero__section-cont`（1.8rem / line-height 2.22222）＋ その `p:not(:last-child)`。
   本文の div には 2 つとも付けてある。参照元と同じ順に並べているので、
   行送りは後に来る `.p-hero__section-cont` の 2.22222 が効く（＝18px / 40px 送り）。
   署名の右寄せは共通 style.css の `.u-align--right`。 */
.p-media-section__txt{ line-height: 2 }

.p-hero__section-cont{
  line-height: 2.22222;
  font-size: calc(1.8 * var(--message-rem));
}
@media screen and (max-width: 767px){
  .p-hero__section-cont{ line-height: 2; font-size: calc(1.7 * var(--message-rem)) }
}
.p-hero__section-cont p:not(:last-child){ margin-bottom: 2.25em }
@media screen and (max-width: 767px){
  .p-hero__section-cont p:not(:last-child){ margin-bottom: 2em }
}

.u-align--right{ text-align: right !important }

/* ══ §5 写真（右半分・斜めの縁）════════════════════════════════════════════
   出典: pv/style.css `.p-media-section__pic` / ` span` / ` img` と
         `.p-media-section--ltr .p-media-section__pic` / ` span`。
   `opacity:0` と `transform:translateX(50%)` だけは §6 の待機側へ移してある（理由は §6）。
   img の width/height:auto ＋ min-width/min-height:100% は、CSS の最小値解決で
   縦横比を保ったまま器を覆う（＝object-fit:cover 相当）。属性の width/height は
   aspect-ratio を持ち込んで潰れるので付けていない。 */
.p-media-section__pic{
  position: absolute;
  top: 0;
  width: 50%;
  height: 100%;
  transition: opacity 2000ms, transform 1000ms;
}
@media screen and (max-width: 767px){
  .p-media-section__pic{ position: static; width: auto; margin: 0 -20px }
}

.p-media-section--ltr .p-media-section__pic{ right: 0 }

.p-media-section__pic span{
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transform: skew(5deg);
  overflow: hidden;
}
@media screen and (max-width: 767px){
  .p-media-section__pic span{ position: static; transform: skew(0deg) }
}
.p-media-section--ltr .p-media-section__pic span{ transform-origin: top left }

.p-media-section__pic img{
  position: absolute;
  top: 50%;
  left: 50%;
  width: auto;
  height: auto;
  min-width: 100%;
  min-height: 100%;
  max-width: inherit;
  transform: translate(-50%, -50%);
}
@media screen and (max-width: 767px){
  .p-media-section__pic img{ position: static; max-width: 100%; transform: translate(0, 0) }
}

/* ══ §6 出現 ══════════════════════════════════════════════════════════════
   ★ ここだけ向きを変えている（値・時間・曲線は原文のまま）。

   参照元は
     .p-media-section__pic{ opacity:0 } / .js-maskAnime-ele{ opacity:0 } /
     .js-maskAnime-tape{ opacity:0; clip-path:… }
   を素の姿にし、Waypoint（offset:'80%'）が `.js-fired` を足して見せる形。
   これは「初期値を不可視にして JS で戻す」形そのもので、JS が 1 行も動かないと
   写真も文字も永久に消える（本プロジェクトで実際に全画面白紙になった型）。

   そこで素の姿を「到達後」にし、待機の姿は JS が `.is-standby` を足したときだけ
   当たるようにした。JS が無い・落ちた・IntersectionObserver が無い・
   動きを止めている、のどれでも中身はそのまま見える。
   `:not(.js-fired)` で外すので、段差（160ms × i）は参照元のまま効く。 */
.p-media-section.is-standby:not(.js-fired) .p-media-section__pic{ opacity: 0 }
.p-media-section--ltr.is-standby:not(.js-fired) .p-media-section__pic{ transform: translateX(50%) }
@media screen and (max-width: 767px){
  .p-media-section--ltr.is-standby:not(.js-fired) .p-media-section__pic{ transform: translateX(0) }
}

.is-standby .js-maskAnime-ele:not(.js-fired){
  opacity: 0;
  transform: translate3d(0, 0, 0);
}
.js-maskAnime-ele.js-fired{
  animation: maskAnime 960ms cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

.is-standby .js-maskAnime-tape:not(.js-fired){
  opacity: 0;
  clip-path: polygon(0 0, 0 0, 0 100%, 0% 100%);
}
.js-maskAnime-tape.js-fired{
  animation: maskTape 1600ms 640ms cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

/* 出典: pv/style.css の @keyframes（PC は -30px、SP は -10px。原文どおり） */
@keyframes maskAnime{
  0%   { opacity: 0; transform: translateX(-30px) }
  100% { opacity: 1; transform: translateX(0px) }
}
@media screen and (max-width: 767px){
  @keyframes maskAnime{
    0%   { opacity: 0; transform: translateX(-10px) }
    100% { opacity: 1; transform: translateX(0px) }
  }
}
@keyframes maskTape{
  0%   { opacity: 0; clip-path: polygon(0 0, 0 0, 0 100%, 0% 100%) }
  100% { opacity: 1; clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%) }
}

/* ══ §7 動きを止めたい人の分 ══════════════════════════════════════════════
   参照元は 1 本も持っていない。JS 側でも降りるようにしてあるが、
   CSS 単体でも「待機の姿にならない・動かない」を保証しておく。 */

/* ホバーの規則は参照元の部品に 1 本も無いので、こちらでも作っていない
   （作るなら @media (any-hover:hover) で囲む） */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-recruit
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   recruit — 採用・カルチャー（数字と写真のモザイク）
   ──────────────────────────────────────────────────────────────────────────────
   参照元: https://layerx.co.jp/ の「Join Us」節（2026-09-08 取得）
     節      … <section class="mt-88 relative overflow-hidden">
     帯      …   <div class="bg-pattern_dot pb-80 md:pb-115">
     モザイク…   <div x-data="masonryGridAnimation" style="--gap-sp:…;--gap-pc:…">
   規則の出どころ: https://layerx.co.jp/wp-content/themes/layerx/build/index.css
                   ?ver=337abe08bc46f4026613（128,793 バイト・全 1,837 規則）
   取り出し: ref2/pick2.mjs（規則単位に開いて拾う）。宣言は 1 つも書き直していない。

   参照元は Tailwind 風の一般名（.flex / .relative / .hidden / .border …）なので、
   この頁（oki-copy）の index.html（.grid 1 / .relative 2 / .hidden 2 /
   .overflow-hidden 2 箇所）と衝突する。よって全規則を :where(.remind-recruit) で
   囲った。:where() は特異度 0 なので、規則の効き方（特異度・順序）は参照元と同じ。
   節の根に付く 3 クラス（mt-88 / relative / overflow-hidden）だけは
   `:where(.remind-recruit).X, :where(.remind-recruit) .X` の 2 本立てにしてある
   （どちらも特異度 (0,1,0) ＝ 参照元の `.X` と同じ）。

   ★ 原文から変えたのは次の 5 つだけ（それ以外の余白・大きさ・時間・曲線・入れ子は原文のまま）
     1. 色      … .bg-pattern_dot の画像を、参照元 bg_dot.png（50×60px）と
                   同じ格子の SVG に差し替えた（§0 参照）。地の色だけ我々の紺へ
     2. 書体    … PPMori-* / TazuganeGothicStdN-* は参照元専用書体なので落とし、
                   代わりに font-weight を明記した（§3 に 1 行ずつ対応を書いた）
     3. 文言・写真 … Remind のもの
     4. 到達しない分岐 …
                   ・.c-text-anim / .c-fade-anim（anim-init で opacity:0 → JS が戻す）
                     を丸ごと落とした。JS が動かないと本文が永久に消えるため（禁止事項）。
                     実測でも参照元は本文が opacity:0 のまま描かれていた
                   ・`--absolute` `--h-full` `--object-cover` `--border-white`
                     `--relative` `_arrow-circle-l` は参照元 CSS に規則が 1 つも無い
                     （`--` は参照元の「無効化」接頭辞）。§4 参照
     5. ホバー  … 参照元の @media (hover:hover) / (hover:hover) and (pointer:fine) を
                   どちらも @media (any-hover:hover) に寄せた（指示）
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── §0 :root（組み込み時に畳めるよう先頭に分ける）─────────────────────────────
   ・--easing-1 は参照元 cubic-bezier(0.18,0.06,0.23,1) がこの頁の土台の
     --easing-1 と完全に同値だったのでそのまま使う（新設しない）
   ・--easing-3 は参照元 cubic-bezier(0.47,0.16,0.24,1)、土台の --easing-3 は
     cubic-bezier(.43,.05,.17,1) で別物。衝突を避けて別名を足した
   ・参照元が transition に直書きしていた .5s / .3s / 1.2s は土台の
     --duration-500 / -300 / -1200 と同値なのでそちらへ寄せた。.7s だけ
     対応する token が無いので新設
   ・--recruit-dot-tile … 参照元 bg_dot.png を実際に復号して作った。
     50×60px の升目、2×2px の点が (0,13)(0,28)(0,43)(0,58)(25,13)(25,28)
     (25,43)(25,58) の 8 箇所 ＝ 25×15px 格子。格子は参照元のまま、色だけ
     我々の紺へ。参照元は「地 rgb(60,71,92) / 点はそれより 8 暗い rgb(52,64,84)」
     だが、我々の地 #001f45 はもっと暗く、同じ差を暗い側へ取ると模様が消える。
     そこで同じ 8 の差を明るい側へ向けた（#08274d）
   -------------------------------------------------------------------------- */

/* ── §1 参照元の preflight から、この部品が寄りかかっている分だけ ───────────────
   （lx.css の Tailwind preflight。原文のまま、スコープだけ付けた）
   `img,._wp-content p img{border-radius:.75rem}` は頁全体のテーマ規則で
   この部品のものではないので入れていない（枠側で角を丸めるため不要でもある）。 */
:where(.remind-recruit) *,
:where(.remind-recruit) *:after,
:where(.remind-recruit) *:before{ border:0 solid; box-sizing:border-box }
:where(.remind-recruit) img,
:where(.remind-recruit) object,
:where(.remind-recruit) svg,
:where(.remind-recruit) video{ display:block; vertical-align:middle }
:where(.remind-recruit) img,
:where(.remind-recruit) video{ height:auto; max-width:100% }
:where(.remind-recruit) h1,:where(.remind-recruit) h2,:where(.remind-recruit) h3,
:where(.remind-recruit) h4,:where(.remind-recruit) h5,:where(.remind-recruit) h6{ font-size:inherit; font-weight:inherit }
:where(.remind-recruit) blockquote,:where(.remind-recruit) dd,:where(.remind-recruit) dl,
:where(.remind-recruit) figure,:where(.remind-recruit) h1,:where(.remind-recruit) h2,
:where(.remind-recruit) h3,:where(.remind-recruit) h4,:where(.remind-recruit) h5,
:where(.remind-recruit) h6,:where(.remind-recruit) hr,:where(.remind-recruit) p,
:where(.remind-recruit) pre{ margin:0 }
:where(.remind-recruit) a{ color:inherit; text-decoration:inherit }

/* ══════════════════════════════════════════════════════════════════════════════
   §2 器・並び・寸法（すべて lx.css の原文。値は 1 つも書き起こしていない）
   ══════════════════════════════════════════════════════════════════════════════ */

/* 節の根に付く 3 つ（子孫にも使うので 2 本立て） */
:where(.remind-recruit).mt-88,
:where(.remind-recruit) .mt-88{ margin-top:5.5rem }
:where(.remind-recruit).relative,
:where(.remind-recruit) .relative{ position:relative }
:where(.remind-recruit).overflow-hidden,
:where(.remind-recruit) .overflow-hidden{ overflow:hidden }

/* 位置・表示 */
:where(.remind-recruit) .absolute{ position:absolute }
:where(.remind-recruit) .inset-0{ bottom:0; top:0 }
:where(.remind-recruit) .inset-0{ left:0; right:0 }
:where(.remind-recruit) .top-0{ top:0 }
:where(.remind-recruit) .left-0{ left:0 }
:where(.remind-recruit) .z-10{ z-index:10 }
:where(.remind-recruit) .z-\[10\]{ z-index:10 }
:where(.remind-recruit) .z-\[1\]{ z-index:1 }
:where(.remind-recruit) .m-auto{ margin:auto }
:where(.remind-recruit) .block{ display:block }
:where(.remind-recruit) .flex{ display:flex }
:where(.remind-recruit) .inline-flex{ display:inline-flex }
:where(.remind-recruit) .inline-table{ display:inline-table }
:where(.remind-recruit) .hidden{ display:none }
:where(.remind-recruit) .flex-col{ flex-direction:column }
:where(.remind-recruit) .items-center{ align-items:center }
:where(.remind-recruit) .justify-center{ justify-content:center }
:where(.remind-recruit) .justify-between{ justify-content:space-between }
:where(.remind-recruit) .flex-wrap{ flex-wrap:wrap }
:where(.remind-recruit) ._grid-2{ display:grid; grid-template-columns:repeat(2,1fr) }
:where(.remind-recruit) .gap-x-30{ column-gap:1.875rem }
:where(.remind-recruit) .gap-y-40{ row-gap:2.5rem }
:where(.remind-recruit) .h-full{ height:100% }
:where(.remind-recruit) .w-full{ width:100% }
:where(.remind-recruit) .object-cover{ object-fit:cover }
:where(.remind-recruit) .capitalize{ text-transform:capitalize }

/* 余白 */
:where(.remind-recruit) .mt-4{ margin-top:.25rem }
:where(.remind-recruit) .mt-12{ margin-top:.75rem }
:where(.remind-recruit) .mt-18{ margin-top:1.125rem }
:where(.remind-recruit) .mt-26{ margin-top:1.625rem }
:where(.remind-recruit) .mt-40{ margin-top:2.5rem }
:where(.remind-recruit) .mt-60{ margin-top:3.75rem }
:where(.remind-recruit) .mt-56{ margin-top:3.5rem }
:where(.remind-recruit) .mt-32{ margin-top:2rem }
:where(.remind-recruit) .pt-24{ padding-top:1.5rem }
:where(.remind-recruit) .pt-86{ padding-top:5.375rem }
:where(.remind-recruit) .pb-80{ padding-bottom:5rem }
:where(.remind-recruit) .px-20{ padding-left:1.25rem; padding-right:1.25rem }

/* 大きさ（矢印の丸・区切り線・矢羽） */
:where(.remind-recruit) .h-\[1px\]{ height:1px }
:where(.remind-recruit) .h-8{ height:.5rem }
:where(.remind-recruit) .h-72{ height:4.5rem }
:where(.remind-recruit) .w-8{ width:.5rem }
:where(.remind-recruit) .w-14{ width:.875rem }
:where(.remind-recruit) .w-72{ width:4.5rem }

/* 色・不透明度・枠・角 */
:where(.remind-recruit) .bg-white{ --tw-bg-opacity:1; background-color:rgb(255 255 255/var(--tw-bg-opacity)) }
:where(.remind-recruit) .bg-white\/\[0\.12\]{ background-color:hsla(0,0%,100%,.12) }
:where(.remind-recruit) .bg-gray900{ --tw-bg-opacity:1; background-color:rgb(0 20 45/var(--tw-bg-opacity)) }
/* ↑ 色トークンの中身。参照元は rgb(21 38 50)。参照元は「帯 rgb(60,71,92) より
   窓のほうが暗い」関係なので、同じ関係を我々の紺で作った
   （帯 #001f45 ＝ rgb(0,31,69) → 窓 rgb(0,20,45)）。規則側は無改造 */
:where(.remind-recruit) .text-white{ --tw-text-opacity:1; color:rgb(255 255 255/var(--tw-text-opacity)) }
:where(.remind-recruit) .text-gray400{ --tw-text-opacity:1; color:rgb(211 212 217/var(--tw-text-opacity)) }
:where(.remind-recruit) .opacity-\[0\.08\]{ opacity:.08 }
:where(.remind-recruit) .opacity-\[0\.12\]{ opacity:.12 }
:where(.remind-recruit) .border{ border-width:1px }
:where(.remind-recruit) .border-white\/\[0\.12\]{ border-color:hsla(0,0%,100%,.12) }
:where(.remind-recruit) .rounded-12{ border-radius:.75rem }
:where(.remind-recruit) .rounded-16{ border-radius:1rem }
:where(.remind-recruit) .stroke-current{ stroke:currentColor }

/* 帯の地紋（参照元は 50×60 の PNG。§0 の通り同じ格子の SVG に差し替え） */
:where(.remind-recruit) .bg-pattern_dot{ background-image:var(--recruit-dot-tile) }

/* モザイクの器と札 */
:where(.remind-recruit) .h-\[66vh\]{ height:66vh }
:where(.remind-recruit) .h-\[calc\(100\%-\(90px\)\)\]{ height:calc(100% - 90px) }
:where(.remind-recruit) .w-\[120\%\]{ width:120% }
:where(.remind-recruit) .left-\[-10\%\]{ left:-10% }
:where(.remind-recruit) .gap-x-\[var\(--gap-sp\)\]{ column-gap:var(--gap-sp) }
:where(.remind-recruit) .gap-y-\[var\(--gap-sp\)\]{ row-gap:var(--gap-sp) }
:where(.remind-recruit) .-mt-\[calc\(100vw\*0\.3\)\]{ margin-top:-30vw }
:where(.remind-recruit) .aspect-\[159\/194\]{ aspect-ratio:159/194 }

/* 器（参照元の並び順のまま。≥768 では最後に来る sm:_l-container の
   10.694vw が勝つ ＝ 実測 1440px で左右 154px） */
:where(.remind-recruit) ._l-container--m{ box-sizing:content-box; margin-left:auto; margin-right:auto; max-width:100%; padding-left:2.5rem; padding-right:2.5rem }
:where(.remind-recruit) ._l-container--l{ box-sizing:content-box; margin-left:auto; margin-right:auto; max-width:100%; padding-left:.625rem; padding-right:.625rem }

@media (min-width:768px){
  :where(.remind-recruit) ._l-container--m{ padding-left:10.694444444444445vw; padding-right:10.694444444444445vw }
  :where(.remind-recruit) ._l-container--l{ padding-left:1.3888888888888888vw; padding-right:1.3888888888888888vw }
  :where(.remind-recruit) .sm\:flex{ display:flex }
  :where(.remind-recruit) .sm\:mt-26{ margin-top:1.625rem }
  :where(.remind-recruit) .sm\:h-12{ height:.75rem }
  :where(.remind-recruit) .sm\:h-104{ height:6.5rem }
  :where(.remind-recruit) .sm\:w-12{ width:.75rem }
  :where(.remind-recruit) .sm\:w-24{ width:1.5rem }
  :where(.remind-recruit) .sm\:w-104{ width:6.5rem }
  :where(.remind-recruit) .sm\:rounded-24{ border-radius:1.5rem }
  :where(.remind-recruit) .sm\:gap-y-\[var\(--gap-pc\)\]{ row-gap:var(--gap-pc) }
  :where(.remind-recruit) .sm\:-mt-\[calc\(100vw\*0\.12\)\]{ margin-top:-12vw }
  :where(.remind-recruit) .sm\:_l-container{ box-sizing:content-box; margin-left:auto; margin-right:auto; max-width:100%; padding-left:1.25rem; padding-right:1.25rem }
}
@media (min-width:768px){ @media (min-width:768px){
  :where(.remind-recruit) .sm\:_l-container{ padding-left:10.694444444444445vw; padding-right:10.694444444444445vw }
}}

@media (min-width:1024px){
  :where(.remind-recruit) .md\:pb-115{ padding-bottom:7.1875rem }
  :where(.remind-recruit) .md\:mt-20{ margin-top:1.25rem }
  :where(.remind-recruit) .md\:mt-52{ margin-top:3.25rem }
  :where(.remind-recruit) .md\:mt-86{ margin-top:5.375rem }
  :where(.remind-recruit) .md\:_grid-22{ display:grid; grid-template-columns:repeat(22,1fr) }
  :where(.remind-recruit) .md\:h-\[calc\(1060\/1440\*100vw\)\]{ height:73.61111vw }
  :where(.remind-recruit) .md\:h-\[calc\(100\%-\(100\/1440\*100vw\)\)\]{ height:calc(100% - 6.94444vw) }
  :where(.remind-recruit) .md\:w-\[104\%\]{ width:104% }
  :where(.remind-recruit) .md\:left-\[-2\%\]{ left:-2% }
  :where(.remind-recruit) .md\:gap-x-\[var\(--gap-pc\)\]{ column-gap:var(--gap-pc) }
}

/* 22 分割の桁（≥1024 でのみ格子になる。参照元は桁だけ素で置いている） */
:where(.remind-recruit) .col-start-1{ grid-column-start:1 }
:where(.remind-recruit) .col-start-15{ grid-column-start:15 }
:where(.remind-recruit) .col-end-14{ grid-column-end:14 }
:where(.remind-recruit) .col-end-23{ grid-column-end:23 }

/* ══════════════════════════════════════════════════════════════════════════════
   §3 文字（lx.css の原文。書体名だけ差し替え、落ちた重さを font-weight で補う）
     _text-headline-en-m … PPMori-SemiBold（欧文のみ）      → Figtree / 600
     _text-display-m  SP … …,TazuganeGothicStdN-Bold,…     → 700
     _text-display-m  PC … …,TazuganeGothicStdN-Medium,…   → 500（参照元通り PC は細い）
     _text-display-s     … …,TazuganeGothicStdN-Bold,…     → 700
     _text-body-m        … …,TazuganeGothicStdN-Regular,…  → 400
     _text-body-s        … …,TazuganeGothicStdN-Regular,…  → 400
     _text-label-m / -l  … …,TazuganeGothicStdN-Bold,…     → 700
   font-size / letter-spacing / line-height / font-feature-settings は原文のまま。
   いちばん小さいのは _text-label-m と _text-body-s の .75rem＝12px（12px 未満は無い）。
   ══════════════════════════════════════════════════════════════════════════════ */
:where(.remind-recruit) ._text-headline-en-m{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Figtree","Noto Sans JP",system-ui,sans-serif; font-weight:600;
  font-size:1rem; line-height:1.2;
}
:where(.remind-recruit) ._text-display-m{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Figtree","Noto Sans JP",system-ui,sans-serif; font-weight:700;
  font-kerning:auto; font-size:1.5rem; letter-spacing:.04em; line-height:1.4;
}
:where(.remind-recruit) ._text-display-s{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Figtree","Noto Sans JP",system-ui,sans-serif; font-weight:700;
  font-kerning:auto; font-size:1.25rem; letter-spacing:.04em; line-height:1.4;
}
:where(.remind-recruit) ._text-body-m{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Noto Sans JP",system-ui,sans-serif; font-weight:400;
  font-kerning:auto; font-size:.875rem; letter-spacing:.02em; line-height:1.9;
}
:where(.remind-recruit) ._text-body-s{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Noto Sans JP",system-ui,sans-serif; font-weight:400;
  font-kerning:auto; font-size:.75rem; letter-spacing:.02em; line-height:1.9;
}
:where(.remind-recruit) ._text-label-m{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Noto Sans JP",system-ui,sans-serif; font-weight:700;
  font-kerning:auto; font-size:.75rem; letter-spacing:.02em; line-height:1.4;
}
:where(.remind-recruit) ._text-label-l{
  font-feature-settings:"ss02" on,"palt" on,"liga" off;
  font-family:"Noto Sans JP",system-ui,sans-serif; font-weight:700;
  font-kerning:auto; font-size:.875rem; letter-spacing:.02em; line-height:1.4;
}
@media (min-width:768px){
  :where(.remind-recruit) ._text-headline-en-m{ font-size:1.5rem }
  :where(.remind-recruit) ._text-display-m{ font-weight:500; font-size:2.75rem }
  :where(.remind-recruit) ._text-display-s{ font-size:2rem }
  :where(.remind-recruit) ._text-body-m{ font-size:1rem; line-height:1.9 }
  :where(.remind-recruit) ._text-body-s{ font-size:.875rem; line-height:1.9 }
  :where(.remind-recruit) ._text-label-m{ font-size:.875rem }
  :where(.remind-recruit) ._text-label-l{ font-size:1rem }
}

/* ══════════════════════════════════════════════════════════════════════════════
   §4 矢印の丸（lx.css の ._arrow-circle 一式。原文のまま）
     ・--d と --circle_border_w は参照元と同じく HTML の inline style から来る
     ・--enshuu＝(104-2*2)*3.14＝314。viewBox 0 0 104 104 の r=50 の円周
       2π*50＝314.16 とほぼ同じ ＝ 素は「線ゼロ」、ホバーで一周ぶん引かれる
     ・`_arrow-circle-l` は参照元 CSS に規則が 1 本も無いので HTML からも外した
     ・body:not(.is-touchDevice) は参照元の書き方のまま。この頁は
       .is-touchDevice を付けないので常に真（＝到達しない分岐は残していない）
     ・参照元の .5s / .3s / 1.2s はこの頁の --duration-500 / -300 / -1200 と
       同値なので token へ寄せた。.7s だけ --recruit-duration-700 を新設
   ══════════════════════════════════════════════════════════════════════════════ */
:where(.remind-recruit) ._arrow-circle{ --enshuu:calc((var(--d) - var(--circle_border_w)*2)*3.14) }
:where(.remind-recruit) ._arrow-circle__back{ transform:scale(1); transition:all var(--duration-500) var(--easing-1) }
body:not(.is-touchDevice) :where(.remind-recruit) ._arrow-circle__front{ transform:rotate(-90deg) scale(1.08); transform-origin:center }
:where(.remind-recruit) ._arrow-circle__front circle{ stroke-dasharray:0 var(--enshuu); transition:stroke-dasharray var(--recruit-duration-700) var(--recruit-easing-3) }
:where(.remind-recruit) a[href]._hover-anime-none{ transition-property:none!important }

/* ホバー。参照元の問い合わせは 2 種類あった:
     ・a[href]._hover-anime-none:hover      → @media (hover:hover) and (pointer:fine)
     ・[data-arrow-circle-link]:hover …     → @media (hover:hover)
   指示に合わせて両方 @media (any-hover:hover) に寄せた（`and (pointer:fine)` は落とした）。
   宣言そのものは原文のまま。 */
@media (any-hover:hover){
  :where(.remind-recruit) a[href]._hover-anime-none:hover{ opacity:1!important }
  :where(.remind-recruit) [data-arrow-circle-link]:hover ._arrow-circle__back{
    stroke-dasharray:var(--enshuu) var(--enshuu); opacity:0;
    transform:scale(1.08); transform-origin:center;
    transition:all var(--duration-1200) var(--easing-1);
  }
  :where(.remind-recruit) [data-arrow-circle-link]:hover ._arrow-circle__front circle{
    stroke-dasharray:var(--enshuu) var(--enshuu);
    transition:stroke-dasharray var(--duration-300) var(--recruit-easing-3);
  }
}
/* 参照元は .is-active でも同じ形を当てている（キーボード操作の受け皿）。
   :focus-visible を足したのはこちらの判断（原文は .is-active のみ） */
:where(.remind-recruit) [data-arrow-circle-link]:focus-visible ._arrow-circle__back{
  stroke-dasharray:var(--enshuu) var(--enshuu); opacity:0;
  transform:scale(1.08); transform-origin:center;
  transition:all var(--duration-1200) var(--easing-1);
}
:where(.remind-recruit) [data-arrow-circle-link]:focus-visible ._arrow-circle__front circle{
  stroke-dasharray:var(--enshuu) var(--enshuu);
  transition:stroke-dasharray var(--duration-300) var(--recruit-easing-3);
}

/* ── §5 動きを減らす設定 ────────────────────────────────────────────────────
   モザイクの視差は recruit.js が同じ問い合わせで自分から降りる。
   ここは残りの遷移を止めるだけ。素の見た目（＝可視）は CSS だけで完成しており、
   JS が 1 行も動かなくても写真も数字も文章もそのまま見える。 */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-faq
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════
   よくある質問（開閉するアコーディオン）
   参照元: SmartHR 採用サイト recruit.smarthr.co.jp/environment/ の「よくあるご質問」
           （<astro-disclosure> + <details>／6 問。うち先頭 1 問が open で出る）
   規則の出どころ（実ファイルを落として全文を読んだ。書き起こしはしていない）:
     ・/_astro/index.BGIjyZKp.css … この部品の全 26 規則（Disclosure.astro のスコープ）
     ・/_astro/index.B7afrDza.css … 答え側 `.container[data-astro-cid-xmfsip22]` 一式
     ・/_astro/index.D73YQqLl.css … :root のトークン（--rem/--px/--offset/… ）
     ・/_astro/Disclosure.astro_astro_type_script_index_0_lang.BaLTmYlO.js … 開閉の動き

   ★ 参照元の候補 1 番目（www.cybozu.co.jp）は先に当たったが採らなかった。
     cybozu の `.mod-Accordion` は開閉の高さを jQuery が持っていて CSS 側に高さも
     イージングも所要時間も無く（`.mod-Accordion_Tab` の transition は background 0.4s
     だけ）、印は ＋/− の背景画像の差し替えで、回転も変形もしない。
     依頼の「高さ・イージング・アイコンの動き」を持っていないので次の候補へ移った。
     （node rules.mjs 'https://www.cybozu.co.jp/customer/faq/' '.mod-Accordion, …' で確認）

   原文のまま持ってきたもの（下の各規則の見出しに出典行を書いた）:
     余白・大きさの式・clamp の係数・入れ子・所要時間（.3s / .12s / .6s / 300ms）・
     イージング（cubic-bezier(.23,1,.32,1) / ease / ease-out）・印の作り（±の 2 本の棒と
     縦棒の scale 1 0 ⇄ 1 1）・@keyframes の中身・メディアクエリの境界。

   変えたところ（1 行ずつ。理由つき）:
     1. スコープ属性 … `[data-astro-cid-2hnuhmwc]` → `[data-faq]`、
                        `[data-astro-cid-xmfsip22]` → `[data-faq-a]`。
                        参照元は :where() ではなく素の属性セレクタ（特異度 0,1,0）で
                        `.container` / `.body` / `.summary` / `.label` という総称クラスを
                        囲っている。外すと当ページの他の部品に当たるので、
                        「同じ形・同じ特異度の別名」に置き換えた（外していない）。
     2. トークン名 … 参照元の `--rem` `--px` `--offset` … は当ページの :root と名前が
                     ぶつかるので `--faq-` を頭に付けた。式と係数は 1 文字も変えていない。
     3. `1rem` → `10px` … 参照元の html の font-size は実測 10px、当ページは 16px。
                     `--rem: calc(1rem * …)` の `1rem` を「参照元での 1rem の実寸」に
                     置き換えただけで、以後 `var(--faq-rem)` を使う規則はすべて原文のまま。
                     SP 用メディアクエリの中にある素の `2rem` / `4rem` も同じ理由で
                     `calc(2 * var(--faq-rem))` / `calc(4 * var(--faq-rem))` に置換。
     4. 色 … 参照元の色トークンの「中身」だけを差し替えた（規則側は無改造）。
             #4e4c49→--color-oki-black2 / #1f1e1b→--color-oki-black / #fff→--color-oki-white /
             #00c4cc→--color-oki-red(=#003678) / #cdcbc8→#cfcfcf（無彩色にしただけ）/
             #d4f4f5→#dbe6f4（青 #003678 の薄い色）。
     5. `.summary_iconInner.-on` の文字色だけ `--faq-color-text-black` →
        `--faq-color-text-white` に変えた。参照元の水色 #00c4cc の上なら黒い棒が読めるが、
        当ページの青 #003678 の上では 1.6:1 で消える。ここだけ規則を 1 語変えている。
     6. `@keyframes summary-icon-animate` → `faq-summary-icon-animate`（名前の衝突よけ）。
     7. `@media(hover:hover)` → `@media (any-hover:hover)`（当プロジェクトの決めごと）。
     8. 書体 … `--ff-number: neue-haas-grotesk-display` は参照元専用なので落とし、
               `system-ui, sans-serif` に。重さ（500 / 400）はそのまま。
     9. 追加した規則（参照元に無い。全部「印」を付けてある）:
        A. `list-style:none` 2 本 … 参照元は全体リセット `all:unset; display:revert` を
           前提にしていて、当ページはそれを移していない。無いと <summary> の三角が出る。
        B. `.label[data-faq-a] b{font-weight:inherit}` … 同じ理由。参照元では `all:unset` の
           おかげで <b> の実測が 400 になっている。
        C. `html:not(.js-on) … [open] … {scale:1 0}` … 参照元は `-opened` クラス（JS が付ける）
           だけで ＋/− を切り替えるので、JS が動かないと開いているのに ＋ のままになる。
           参照元自身が使っている `html:not(.js-on)` の書き方で、JS 無しのときだけ
           `[open]` を根拠に − にする。JS が動くときは参照元の規則がそのまま効く。
        D. prefers-reduced-motion の JS 非依存版 … 参照元の減速は `body.-reduced-motion`
           （JS が付ける）が入口なので、JS 無しでは効かない。同じ内容を素の
           `@media (prefers-reduced-motion: reduce)` にも書いた。
        E. 節の外側の間（`#faq` の margin と一覧の margin-top）… ここは参照元ではなく
           当ページの `#okis-news` の規則をそのまま使った（節どうしの調子を合わせるため）。
    10. 落とした規則（この画面に到達しないもの）:
        `.summary.-half` 系 3 本（半分幅の見出し用。使っていない）/
        `@media screen and (max-width: max(991px,61.9375rem))`（-half 専用）/
        `.faq-object01` `.faq-object02`（参照元の装飾の丸。参照元固有の飾り）/
        `a[target=_blank]` の 2 本（外部リンクを置かないため）。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── §1 :root（出典: index.D73YQqLl.css の :root。この部品が使う分だけ抜いた）──── */

/* 出典: index.D73YQqLl.css `body.-reduced-motion{--transition-duration:0s}` と
         `@media(prefers-reduced-motion:reduce){html:not(.js-on){--transition-duration:0s}}` */
body.-reduced-motion{ --faq-transition-duration: 0s }
/* もう 1 本（`@media (prefers-reduced-motion: reduce){ html:not(.js-on){--faq-transition-duration:0s} }`）は
   当ページの決めごと「reduced-motion は 1 本にまとめる」に合わせて §3 の末尾へ移した */

/* ══════════════════════════════════════════════════════════════════════════
   §2 節の外側 —— ここだけ参照元ではなく当ページ（style.css の #okis-news）の値
   ══════════════════════════════════════════════════════════════════════════ */
#faq{ margin-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width:1024px){
  #faq{ margin-top:calc(120 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}
#faq .faq-list{ margin-top:calc(42 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
@media (min-width:1024px){
  #faq .faq-list{ margin-top:calc(40 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))) }
}

/* ══════════════════════════════════════════════════════════════════════════
   §3 開閉するひと組
   出典: recruit.smarthr.co.jp/_astro/index.BGIjyZKp.css（規則の並び順も原文のまま）
   ══════════════════════════════════════════════════════════════════════════ */
faq-disclosure[data-faq]{ display:contents }

.container[data-faq]{
  border:1px solid var(--faq-color-ui-path);
  border-radius:var(--faq-radius);
}
/* ★追加 A: 参照元の全体リセット（all:unset）を移していないぶん。三角の印を消す */
.container[data-faq]{ list-style:none }
/* ★追加 F: 参照元の本文の組み方。出典 index.D73YQqLl.css の
   `body{ … line-height:2; letter-spacing:.04em; … }`。当ページの body は 1.4 なので、
   body を書き換える代わりにこの部品の器にだけ同じ 2 つを移した。
   （問いの行は下の .summary_inner が --faq-lh-h4 で上書きするので、
     効くのは答えの本文と Q/A の札の字間） */
.container[data-faq]{ line-height:2; letter-spacing:.04em }

faq-disclosure[data-faq]:not(:first-child) .container[data-faq]{ margin-top:var(--faq-space-02-rem) }

.summary[data-faq]{
  position:relative;
  padding:calc(var(--faq-space-02-03-rem) - 1px) calc(var(--faq-offset) - 1px);
  cursor:pointer;
  border-radius:var(--faq-radius) var(--faq-radius) 0 0;
}
/* ★追加 A: 同上（Chrome / Firefox の ::marker 側） */
.summary[data-faq]{ list-style:none }

.summary[data-faq]::after{
  position:absolute;
  top:-1px;
  left:-1px;
  width:calc(100% + 2px);
  height:calc(100% + 2px);
  pointer-events:none;
  content:"";
  border:2px solid transparent;
  border-radius:inherit;
}
body:not(.-reduced-motion) .summary[data-faq]::after{ transition:border-color .12s }

.summary[data-faq]:focus-visible{ outline-offset:-5px }

.container[data-faq]:not([open]) .summary[data-faq]{ border-radius:var(--faq-radius) }

.summary[data-faq]::-webkit-details-marker{ display:none }

.summary[data-faq].-full{
  padding-right:calc(var(--faq-offset) + 3 * var(--faq-rem) + var(--faq-gap) - 1px);
}

.summary_inner[data-faq]{
  display:flex;
  gap:calc(20 * var(--faq-px));
  font-size:var(--faq-fz-lv4);
  font-weight:500;
  line-height:var(--faq-lh-h4);
}

.summary_label[data-faq]{
  box-sizing:content-box;
  display:inline-block;
  flex:0 0 auto;
  align-self:flex-start;
  width:var(--faq-space-03-rem);
  padding:calc(1 * var(--faq-rem) - 1px) calc(clamp(1 * var(--faq-rem), .939vw + .6479 * var(--faq-rem), 2 * var(--faq-rem)) - 1px);
  margin-top:clamp(.2 * var(--faq-rem), .094vw + .1648 * var(--faq-rem), .3 * var(--faq-rem));
  font-family:var(--faq-ff-number);
  font-size:var(--faq-fz-xsmall);
  line-height:.8;
  text-align:center;
  border:1px solid var(--faq-color-gray);
  border-radius:var(--faq-radius);
}

/* 見出しの字の下に伸びる 1px の線（ホバーで 0 → 100%）*/
.summary_text[data-faq] span[data-faq]{
  background:linear-gradient(currentcolor, currentcolor) 100% 100%/0 1px no-repeat;
  transition:background-size var(--faq-transition-duration) var(--faq-transition-timing-function) 0s;
  padding-block:.175em;
}

/* ── 印（丸の中の ＋ / −）───────────────────────────────────────────── */
.summary_icon[data-faq]{
  --_size: calc(3 * var(--faq-rem));
  position:absolute;
  top:calc(50% - var(--_size) / 2);
  right:calc(var(--faq-offset) - 1px);
  width:var(--_size);
  height:var(--_size);
  overflow:hidden;
  isolation:isolate;
  border-radius:50%;
}
.summary_iconInner[data-faq]{
  position:absolute;
  top:50%;
  left:50%;
  width:100%;
  height:100%;
  overflow:hidden;
  color:var(--faq-color-text-white);
  border-radius:50%;
  translate:-50% -50%;
  animation:var(--faq-transition-duration) var(--faq-transition-timing-function) 0s faq-summary-icon-animate;
}
.summary_iconInner[data-faq]::before{
  position:absolute;
  top:calc(50% - .1 * var(--faq-rem));
  left:calc(50% - .5 * var(--faq-rem));
  width:calc(1 * var(--faq-rem));
  height:calc(.2 * var(--faq-rem));
  content:"";
  background-color:currentcolor;
}
.summary_iconInner[data-faq]::after{
  position:absolute;
  top:calc(50% - .5 * var(--faq-rem));
  left:calc(50% - .1 * var(--faq-rem));
  width:calc(.2 * var(--faq-rem));
  height:calc(1 * var(--faq-rem));
  content:"";
  background-color:currentcolor;
  transition:scale .3s ease 0s;
  scale:1 0;
}
body.-reduced-motion .summary_iconInner[data-faq]::after{ transition-property:none }

.container[data-faq]:not(.-opened) .summary_iconInner[data-faq]::after{ scale:1 1 }

/* ★追加 C: JS が動かないときだけ、開いているものを [open] で − にする。
   （参照元は -opened クラス＝ JS 依存だけで切り替えるので、JS 無しだと ＋ のまま） */
html:not(.js-on) .container[data-faq][open] .summary_iconInner[data-faq]::after{ scale:1 0 }

.summary_iconInner[data-faq].-def{
  background-color:var(--faq-color-text-black);
  animation:none;
}
.summary_iconInner[data-faq].-on{
  color:var(--faq-color-text-white);   /* 参照元は --color-text-black。§変更 5 参照 */
  background-color:var(--faq-color-accent);
}
.summary_iconInner[data-faq].-off{ background-color:var(--faq-color-text-black) }

.body[data-faq]{
  overflow:hidden;
  border-top:1px solid var(--faq-color-ui-path);
}

@keyframes faq-summary-icon-animate{
  0%{ width:0; height:0 }
  to{ width:100%; height:100% }
}

@media screen and (max-width: max(575px, 35.9375rem)){
  .summary[data-faq].-full{ padding-right:calc(var(--faq-offset) - 1px) }
  .summary_inner[data-faq]{
    flex-direction:column;
    gap:calc(2 * var(--faq-rem));   /* 参照元は 2rem（＝参照元の 10px 基準で 20px）*/
  }
  .summary_icon[data-faq]{
    top:calc(var(--faq-space-02-03-rem) - 1px);
    right:calc(var(--faq-offset) - 1px);
  }
}

@media (any-hover: hover){          /* 参照元は @media(hover:hover) */
  .summary[data-faq]:hover::after{ border-color:var(--faq-color-accent) }
  .summary[data-faq]:hover .summary_text[data-faq] span[data-faq]{
    background-position:0 100%;
    background-size:100% 1px;
  }
}

/* ── 動きを減らす設定（この部品ぶんの 1 本。組み込むときは style.css §13 へ畳む）── */

/* ══════════════════════════════════════════════════════════════════════════
   §4 答えの中身
   出典: recruit.smarthr.co.jp/_astro/index.B7afrDza.css の
         `.container[data-astro-cid-xmfsip22]` 一式
   ══════════════════════════════════════════════════════════════════════════ */
.container[data-faq-a]{
  display:flex;
  gap:calc(20 * var(--faq-px));
  padding:calc(var(--faq-space-02-rem) - 1px) calc(var(--faq-offset) - 1px);
  font-size:var(--faq-fz-small);
}
.container[data-faq-a] a[data-faq-a]{
  background-image:linear-gradient(var(--faq-color-mark), var(--faq-color-mark)), linear-gradient(currentcolor, currentcolor);
  background-repeat:no-repeat;
  background-position:100% 0, 0 100%;
  background-size:0 calc(100% - 1px), 100% 1px;
  transition:background-size var(--faq-transition-duration) var(--faq-transition-timing-function) 0s;
}
.label[data-faq-a]{
  box-sizing:content-box;
  display:inline-block;
  flex:0 0 auto;
  align-self:flex-start;
  width:var(--faq-space-03-rem);
  padding:calc(1 * var(--faq-rem) - 1px) calc(clamp(1 * var(--faq-rem), .939vw + .6479 * var(--faq-rem), 2 * var(--faq-rem)) - 1px);
  font-family:var(--faq-ff-number);
  font-size:var(--faq-fz-xsmall);
  line-height:.8;
  text-align:center;
  border:1px solid var(--faq-color-gray);
  border-radius:var(--faq-radius);
}
/* ★追加 B: 参照元では all:unset のおかげで <b> の実測が 400。当ページには
   そのリセットが無いので、同じ見え方になるよう継承に戻す */
.label[data-faq-a] b{ font-weight:inherit }

@media screen and (max-width: max(575px, 35.9375rem)){
  .container[data-faq-a]{
    flex-direction:column;
    gap:calc(4 * var(--faq-rem));   /* 参照元は 4rem */
    padding-top:calc(var(--faq-space-02-03-rem) - 1px);
  }
}

@media (any-hover: hover){          /* 参照元は @media(hover:hover) */
  .container[data-faq-a] a[data-faq-a]:hover{
    background-position:0 0, 0 100%;
    background-size:100% calc(100% - 1px), 100% 1px;
  }
}


/* ══════════════════════════════════════════════════════════════════════════════
   §14-company
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   company — 会社概要の表（定義リスト）＋ 所在地
   ────────────────────────────────────────────────────────────────────────────
   参照元: https://www.kubell.com/about/company/
           （指示にあった https://corp.chatwork.com/company/ は 301 でここへ来る）
           の `<dl class="c-dl">`（会社概要）と `<div class="c-accesslist">`（アクセス）
   規則の出どころ（実ファイル）: https://www.kubell.com/style/style.prod.css?20260828
     .c-dl / .c-dl>div / .c-dl>div dt / .c-dl>div dd
     .c-accesslist / .textbox / .mapbox / .mapbox iframe
     .c-btn 一式（アクセスの「Google Maps」ボタン）
     素の dt{} / iframe{} / :root のトークン
   取り方: 上の CSS を落として brace 対応でセレクタごとに切り出し、
           node rules.mjs https://www.kubell.com/about/company/ '.c-dl > div' で
           「実際に当たっている宣言」と一致することを確認してから写した。

   ── なぜ指示の 3 候補を使わなかったか（上から順に実際に開いて確かめた）──────
     www.recruit.co.jp        … 会社概要は /company/profile/。**<dl> は 0 個**で
                                `<table class="svelte-…">` + <th>/<td>。指示の
                                「定義リスト（dl）の表」に当たる部品が無い。
     www.cybozu.co.jp/company/… 301 → cybozu.co.jp/company/info/。ここも本体は
                                `<table class="mod-StandardTable">`。<dl> はあるが
                                「事業所」セル**の中**の入れ子で、表そのものではない。
     corp.infomart.co.jp      … /company/profile/ も `<table>`。しかも中身は Tailwind の
                                ユーティリティ列（`border-t border-solid …`）で、
                                持ってこられる「規則」が存在しない（クラス＝宣言 1 個）。
   → 3 つとも「読めない」のではなく「dl の表が無い」。そこで同等の日本語 BtoB として
     kubell（旧 Chatwork）の会社概要を使った。ここは `<dl class="c-dl">` の中に
     `<div><dt>…</dt><dd>…</dd></div>` を並べ、**1px の罫で行を区切る**作りそのもの。

   ── 原文のまま持ってきたもの ────────────────────────────────────────────
     セレクタ名・入れ子・寸法の式・並び順・1px の罫・31.48% の列幅・
     20px 30px / 16px 15px の詰め・gap 60px・aspect-ratio 3/2 → 1/1・
     order の入れ替え・743px の折り返し点・transition .2s ease-out・scale(0.96)
   ── 変えたところ（1 行ずつは報告に書いた。ここは要点だけ）───────────────
     1. 変数名に `--company-` を付けた（土台の :root へ畳むときに衝突しないため）。
        値は参照元のまま。土台に同じ役の変数があるものは土台側を使った。
     2. 色は青（--color-oki-red / -red2）へ。ただし罫 #DDDDDD と dt の地 #F3F3F3 は
        参照元の値のまま残した（理由は下の :root のブロックに書いた）。
     3. 参照元固有の書体（Poppins / .f-en）は落とした。太さは原文のまま。
     4. 見出しは参照元の `.c-headline--02`（4px の縦棒＋オレンジ）ではなく、
        この 1 枚の既存の見出し部品（.heading-hgroup）を使った。新しい見出しの
        寸法を作らないため（flow / faq / articles と同じ扱い）。
     5. 器は参照元の `.l-inner`（max-width:1160px）ではなく、この 1 枚の
        `.t-container` を使った（節の左端が他の節と 1px もずれないように）。
        列幅は % なので、比は参照元と同じまま横に伸びる。
     6. `.c-btn` のアイコン 2 つは参照元の画像ファイル（../image/common/*.svg）を
        指しているので、同じ形の SVG を data: で焼いて置き換えた（色は青）。
     7. ホバーは @media (any-hover:hover) で囲んだ（原文は (hover:hover)）。
     8. 到達しない分岐は落とした（下の各ブロックに名前を書いた）。
     9. 参照元がページ全体のリセットに置いている 2 本（`*{margin:0}` と `iframe{…}`）は、
        **宣言はそのまま・当たる範囲だけ絞って**持ってきた。前者を落とすと dd に UA 既定の
        40px が残って値の列がずれ、後者を落とすと地図が枠に収まらない（どちらも実測で発見）。
    10. 足した規則は 3 本だけ（#company-profile の節送り / .c-dl + .c-accesslist の空き /
        .c-dl>div dd a の下線）。値はいずれも参照元かこの 1 枚の既存の式から取っている。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時はこの 1 行を土台の :root へ畳む）──────────────────── */

/* ── 節の送り（出典: この 1 枚の style.css の #technologies-and-innovation。元は OKI）──
   参照元の節は `.l-section{padding-block:150px 110px}`（SP は 80px 110px）を自分で
   持っている。この 1 枚の節送りは 150px（PC）/ 70px（SP）の流体式なので、
   図そのものではない「節の外側の空き」だけ、この 1 枚の式に差し替えた
   （flow.css と同じ扱い）。 */
#company-profile{
  margin-top:calc(70 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
}
@media (min-width: 1024px){
  #company-profile{
    margin-top:calc(150 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)));
  }
}

/* ══════════════════════════════════════════════════════════════════════════════
   1. 会社概要の表（出典: style.prod.css の .c-dl 一式 / 素の dt{}）
   ══════════════════════════════════════════════════════════════════════════════ */

/* 素の dt。参照元はページ全体のリセット側に置いている。この 1 枚には dl/dt/dd が
   1 つも無い（index.html で 0 件を確認）ので、名前をそのまま持ってきた。 */
dt{
  font-weight:bold;
  line-height:var(--company-lineHeight-headline);
}

/* 出典: style.prod.css のリセット `*{ margin:0 }`。
   参照元はこの 1 行で dl / dd の UA 既定の余白ごと消しているが、この 1 枚のリセットは
   `p,h1,h2,h3,figure,hgroup{margin:0}` だけで **dl と dd を含まない**。
   そのままだと dd に UA 既定の margin-inline-start:40px が残り、
   **値の列が参照元より 40px 右へずれる**（1440px で dd の左端 470.8 → 510.8、
   768px でも同じ 40px。実測して見つけた）。dl の上下 1em も同様に残る。
   宣言は参照元のまま、当たる範囲だけこの部品が使う 2 つに絞った。 */
dl,dd{
  margin:0;
}

.c-dl{
  margin-bottom:1rem;
}

/* 1 行 = <div>。罫は行の下辺、先頭の行だけ上辺も引く。
   これが「1px の罫で行を区切る」の実体で、参照元も表組みではなくこの形。 */
.c-dl>div{
  display:flex;
  justify-content:flex-start;
  align-items:stretch;
  border-bottom:1px solid var(--company-color-grey06);
}
.c-dl>div:first-child{
  border-top:1px solid var(--company-color-grey06);
}
@media (max-width: 743px){
  .c-dl>div{
    flex-direction:column;
  }
}

.c-dl>div dt,.c-dl>div dd{
  padding:20px 30px;
}
@media (max-width: 743px){
  .c-dl>div dt,.c-dl>div dd{
    padding:16px 15px;
  }
}

.c-dl>div dt{
  width:31.48%;
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
  flex-direction:column;
  background-color:var(--company-color-grey08);
}
@media (max-width: 743px){
  .c-dl>div dt{
    width:100%;
    display:block;
    font-size:1rem;
  }
}

.c-dl>div dd{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  line-height:var(--company-lineHeight-tight);
  font-size:var(--company-fontSize-caption);
}

/* 足した規則 1 本。宣言は参照元の `.c-note a{text-decoration:underline}` から。
   この 1 枚の素の a は `color:inherit; text-decoration:none` なので、
   TEL の行が「押せる」ことが何も見えなくなるため。 */
.c-dl>div dd a{
  text-decoration:underline;
}

/* ══════════════════════════════════════════════════════════════════════════════
   2. 所在地（出典: style.prod.css の .c-accesslist 一式）
   PC は「地図が左・住所が右」（.mapbox は既定の order:1、.textbox が order:2）。
   SP は縦に積んで「住所が上・地図が下」（order が 1 / 2 に入れ替わる）。
   ══════════════════════════════════════════════════════════════════════════════ */

.c-accesslist{
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
  gap:60px;
}
@media (max-width: 743px){
  .c-accesslist{
    flex-direction:column;
    gap:0;
  }
}

/* 足した規則 1 本。値は参照元の `.c-accesslist+.c-accesslist{margin-top:80px}` /
   SP `60px` から。参照元では表と所在地の間を `<h2 class="c-headline--02">アクセス</h2>`
   の margin-block(80px 60px) が持っているが、見出しをこの 1 枚の部品に差し替えて
   節の中の小見出しを置かない形にしたので、隣接の空きを同じ値で置き直した。 */
.c-dl + .c-accesslist{
  margin-top:80px;
}
@media (max-width: 743px){
  .c-dl + .c-accesslist{
    margin-top:60px;
  }
}

.c-accesslist .textbox{
  order:2;
}
@media (max-width: 743px){
  .c-accesslist .textbox{
    order:1;
    width:100%;
  }
}
.c-accesslist .textbox p{
  margin-bottom:1em;
}
/* SP ではボタンを消す（下に地図そのものが出るため）。参照元のまま。
   住所の文字は消えないので、地図が読めなくても所在地は必ず読める。 */
@media (max-width: 743px){
  .c-accesslist .textbox .c-btn{
    display:none;
  }
}

.c-accesslist .mapbox{
  width:50%;
  margin-bottom:0;
  aspect-ratio:3/2;
}
@media (max-width: 743px){
  .c-accesslist .mapbox{
    width:100%;
    order:2;
    aspect-ratio:1/1;
  }
}
.c-accesslist .mapbox iframe{
  display:block;
  height:100%;
}

/* 参照元は素の `iframe{aspect-ratio:16/9; max-width:100%; height:auto}` を
   リセット側に置いている。この 1 枚は別の節（ヒーロー）に YouTube の iframe が
   あるので、**宣言はそのまま・当たる範囲だけこの部品の中に絞った**。
   これが無いと iframe の width=600 属性が効いて 540px の枠を 60px はみ出す。 */
.c-accesslist iframe{
  aspect-ratio:16/9;
  max-width:100%;
  height:auto;
}

/* ══════════════════════════════════════════════════════════════════════════════
   3. 地図へのボタン（出典: style.prod.css の .c-btn 一式）
   落とした分岐（この markup では到達しない）:
     .c-btn.is-mouseover-once::after / @keyframes animation-on|off
        … この 1 枚では JS が is-mouseover-once を付けない。さらに参照元自身が
          `.c-btn:hover[target=_blank]::after{animation:none}` と書いており、
          このボタンは target=_blank なので**参照元でも animation は走らない**。
     .c-btn[download]::after / .bg-grey .c-btn::before / .c-btn.is-orange /
     .c-btn.is-current / .l-col--3 .c-btn / .c-btn.align-c / .c-btn.align-r
        … 対応するクラス・属性をこの markup が 1 つも持たない。
     .c-btn--newtab
        … 参照元の CSS に**宣言が 1 つも無い**（markup にだけ残っている空クラス）。
          写しとして HTML には残し、規則は書いていない。
   ══════════════════════════════════════════════════════════════════════════════ */

.c-btn{
  position:relative;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  font-size:var(--company-fontSize-caption);
  font-weight:bold;
  line-height:var(--company-lineHeight-tight);
  min-height:60px;
  min-width:333px;
  width:max-content;
  padding:16px 20px;
  border-radius:var(--company-border-radius);
  z-index:1;
}

/* 地は本体ではなく ::before が持つ。ホバーで**この板だけ**が 0.96 に縮む
   （文字とアイコンは動かない）。 */
.c-btn::before{
  content:"";
  display:block;
  background-color:var(--company-color-grey08);
  position:absolute;
  top:0;
  left:0;
  border-radius:var(--company-border-radius);
  width:100%;
  height:100%;
  z-index:-1;
  transition:transform .2s ease-out;
}

/* 参照元は ../image/common/icon_arrow.svg を指している。同じ大きさ・同じ向きの
   矢印を data: で焼き直して置いた（色は青 #003678 = --color-oki-red の値）。
   変えたのは url() の中身だけで、寸法・center/contain・no-repeat は原文のまま。 */
.c-btn::after{
  content:"";
  display:block;
  width:7px;
  min-width:7px;
  height:10px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 10'%3E%3Cpath d='M1.2 1.2 5.3 5l-4.1 3.8' fill='none' stroke='%23003678' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* 別窓へ出るリンクだけアイコンが「別窓」の印に差し替わる。
   参照元の icon_newtab.svg の置き換え。寸法は原文のまま。 */
.c-btn[target=_blank]::after{
  width:9px;
  height:9px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 9'%3E%3Cpath d='M3.4 1H8v4.6M8 1 4 5' fill='none' stroke='%23003678' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M6.2 5.4V8H1V2.8h2.6' fill='none' stroke='%23003678' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

@media (max-width: 743px){
  .c-btn{
    min-width:initial;
    width:100%;
    padding:16px 20px;
    max-width:400px;
  }
}

/* 参照元は @media (hover: hover)。指示に合わせて any-hover に変えただけで
   中身は原文のまま。 */
@media (any-hover: hover){
  .c-btn:hover::before{
    transform:scale(0.96);
  }
}

/* ── 動きを減らす設定のとき（この 1 枚の作法に合わせて 1 本だけ）───────────
   この部品で動くのは .c-btn::before の縮みだけ。止める。
   止めても地・文字・アイコン・地図はそのまま見える（初期値が可視側にある）。 */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-contactband
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   contactband — ページ末尾（フッター直前）の全幅の問い合わせ帯
   ────────────────────────────────────────────────────────────────────────────
   参照元: https://www.alpsgiken.co.jp/ （株式会社アルプス技研・2026-09-08 取得）
           `<div class="contact-banner">`（`<footer>` の直前に置かれた全幅の帯）
   規則の出どころ（実ファイルを落として読んだ。書き起こしはしていない）:
     https://www.alpsgiken.co.jp/common/css/style.css?v4.6   428-535 行
       .contact-banner / .contact-banner-bg / .contact-banner-block /
       .contact-banner-message / .contact-banner-button a
       @media screen and (max-width:1400px) の同 5 本 + .contact-banner-text /
       .contact-banner-message span
     https://www.alpsgiken.co.jp/css/style.css               21-36 行（.pc / .sp）
                                                             83-98 行（a / a:hover）
     ※ `/css/layout.css` が `reset.css` `style.css` `renew.css` `sp.css` … を
       @import しており、素の `a{}` と `html body{line-height:2}` はそちら側にある。
   取り方: 上の 2 本を落として brace 対応で切り出したあと、
       node rules.mjs https://www.alpsgiken.co.jp/ '.contact-banner, …'
       node rules.mjs https://www.alpsgiken.co.jp/ '.contact-banner-button a'
     で「実際に当たっている宣言」と突き合わせた。控えは
     scratchpad(セッション)/cb/alps-matched.txt / alps-btn.txt。
     .contact-banner-text と .contact-banner-button は **PC では自分の規則を 1 本も
     持っていない**（当たるのはリセットだけ）ことも、この照合で確認している。

   ── なぜ指示の 3 候補を使わなかったか（上から順に、実際に描いて確かめた）──────
     3 つとも「読めない」のではなく、**この部品（フッター直前の全幅 CTA 帯）が
     頁に無い**。判定は headless Chrome で全頁を最後まで送って、フッターの手前
     2,600px に居る全幅の面をすべて数えたもの（scratchpad/cb/tail.mjs / scan*.mjs）。
       corp.freee.co.jp   … 末尾は #alliance / #recruit / #brand の 3 面で、どれも
                            `linear-gradient(#f7f7f8→#fff)` の白い箱。写真も帯も無く、
                            そのすぐ下が青いフッター。CTA 帯は存在しない。
                            /company/ /service/ /mission/ /sustainability/ も同じ（0 件）。
       www.cybozu.co.jp   … 301 → cybozu.co.jp/index.html。末尾に
                            `section.tp-Block.tp-Support`（y=3756 h=592）は在るが、
                            地は `linear-gradient(to right, …)` で**写真ではない**。
                            中身はタブ 2 枚（検討中／利用中）＋3 枚のカードで、
                            「大きな一言と 2 つのボタン」ではないうえ、開閉を JS が持つ。
                            /products/ にも該当なし。
       corp.raksul.com    … 末尾は `.p-home-news`（ニュース一覧）だけで、その下が
                            すぐ `footer#footer`。CTA 帯そのものが無い。
     → 指示どおり「同等の日本語 BtoB サイト」へ振り替えた。振り替え先を選ぶのに、
       人材・派遣・SaaS 系を 60 頁ほど機械で当たっている（curl + 正規表現で
       フッター手前の contact/cta 系クラスを拾い、写真とリンク 2 本以上で絞った）。
       採ったアルプス技研は **技術者派遣の会社**で業種が近く、帯が
       「写真 1 枚の上に白い一言＋白いボタン」という指示そのものの形をしている。
       次点は meitec.co.jp の `.f-contact`（`<img class="bg">` の上に文字）だったが、
       帯全体が 1 本のリンクでボタンの並びが取れないので採らなかった。

   ── 参照元の帯の作り（そのまま持ってきたもの）──────────────────────────────
     ・写真の覆い方 … 帯は `position:relative` の器。写真は **別の層** `.contact-banner-bg`
                      が `position:absolute / 上下左右 0 / width:100% / height:100% /
                      background-size:cover / background-repeat:no-repeat` で敷く。
                      文字とボタンは `.contact-banner-block{position:relative; z-index:2}`
                      で上に乗る。**覆い（暗幕）は 1 枚も無い** — 参照元は写真そのものが
                      青く沈めてあるので、白い字がそのまま読める（下の「写真」を参照）。
     ・文字の位置   … `.contact-banner-block` は max-width:944px を中央に置き、
                      `padding-top:92px` で上を空け、`display:flex /
                      justify-content:space-between / align-items:center` で
                      **左に文・右にボタン**。1440px 実測で block は x=248 幅 944、
                      文が y=92（2 行 84px）、ボタンが y=98（400×72）。
     ・ボタンの並び … `.contact-banner-button a{width:400px; display:block;
                      padding:15px 0; background:#fff; …}`。字の色は素の
                      `a{color:#6580C1}` がそのまま出ている（＝ボタンは白地に青字）。
                      1400px 以下では帯が縦積みになり、ボタンは
                      `width:100%; max-width:400px; margin:0 auto` で中央へ。

   ── 原文のまま持ってきた宣言（1 行ずつは報告に書いた）──────────────────────
     position:relative / position:absolute+0,0+100%,100% / background-size:cover /
     background-repeat:no-repeat / display:flex / justify-content:space-between /
     max-width:944px / margin:0 auto / padding-top:92px / align-items:center /
     z-index:2 / color:#fff / font-size:21px / font-weight:bold /
     width:400px / display:block / padding:15px 0 / background:#fff /
     text-align:center / 折り返し点 1400px と 979px / display:block+padding:45px 30px 57px /
     margin-bottom:30px / margin:0 auto / font-size:18px / span{display:block} /
     width:100%+max-width:400px / transition:opacity 0.3s ease / opacity:0.5 /
     text-decoration:none / display:block!important + display:none!important（.pc）

   ── 変えたところ ───────────────────────────────────────────────────────────
     1. 色 … 素の `a{color:#6580C1}`（参照元サイトのリンク青）を
             `var(--color-oki-red)`（#003678）へ。ボタンの字の色はここで決まる。
             `#fff` は **変えていない**（この 1 枚の --color-oki-white は #fbfbfb だが、
             写真の上に乗る字と白ボタンは参照元の #fff のまま置いた方が近い）。
     2. `height:240px` → `min-height:240px` … **ここだけ寸法の性質を変えた**。
             参照元の帯はボタンが 1 本で、240px の中に収まる（block 176 + 下の余り 64）。
             指示は 2 本なので 92 + 72 + 30 + 72 = 266 になり 240 では溢れる。
             240 を捨てずに **床** として残した。1400px 以下の `height:auto` も
             同じ理由で `min-height:auto` に読み替えている（打ち消しの向きは同じ）。
     3. `.contact-banner-block{padding-bottom:64px}` を足した … 参照元は
             240px の帯に 176px の block を置くので **下に 64px 写真が残る**（実測）。
             2 に伴って帯が伸びると、この余りが 0 になってボタンが帯の下端に貼り付く。
             64px は参照元の実測そのものなので、それを明示しただけ。
     4. `.contact-banner-button{display:flex; flex-direction:column; gap:…}` を足した …
             参照元の `.contact-banner-button` は規則を 1 本も持たない（照合で確認）。
             ボタンが 1 本なら要らないため。gap の値は参照元の
             `@media(max-width:1400px) .contact-banner-text{margin-bottom:30px}`
             ＝ **この帯自身が縦に積むときの空き** を借りた（30px）。
     5. `line-height:2` を帯の中だけに持ってきた … 参照元は `html body{line-height:2}`
             の上に乗っている。この 1 枚の body は 1.4 なので、持ってこないと
             21px の行が 42px→29px に化けて帯の比率が変わる（strength.css と同じ扱い）。
     6. `.pc` → `.contact-banner-pc` に改名 … 宣言は原文のまま。`.pc` は名前が
             一般的すぎて、1 枚に畳んだとき他の部品と当たり得るため。
     7. 電話の行 `.contact-banner-tel` を足した … 参照元の帯に電話は無い。
             色 #fff・font-weight:bold は `.contact-banner-message` から、
             font-size:18px は同じ帯が 1400px 以下で使う値から取った（新しい寸法は作っていない）。
     8. ホバーは `@media (any-hover:hover)` で囲んだ（参照元は素の `a:hover`）。
     9. `prefers-reduced-motion: reduce` を 1 本足した（この帯が持つ動きは
             `transition:opacity 0.3s ease` の 1 つだけなので、それを止める）。
    10. 参照元固有の書体（`"Hiragino Kaku Gothic ProN","Hiragino Sans"`）は落とした。
             太さ（bold）は原文のまま。
    11. 到達しない分岐は落とした … `.contact-nav-wrap` 一式（参照元で
             `display:none`）、`@media(max-width:700px)` の `.contact-float` 系
             （この帯の外の浮きボタン）、`.sp{}`（この帯では使わない）。

   ── 写真について ───────────────────────────────────────────────────────────
     参照元は `/common/img/contact_bg.jpg` を敷いている（青く沈めた実写）。
     ここは同じ性格の既存画像 front-recruit-back.jpg（2732×1398・日本人・
     すでに濃紺に沈めてある。index.html が 431/504 行で参照している同じファイル）を
     `.contact-banner-bg` の inline style で指す。**inline に置くのは参照元の写しで、
     参照元も `style="background-image: url(...)"` で書いている。**
     `background-position` は参照元と同じ既定（0% 0%）。1440px では cover の倍率が
     max(1440/2732, 330/1398)=0.527 になり、写真は 1440×737 に縮む。帯はその
     **上端 330px** を切り出す（顔から上の、いちばん沈んでいる帯域）。

   ── 実測（_verify/contactband/ の measure.mjs / contrast.mjs / behave.mjs）──────
     幅        帯          文の位置              ボタン
     1440px    1440×330    x=248 y=119 (21px)    400×72 が x=792、y=92 と 194（間 30px）
      768px     768×414    x=30  y=45  (18px)    400×72 が x=184、y=183 と 285
      375px     375×414    x=30  y=45  (18px)    315×72 が x=30、 y=183 と 285
     横スクロール 0（document.scrollWidth ≦ window.innerWidth）／器からのはみ出し 0／
     文字の欠け 0（clientWidth vs scrollWidth）／12px 未満 0（21px と 18px しかない）／
     JS エラー 0／写真 2732×1398 読み込み成功。
     **白い字と写真の対比**（写真を cover と同じ計算で canvas に描いて、文の矩形の
     画素を全部読んだ）: いちばん明るい画素でも 4.66〜4.81:1、平均 8.3〜9.3:1。
     文は 18〜21px の太字なので大きい文字の基準 3:1 も通常文字の 4.5:1 も超える。
     ＝ **参照元と同じく暗幕（覆い）を掛けなくて済む**ことを数字で確かめた。
     ホバー: opacity 1 → 0.5（transition opacity .3s）。
     prefers-reduced-motion: reduce で transition が none になり、opacity は 1 のまま。
     JS を外した頁（nojs.html）と付けた頁で、上の実測値は 1px も違わない（M-033）。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── §0 :root（組み込み時にここだけを土台の :root へ畳む）─────────────────────
   参照元は生の px しか持っていないので、新しく足したのは 1 つだけ。
   値は参照元のまま、名前だけ --contactband- を頭に付けて衝突を避けた。
   土台（--column-unit / --screen-size / --easing-* / --duration-* / --color-oki-*）で
   書ける式は 1 つも無い（参照元の寸法はすべて固定 px で、流体の式ではないため）。
   色だけは土台の --color-oki-red を使う。 */

/* ── §1 帯本体 ────────────────────────────────────────────────────────────── */
.contact-banner{
  position: relative;
  /* 参照元: height: 240px;（→ 変更 2。240 は床として残した） */
  min-height: 240px;
  /* 参照元の土台 html body{line-height:2} を帯の中だけに（→ 変更 5） */
  line-height: 2;
}

/* 素の a（参照元 /css/style.css 89-98 行）を、この帯の中だけに。
   色だけ参照元のリンク青 #6580C1 → この 1 枚の青（→ 変更 1）。
   **並び順は参照元と同じで、部品の規則より前**（参照元も素の style.css →
   common/style.css の順に読ませている）。後ろに置くと
   `.contact-banner-tel a` と特異度が同じで打ち消せず、電話が青字になる（実測で捕まえた） */
.contact-banner a{
  color: var(--color-oki-red);
  text-decoration: none;
  transition: opacity 0.3s ease;
}

/* 写真の層。帯いっぱいに敷くだけで、暗幕は掛けない（参照元のまま） */
.contact-banner-bg{
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  background-size: cover;
  background-repeat: no-repeat;
}

/* 文とボタンの器。左に文・右にボタン */
.contact-banner-block{
  position: relative;
  display: flex;
  justify-content: space-between;
  max-width: 944px;
  margin: 0 auto;
  padding-top: 92px;
  /* → 変更 3。参照元の帯で写真が下に残る量（240 − 92 − 84）を明示した */
  padding-bottom: 64px;
  align-items: center;
  z-index: 2;
}

.contact-banner-message{
  color: #fff;
  font-size: 21px;
  font-weight: bold;
}

/* → 変更 7。参照元に無い行。値は同じ帯の中から取った */
.contact-banner-tel{
  color: #fff;
  font-size: 18px;
  font-weight: bold;
}
.contact-banner-tel a{
  /* 上の `.contact-banner a` の色を打ち消して、親の #fff を継ぐ。
     特異度は同じ (0,1,1) なので、**後ろに置いてあること**でだけ勝っている。
     並べ替えると電話が青字に戻る（一度そうなったのを実測で捕まえた） */
  color: inherit;
}

/* → 変更 4。参照元は .contact-banner-button に規則を持たない */
.contact-banner-button{
  display: flex;
  flex-direction: column;
  gap: var(--contactband-stack-gap);
}

.contact-banner-button a{
  width: 400px;
  display: block;
  padding: 15px 0;
  background: #fff;
  font-weight: bold;
  font-size: 21px;
  text-align: center;
}

/* .pc（参照元 /css/style.css 21-36 行）。宣言は原文のまま、名前だけ改名（→ 変更 6） */
.contact-banner-pc{
  display: block !important;
}

/* ── §2 1400px 以下（参照元 @media screen and (max-width:1400px) の同ブロック）─ */
@media screen and (max-width: 1400px){

  .contact-banner{
    /* 参照元: height: auto;（min-height に読み替え。打ち消しの向きは同じ / → 変更 2） */
    min-height: auto;
  }

  .contact-banner-block{
    display: block;
    padding: 45px 30px 57px;
  }

  .contact-banner-text{
    display: block;
    margin-bottom: 30px;
  }

  .contact-banner-button a{
    margin: 0 auto;
  }

  .contact-banner-message{
    font-size: 18px;
  }

  .contact-banner-message span{
    display: block;
  }

  .contact-banner-button a{
    width: 100%;
    max-width: 400px;
    display: block;
  }

}

/* ── §3 979px 以下（参照元 /css/style.css の .pc / .sp の折り返し点）────────── */
@media screen and (max-width: 979px){
  .contact-banner-pc{
    display: none !important;
  }
}

/* ── §4 ホバー（参照元 a:hover を any-hover で囲んだ / → 変更 8）─────────────── */
@media (any-hover: hover){
  .contact-banner a:hover{
    opacity: 0.5;
    text-decoration: none;
  }
}

/* ── §5 動きを減らす設定（→ 変更 9）──────────────────────────────────────────
   この帯が持つ動きは上の transition ただ 1 つ。初期値はすべて可視・不透明なので、
   ここを止めても中身は 1 文字も消えない（JS も使っていない）。 */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-herobar
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   herobar — ヒーローの図形（OKI の「青い四角」= .background-copy を置き換える）
   ──────────────────────────────────────────────────────────────────────────────
   参照元: https://layerx.co.jp/ の `.c-svg-graphic`（`[data-svg-graphics]` の中）
   規則の実ファイル:
     https://layerx.co.jp/wp-content/themes/layerx/build/index.css?ver=337abe08bc46f4026613
     （1 行に潰してあるので行番号は無い。以下は先頭からのバイト位置）
       @73333  .c-svg-graphic
       @73812  .c-svg-graphic svg
       @73875  .c-svg-graphic mask path
       @73969  .c-svg-graphic.-reverse
       @74376  .c-svg-graphic.-hide
       @74407  .c-svg-graphic[data-color="1"] path        （〜@74554 の 4 本）
       @74603  [data-svg-graphics] / @74677 [data-svg-graphics].ready
   入場の式の実ファイル:
     https://layerx.co.jp/wp-content/themes/layerx/build/index.js?ver=337abe08bc46f4026613
       update(t, e){ r = t*(2.1*i) - i;  reverse なら r = i - t*(2.1*i)
                     translate(this.svg, r+'px')
                     s = 100*(1-e);      reverse なら s = -100*(1-e)
                     translate(this.maskPath, s+'%') }
       translate(el,x,y){ el.style.transform =
                          `perspective(1000px) translate3d(${x},${y},0px)` }
       to(t, {duration:1, ease:'Power3.easeInOut'})          ← 入場のトゥイーン
       this.container.style.setProperty('--diagonal', Math.sqrt(n*n+r*r)+'px')

   何をしているか（参照元の作り）:
     ・両端を斜めに切り落とした細長い面（viewBox 2337.6×70.9）を、
       画面の対角線ぶんの幅（--diagonal）まで伸ばして ±30° 傾ける。
     ・その面に、同じ形の `<mask>` を重ねる。マスクを横に滑らせると
       面がスリット状に「開く」。これが入場。
     ・複数枚を別々の色・別々の高さに置き、mix-blend-mode で重ねる。

   この 1 枚で変えたところは herobar.html の頭に 1 行ずつ書いた。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時は index.html の :root に畳む）───────────────────────── */

/* 器の寸法（--background-width / --background-height）は style.css §5 が既に持っているので
   畳むときに落とした（部品側は単体で描くための写しだった）。 */

/* 入場の進み具合。**素の値が「入場し終わった状態」**。
   JS はこれを 0 に落としてから戻す（JS が 1 行も動かなくても図形は見える）。
   style.css 635 行が同じ変数を 0 で置いているので、後から読ませて上書きする。 */
.hero-home{
  --progress-background-opacity: 1;
  --progress-1: 1;
  --progress-2: 1;
}

/* ── 図形の器（.background-copy が居た場所・そのままの入場）─────────────────
   位置・大きさ・入場の長さと曲線は style.css 681 行 .background-copy の原文のまま。
   落としたのは background-color と border-radius（＝置き換える「青い四角」そのもの）。
   足したのは overflow:hidden（参照元の器 [data-svg-graphics] は fixed inset-0 =
   画面が切り取り枠だった。ここでは四角の枠がその役をする）と --diagonal。 */
.hero-home .background-bars{
  position:absolute;
  bottom:0;
  left:0;
  opacity:var(--progress-background-opacity);
  transition-duration:var(--duration-500),var(--duration-1200);
  transition-property:height,width;
  transition-timing-function:cubic-bezier(.8,0,.7,.8),cubic-bezier(.5,0,0,1);
  width:calc(var(--background-width) * var(--progress-2) + (1 - var(--progress-2)) * calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));
  height:calc(var(--background-height) * var(--progress-1) + (1 - var(--progress-1)) * calc(44 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width))));

  overflow:hidden;
  /* 参照元 JS: s = Math.sqrt(n*n + r*r) を器に書き戻していた。
     ここは器が入場中に伸び縮みするので、実測すると帯の幅が途中で跳ねる。
     器の「入場し終わった寸法」から出す。hypot(a,b) は sqrt(a*a+b*b) と同じ。 */
  --diagonal: hypot(var(--background-width), var(--background-height));
}

/* [data-svg-graphics]（@74603 / @74677）
   原文: { mix-blend-mode:multiply; opacity:0; pointer-events:none } / .ready{opacity:1}
   ・multiply → screen。理由は 2 つ、どちらも実測（_verify/herobar/blend.json）:
     (1) この 1 枚の style.css の `.content` は `isolation:isolate` を持つので、
         図形の一群は**背景の写真とは混ざらない**（写真は兄弟の .media 側にある）。
         混ざるのは「面どうしが重なった所」だけ。帯の本体色は multiply でも screen でも
         同じ（rgb(0,54,120) / (0,31,69) / (0,45,100) / (0,37,82)）。
     (2) その重なりが、multiply だと **rgb(0,7,32)** ＝ 地の rgb(13,13,13) と見分けが
         つかない黒に潰れる。参照元は白地なので multiply が効くが、ここでは
         重なりが消える＝到達しない分岐になる。screen だと **rgb(0,75,150)** の
         明るい青になり、面が重なっていることが読める。
   ・opacity:0 / .ready で戻す形は使わない（JS が動かないと消える実装は禁止）。
     器の opacity は上の --progress-background-opacity が持っている。 */
.hero-home [data-svg-graphics]{
  mix-blend-mode:screen;
  pointer-events:none;
}

/* .c-svg-graphic（@73333）— 原文のまま。position:absolute は参照元では
   markup 側の Tailwind ユーティリティ `absolute` が持っていたので、ここに畳んだ。 */
.hero-home .c-svg-graphic{
  mix-blend-mode:multiply;
  transform:rotate(30deg);
  transform-origin:0 center;
  transition:opacity var(--herobar-duration-600) var(--easing-0);
  width:var(--diagonal);
  position:absolute;
}
/* 上の multiply も同じ理由で screen に置き換える（重なりが rgb(0,7,32) に潰れるため）。
   宣言を分けてあるのは、原文がどれで差し替えがどれかを差分で読めるようにするため。 */
.hero-home .c-svg-graphic{ mix-blend-mode:screen }

/* .c-svg-graphic svg（@73812）— 原文のまま */
.hero-home .c-svg-graphic svg{
  max-width:none;
  position:relative;
  width:100%;
}

/* .c-svg-graphic mask path（@73875）— 原文のまま */
.hero-home .c-svg-graphic mask path{
  fill:#fff!important;
  transition:opacity var(--duration-500) var(--easing-0);
}

/* .c-svg-graphic.-reverse（@73969）— 原文のまま */
.hero-home .c-svg-graphic.-reverse{
  right:0;
  transform:rotate(-30deg);
  transform-origin:100% center;
}

/* .c-svg-graphic.-hide（@74376）— 原文のまま。
   ただし markup 側には最初から付けない（付けると JS 待ちの不可視になる）。
   JS が入場の開始時だけ付けて、順番に外す。 */
.hero-home .c-svg-graphic.-hide{ opacity:0 }

/* [data-color]（@74407〜@74554）— 規則は原文のまま、値だけ青に差し替え */
.hero-home .c-svg-graphic[data-color="1"] path{ fill:var(--herobar-color-1) }
.hero-home .c-svg-graphic[data-color="2"] path{ fill:var(--herobar-color-2) }
.hero-home .c-svg-graphic[data-color="3"] path{ fill:var(--herobar-color-3) }
.hero-home .c-svg-graphic[data-color="4"] path{ fill:var(--herobar-color-4) }

/* ── 入場（参照元 JS の update() を CSS の式に写したもの）──────────────────
   原文:  r = t*n - i         （n = 2.1*i, i = 器の幅）→ svg を r px 動かす
          s = 100*(1-e)       （e = pathSize）        → maskPath を s % 動かす
   svg の幅は器の 100% なので、r px は自分の幅の (t*2.1 - 1)*100% と同じ。
   落ち着き先は r = 0、つまり t = 1/2.1 = .476190476。
   --herobar-path-progress / --herobar-path-size の**素の値が落ち着き先**。 */
.hero-home .c-svg-graphic{
  --herobar-path-progress: .476190476;
  --herobar-path-size: 1;
}
.hero-home .c-svg-graphic svg{
  transform: perspective(1000px) translate3d(calc((var(--herobar-path-progress) * 2.1 - 1) * 100%), 0px, 0px);
  transition: transform var(--herobar-duration-1000) var(--herobar-ease-power3-inout);
}
.hero-home .c-svg-graphic .maskPath{
  transform: perspective(1000px) translate3d(calc((1 - var(--herobar-path-size)) * 100%), 0px, 0px);
  transition: transform var(--herobar-duration-1000) var(--herobar-ease-power3-inout);
}
/* reverse は符号が逆（原文: r = i - t*n / s = -100*(1-e)） */
.hero-home .c-svg-graphic.-reverse svg{
  transform: perspective(1000px) translate3d(calc((1 - var(--herobar-path-progress) * 2.1) * 100%), 0px, 0px);
}
.hero-home .c-svg-graphic.-reverse .maskPath{
  transform: perspective(1000px) translate3d(calc((var(--herobar-path-size) - 1) * 100%), 0px, 0px);
}

/* ── 動きを止める設定 ─────────────────────────────────────────────────────── */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-megamenu
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   megamenu — PC で開くメガメニュー（ヘッダーの引き出し）
   ────────────────────────────────────────────────────────────────────────────
   参照元: https://www.recruit.co.jp/ のヘッダー `.i-header-nav-pc`
   規則の出どころ（CDP の CSS.getStyleSheetText で実ファイルから取った。控えは
   scratchpad/site-audit/mm/r-nav.css / r-misc.css / r-hover.txt / r-js2.txt）:
     .i-header-nav-pc / .i-nav / .i-nav-lvl1-item* / .i-subnav*  … Footer.component.css
     .underlined-btn*                                            … UnderlinedBtn.component.css
     svg.arrow-circle / svg.external-circle                      … ArrowCircle.component.css /
                                                                   ExternalCircle.component.css
     preflight（border-style / list-style / margin など）        … footer-and-header-legacy.component.css
     --custom-rem                                                … 同上（html に敷いてある）

   読み替え（参照元 → この 1 枚）:
     .i-header-nav-pc              … PC のナビ全体（引き出しの親）
     .i-nav-lvl1-item              … 1 段目の項目。**引き出し（.i-subnav）はこの中にある**
     .i-nav-lvl1-item__content     … 高さ 15px の窓。中の __inner が上へ 16px 動いて
                                     ::after（data-text の複製）が入れ替わる＝ラベルの巻き上げ
     .i-subnav                     … 引き出し本体。position:absolute / top:100% / left:0 / right:0
     .i-subnav__content            … 白い板（左=題／右=リンク）
     .i-subnav__content-title      … 左の柱（flex:1、右に 1px の罫）
     .i-subnav__content-links      … 右の柱（幅 88rem・3 列グリッド）
     .underlined-btn               … 1 本のリンク（下線 + 丸矢印）

   開閉の式は参照元のまま:
     閉  .i-subnav{ transform:translateY(calc(var(--custom-rem)*.5)); opacity:0;
                    visibility:hidden; pointer-events:none; transition:.3s ease-out }
     開  .i-nav-lvl1-item:is(.is-hover,.is-clicked) .i-subnav{
                    transform:translateY(0); opacity:1; visibility:visible; pointer-events:auto }
     ラベル .i-nav-lvl1-item:is(.is-hover,.is-clicked) .i-nav-lvl1-item__inner{ margin-top:-16px }
            （transition: margin-top .5s cubic-bezier(.075,.82,.165,1)）

   ■ 原文のまま持ってきたもの（値も式も 1 文字も変えていない）
     .i-header-nav-pc の display:flex / flex-direction:column / align-items:flex-end / gap:2px
     .i-opacified-item の transition: opacity .5s cubic-bezier(.075,.82,.165,1) / .i-opacified{opacity:.5}
     .i-nav{display:flex}
     .i-nav-lvl1-item__button の appearance:none / display:block / background:transparent /
       border:0 / cursor:pointer / padding-top:22px / padding-bottom:28px
     .i-nav-lvl1-item__content の position:relative / display:block / height:15px / overflow:hidden /
       padding-left:16px / padding-right:16px / font-size:14px / line-height:1.2!important /
       transition: all .5s cubic-bezier(.075,.82,.165,1)
     .i-nav-lvl1-item__content:after{content:attr(data-text); display:block; line-height:inherit!important}
     .i-nav-lvl1-item__inner の transition: margin-top .5s cubic-bezier(.075,.82,.165,1) /
       display:block / word-break:keep-all / line-height:inherit!important
     .i-nav-lvl1-item:last-of-type .i-nav-lvl1-item__content{padding-right:0}
     .is-hover / .is-clicked の 3 本（色・margin-top:-16px・引き出しの開）
     .i-subnav の position/left/right/top/z-index/padding/transition/transform/opacity/
       visibility/pointer-events（すべて原文）
     .i-subnav__content の display:flex / padding 64px 80px / 影 2 枚の距離とぼかし
     .i-subnav__content-title{flex:1 1 0%; border-right-width:1px}
     .i-subnav__content-title p{margin-bottom:calc(...*.6); margin-top:calc(calc(...*1)*-1);
       font-size:28px; line-height:1.55}
     .i-subnav__content-links{width:calc(...*88); padding-left:calc(...*8)}
     .i-subnav__content-links ul{grid / repeat(3,minmax(0,1fr)) / column-gap 4 / row-gap 1.6}
     .i-subnav__content-links ul li{width:calc(...*24)}
     .underlined-btn / __text / __icon の一式（border-bottom-width:var(--border-width) を含む）
     svg.arrow-circle / svg.external-circle の寸法・色変数・transition: stroke 1s ease
     参照元のヘッダー用 preflight（border-style:solid / list-style:none / margin:0 / a の色 など）
     .i-is-white（引き出しの親が写真や動画に重なるときラベルを白にする）

   ■ 変えたところ（これ以外は触っていない。1 行ずつ報告に書いた）
     1. 色トークンの中身だけ差し替え。#0065BD→var(--color-oki-red) / #DFE2E5→var(--color-oki-line-gray)
        / #fff（板）→var(--color-oki-white) / #000（本文）→var(--color-oki-black)
        / 影 rgba(14,51,108,.06|.12) → rgba(0,31,69,.06|.12)（= --color-oki-red2 #001f45 の rgba）
     2. 参照元固有の書体（Tazugane Gothic / Graphik Web）は落とし、和文は "Noto Sans JP"。
        太さ・行送り・字間は原文のまま（参照元は太さを宣言していないので宣言していない）
     3. PC/SP の境目 max-width:1170px → max-width:1023.98px。この 1 枚の
        .button-menu / .menu-mobile / .header-navigation-desktop が 1024px で切り替わるため、
        1170px のままだと 1024〜1170px で「引き出しも三本線も無い」帯ができる
     4. ホバー規則は @media (any-hover:hover) で囲んだ（原文は (hover:hover) and (pointer:fine)）
     5. --custom-rem の式を、この 1 枚の土台の変数で書き直した。
        原文 html{--custom-rem: calc(100vw*10/375)} / @media(min-width:768px){calc(100vw*10/1440)}
        こちら --custom-rem: calc(10 / var(--screen-size) * (var(--effective-viewport-width) - var(--scrollbar-width)))
        --screen-size は 390(SP)/1440(PC) なので **PC では原文と同値**（1440 分の 10）。
        この部品は PC だけに出るので SP 側の分母違い（390 vs 375）は到達しない
     6. 参照元の preflight は :is(header.i-site-header, .i-header-nav-sp, footer.i-footer) の
        3 つに掛かっている。この部品に要るのは 1 つ目だけなので .i-header-nav-pc に絞った
        （:where() なので特異度 0 のまま＝効き方は変わらない）
     7. 追加 1 本: .i-nav-lvl1-item:hover と :has(...:focus-visible) を「開く」条件に足した。
        参照元は JS が .is-hover を付けるだけなので、**JS が動かないと引き出しが開かない**。
        この 1 枚は「JS が動かなくても中身に届く」を守るので、CSS だけでも開くようにした
     8. 追加 1 本: @media (prefers-reduced-motion: reduce) で transition を全部切った（原文に無い）
     9. 落としたもの（到達しない分岐）: .i-top-links（外部リンクと検索窓の行。この部品では使わない）
        / .i-searchbox 一式 / .i-header-sp-nav-* / .i-nav-link*（参照元の SP 用）
        / .animated-text（1 文字ずつ span に割る JS が要る演出。JS 無しで中身が消えるので採らない）
        / svg.arrow-circle.sprite 系（スプライト運用用）
    10. 参照元の .view-more-link は「View more」の英字。ここは「詳しく見る」/「一覧を見る」/
        「請求フォームへ」に置き換えた（文言だけ。規則・入れ子は原文のまま）
    11. 追加 1 本: .view-more-link .external-circle{height:18px;width:18px}。
        参照元の .view-more-link は必ず .arrow-circle なので external 用の 1 行が無い。
        無いと preflight の :where(.i-header-nav-pc) svg{width:auto}（特異度 0,0,1）が
        :where(svg.external-circle)（0,0,0）に勝ち、丸が 18px → 105.6px に膨らむ（実測）。
        参照元の同じ形の規則（.i-header-sp-nav-accordion .external-circle{18px}）を写した
    12. 追加 1 行: .i-subnav__content-title{min-width:0}。変更 3 で境目を 1024 に下げた
        副作用で、1024〜約 1150px では題の柱が min-content で踏ん張り、右の柱が
        width:88rem を割って li（24rem 固定）が列からはみ出す。
        実測 1024px: 修正前 ul cw514 / sw526（12px）→ 修正後 0。1440px では効かない
    13. 記事の題「ホームページをリニューアルしました」→「リニューアルのお知らせ」。
        Chrome はカタカナの連なりを折らないので min-content が 149.3px になり、
        1024px の桁（使える幅 146.4px）で 2.8px はみ出していた（実測）

   ■ 参照元に無かったので持ってこなかったもの
     背景のぼかし（backdrop-filter）。参照元の引き出しは **白 1 枚 + 影 2 枚**で、
     backdrop-filter は 1 宣言も無い（.i-subnav / .i-subnav__content の実規則で確認）。
     ぼかしを足すと参照元に無い装飾を自作することになるので足していない。
     代わりに影 2 枚（0px 14px 10px / 40px 30px 40px）を距離・ぼかしとも原文のまま移した。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── :root（組み込み時はこの 1 行を土台の :root へ畳む）──────────────────── */

/* ── 参照元のヘッダー用 preflight（出典: footer-and-header-legacy.component.css）───
   原文は :where(:is(header.i-site-header, .i-header-nav-sp, footer.i-footer)) で
   囲ってある。この部品に要るのは 1 つ目だけなので .i-header-nav-pc に絞った。
   :where() なので特異度は 0 のまま＝土台の規則に勝たない。
   ★ これが無いと border-width:1px が効かない（border-style の既定は none）。 */
:where(.i-header-nav-pc),
:where(.i-header-nav-pc) :not(faketag),
:where(.i-header-nav-pc) :before,
:where(.i-header-nav-pc) :after{
  box-sizing:border-box; border-width:0; border-style:solid;
  border-color:var(--color-oki-line-gray); font-family:inherit; font-weight:inherit;
}
:where(.i-header-nav-pc) :before, :where(.i-header-nav-pc) :after{ --tw-content: "" }
:where(.i-header-nav-pc){ margin:0; line-height:1.5; -webkit-text-size-adjust:100%; tab-size:4 }
:where(.i-header-nav-pc) a, :where(.i-header-nav-pc) a:hover{ color:inherit; text-decoration:inherit }
:where(.i-header-nav-pc) blockquote, :where(.i-header-nav-pc) dl, :where(.i-header-nav-pc) dd,
:where(.i-header-nav-pc) h1, :where(.i-header-nav-pc) h2, :where(.i-header-nav-pc) h3,
:where(.i-header-nav-pc) h4, :where(.i-header-nav-pc) h5, :where(.i-header-nav-pc) h6,
:where(.i-header-nav-pc) hr, :where(.i-header-nav-pc) figure, :where(.i-header-nav-pc) p,
:where(.i-header-nav-pc) pre{ margin:0 }
:where(.i-header-nav-pc) ol, :where(.i-header-nav-pc) ul, :where(.i-header-nav-pc) menu{
  list-style:none; margin:0; padding:0;
}
:where(.i-header-nav-pc) button, :where(.i-header-nav-pc) input, :where(.i-header-nav-pc) optgroup,
:where(.i-header-nav-pc) select, :where(.i-header-nav-pc) textarea{
  font-family:inherit; font-size:100%; font-weight:inherit; line-height:inherit; color:inherit;
  margin:0; padding:0;
}
:where(.i-header-nav-pc) button, :where(.i-header-nav-pc) select{ text-transform:none }
:where(.i-header-nav-pc) button, :where(.i-header-nav-pc) [type=button],
:where(.i-header-nav-pc) [type=reset], :where(.i-header-nav-pc) [type=submit]{
  -webkit-appearance:button; background-color:transparent; background-image:none;
}
:where(.i-header-nav-pc) button, :where(.i-header-nav-pc) [role=button]{ cursor:pointer }
:where(.i-header-nav-pc) svg{ width:auto; height:auto }

/* ── 1 段目のナビ（出典: Footer.component.css）──────────────────────────── */
.i-header-nav-pc{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:2px;
}
/* 原文は max-width:1170px。この 1 枚の PC/SP の境目（1024px）に合わせた（変更 3） */
@media (max-width: 1023.98px){
  .i-header-nav-pc{ display:none }
}
/* 和文の書体だけこの 1 枚のものに（変更 2）。太さ・行送りは参照元が宣言していないので宣言しない */
html[lang=ja] .i-header-nav-pc{ font-family:"Noto Sans JP", system-ui, sans-serif }

.i-opacified-item{ transition: opacity .5s cubic-bezier(.075, .82, .165, 1) }
.i-opacified-item.i-opacified{ opacity:.5 }
@media (any-hover: hover){
  .i-opacified-item:hover{ opacity:1 }
}

.i-nav{ display:flex }

.i-nav-lvl1-item__button{
  /* ボタンのスタイル初期化 for Safari（原文のコメント） */
  -webkit-appearance:none;
  appearance:none;
  display:block;
  background:transparent;
  border:0;
  cursor:pointer;
  padding-top:22px;
  padding-bottom:28px;
}
.i-nav-lvl1-item .i-nav-lvl1-item__content{
  position:relative;
  display:block;
  height:15px;
  overflow:hidden;
  padding-left:16px;
  padding-right:16px;
  font-size:14px;
  line-height:1.2 !important;
  transition: all .5s cubic-bezier(.075, .82, .165, 1);
}
.i-nav-lvl1-item .i-nav-lvl1-item__content:after{
  content: attr(data-text);
  display:block;
  line-height:inherit !important;
}
.i-nav-lvl1-item .i-nav-lvl1-item__content .i-nav-lvl1-item__inner{
  transition: margin-top .5s cubic-bezier(.075, .82, .165, 1);
  display:block;
  word-break:keep-all;
  line-height:inherit !important;
}
.i-nav-lvl1-item:last-of-type .i-nav-lvl1-item__content{ padding-right:0 }
.i-nav-lvl1-item.i-active .i-nav-lvl1-item__inner{ color:var(--color-oki-red) }

/* 引き出しの位置の土台。原文の .i-subnav は header.i-site-header（position:fixed）を
   基準に left:0 / right:0 / top:100% で全幅に出る。この 1 枚では .header-static が
   position:absolute で left:0 / right:0 なので、同じ関係がそのまま成り立つ。
   ★ .i-header-nav-pc を position:relative にしないこと（引き出しがナビ幅に縮む）。 */
.i-nav-lvl1-item{ position:static }

/* ── 開閉（出典: Footer.component.css の @media (hover:hover) and (pointer:fine)）──
   条件だけ (any-hover:hover) に置き換えた（変更 4）。中の宣言は原文のまま。 */
@media (any-hover: hover){
  .i-nav-lvl1-item:is(.is-hover, .is-clicked, :hover) .i-nav-lvl1-item__content{
    color:var(--color-oki-red);
  }
  .i-nav-lvl1-item:is(.is-hover, .is-clicked, :hover) .i-nav-lvl1-item__inner{
    margin-top:-16px;
  }
  .i-nav-lvl1-item:is(.is-hover, .is-clicked, :hover) .i-subnav{
    transform:translateY(0);
    opacity:1;
    visibility:visible;
    pointer-events:auto;
  }
}
/* 追加（変更 7）: キーボードだけで開ける道。参照元は JS が .is-hover を付けるだけで、
   Tab では開かない。:focus-visible なので、マウスで押したときには効かない。 */
.i-nav-lvl1-item:has(.i-nav-lvl1-item__button:focus-visible) .i-nav-lvl1-item__content{
  color:var(--color-oki-red);
}
.i-nav-lvl1-item:has(.i-nav-lvl1-item__button:focus-visible) .i-nav-lvl1-item__inner{
  margin-top:-16px;
}
.i-nav-lvl1-item:has(.i-nav-lvl1-item__button:focus-visible) .i-subnav{
  transform:translateY(0);
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

/* ── 引き出し本体（出典: Footer.component.css）────────────────────────────── */
.i-subnav{
  position:absolute;
  left:calc(var(--custom-rem, 1rem) * 0);
  right:calc(var(--custom-rem, 1rem) * 0);
  top:100%;
  z-index:80;
  padding-left:calc(var(--custom-rem, 1rem) * 4);
  padding-right:calc(var(--custom-rem, 1rem) * 4);
  transition: .3s ease-out;
  transform:translateY(calc(var(--custom-rem, 1rem) * .5));
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.i-subnav__content{
  display:flex;
  background-color:var(--color-oki-white);
  padding-left:80px;
  padding-right:80px;
  padding-top:64px;
  padding-bottom:64px;
  box-shadow: 0px 14px 10px var(--megamenu-shadow-1), 40px 30px 40px var(--megamenu-shadow-2);
}
.i-subnav__content-title{
  flex:1 1 0%;
  /* 追加（変更 12）。原文には無い 1 行。PC/SP の境目を 1170→1024 に下げた（変更 3）ため、
     1024〜約 1150px では「題の柱の min-content」＞「余り」になり、flex の既定
     （min-width:auto）で題が踏ん張る。すると右の柱が width:88rem を割り、
     中の li（width:24rem 固定）が列からはみ出す。
     実測 1024px・資料ダウンロードの引き出し: 修正前 ul cw514 / sw526（12px はみ出し）。
     min-width:0 を足すと題が先に折り返し、右の柱は 88rem を保つ。1440px では
     そもそも余りが足りているので、この 1 行は効かない（前後で 1px も動かない）。 */
  min-width:0;
  border-right-width:1px;
  border-color:var(--color-oki-line-gray);
}
.i-subnav__content-title p{
  margin-bottom:calc(var(--custom-rem, 1rem) * .6);
  margin-top:calc(calc(var(--custom-rem, 1rem) * 1) * -1);
  font-size:28px;
  line-height:1.55;
  color:var(--color-oki-black);
}
.i-subnav__content-links{
  width:calc(var(--custom-rem, 1rem) * 88);
  padding-left:calc(var(--custom-rem, 1rem) * 8);
}
.i-subnav__content-links ul{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  column-gap:calc(var(--custom-rem, 1rem) * 4);
  row-gap:calc(var(--custom-rem, 1rem) * 1.6);
}
.i-subnav__content-links ul li{ width:calc(var(--custom-rem, 1rem) * 24) }
.i-subnav__content-links ul li .underlined-btn{ height:100% }
.i-subnav__content-links ul li .underlined-btn .underlined-btn__text{
  padding-bottom:calc(var(--custom-rem, 1rem) * 1.6);
  font-size:15px;
  font-weight:400;
}
.i-subnav__content-links ul li .underlined-btn .underlined-btn__icon{
  width:auto;
  padding-bottom:calc(var(--custom-rem, 1rem) * 1.9);
}
.i-subnav__content-links ul :is(.arrow-circle, .external-circle){
  height:calc(var(--custom-rem, 1rem) * 1.8);
  width:calc(var(--custom-rem, 1rem) * 1.8);
}

/* ── 1 本のリンク（出典: UnderlinedBtn.component.css）──────────────────────
   書体名（Tazugane Gothic / Graphik Web）だけ落とした（変更 2）。 */
.underlined-btn{
  display:flex;
  width:100%;
  align-items:stretch;
  overflow:visible;
}
.underlined-btn__text{
  flex:1 1 0%;
  border-bottom-width:1px;
  border-color:var(--color-oki-line-gray);
  padding-bottom:calc(var(--custom-rem, 1rem) * 1);
  padding-right:calc(var(--custom-rem, 1rem) * 1);
  text-align:left;
  font-size:calc(var(--custom-rem, 1rem) * 1.2);
  line-height:1.55;
  color:var(--color-oki-black);
}
.underlined-btn__icon{
  display:flex;
  width:calc(var(--custom-rem, 1rem) * 2.8);
  align-items:center;
  justify-content:center;
  overflow:visible;
  border-bottom-color:var(--color-oki-red);
  padding-bottom:calc(var(--custom-rem, 1rem) * 1);
}
.underlined-btn__text, .underlined-btn__icon{ border-bottom-width: var(--border-width) }

/* ── 「詳しく見る」（出典: ViewMoreLink.component.css）──────────────────────
   書体名（Graphik Web）だけ落とした（変更 2）。それ以外は原文のまま。
   markup も参照元のまま <a class="view-more-link"><span><svg/><span>…</span></span></a>
   （中の <span> が flex の行。<a> 自身は inline-block）。 */
.view-more-link{
  display:inline-block;
  align-self:flex-start;
  font-size:12px;
  font-weight:500;
  line-height:1.55;
  height:24px;
}
.view-more-link > span{
  display:flex;
  align-items:center;
  gap:6px;
  overflow:visible;
}
.view-more-link .arrow-circle{ height:18px; width:18px }
/* 追加（変更 11）。参照元の .view-more-link は必ず .arrow-circle を持つので
   .external-circle 用の 1 行が無い。この部品は外部リンクの行で .external-circle を
   使うため、参照元の同じ形の規則
   （.i-header-sp-nav-accordion .external-circle{height:18px;width:18px}）を写した。
   ★ これが無いと preflight の :where(.i-header-nav-pc) svg{width:auto}（特異度 0,0,1）が
     :where(svg.external-circle)（特異度 0,0,0）に勝ち、丸が 105.6px に膨らむ（実測）。 */
.view-more-link .external-circle{ height:18px; width:18px }

/* ── 丸矢印（出典: ArrowCircle.component.css / ExternalCircle.component.css）──
   色の変数の中身だけ差し替え（変更 1）。dasharray の変数は原文のまま置いた。 */
:where(svg.arrow-circle){
  height:calc(var(--custom-rem, 1rem) * 1.8);
  width:calc(var(--custom-rem, 1rem) * 1.8);
  overflow:visible;
  --arrow-dasharray: 54;
  --arrow-dasharray-inverse: -54;
  --circle-icon-color-default: var(--color-oki-red);
  --circle-icon-color-active: var(--color-oki-red);
  --circle-color-default: var(--color-oki-line-gray);
  --circle-color-active: var(--color-oki-red);
}
.arrow-circle{ overflow:visible }
.arrow-circle .circle{ transition: stroke 1s ease; stroke:var(--circle-color-default) }
.arrow-circle .arrow{ transition: stroke 1s ease; stroke:var(--circle-icon-color-default) }
@media (any-hover: hover){
  svg.arrow-circle.animated:hover > .circle,
  svg.arrow-circle.animated[data-active=true] > .circle,
  .icon-circle-container:hover svg.arrow-circle > .circle{
    stroke: var(--circle-color-active, var(--circle-color-default));
  }
  svg.arrow-circle.animated:hover > .arrow,
  svg.arrow-circle.animated[data-active=true] > .arrow,
  .icon-circle-container:hover svg.arrow-circle > .arrow{
    stroke: var(--circle-icon-color-active, var(--circle-color-default));
  }
}
:where(svg.external-circle){
  height:calc(var(--custom-rem, 1rem) * 1.8);
  width:calc(var(--custom-rem, 1rem) * 1.8);
  --external-dasharray: 54;
  --external-dasharray-inverse: -54;
  --circle-icon-color-default: var(--color-oki-red);
  --circle-icon-color-active: var(--color-oki-red);
  --circle-color-default: var(--color-oki-line-gray);
  --circle-color-active: var(--color-oki-red);
}
.external-circle{ overflow:visible }
.external-circle .circle{ transition: stroke 1s ease; stroke:var(--circle-color-default) }
.external-circle .external{ transition: stroke 1s ease; stroke:var(--circle-icon-color-default) }
@media (any-hover: hover){
  svg.external-circle.animated:hover > .circle,
  svg.external-circle.animated[data-active=true] > .circle,
  .icon-circle-container:hover svg.external-circle > .circle{
    stroke: var(--circle-color-active, var(--circle-color-default));
  }
  svg.external-circle.animated:hover > .external,
  svg.external-circle.animated[data-active=true] > .external,
  .icon-circle-container:hover svg.external-circle > .external{
    stroke: var(--circle-icon-color-active);
  }
}

/* ── 写真や動画に重なるときのラベル（出典: Footer.component.css の .i-is-white）──
   参照元は親に .i-is-white を付ける。この 1 枚は既に
   body:has([data-header-style=skeleton]) というフックを持っているので、
   同じ宣言をそちらにも掛けた（値は原文のまま #fff !important / fill:#fff）。 */
.i-header-nav-pc.i-is-white .i-nav-lvl1-item__content span,
.i-header-nav-pc.i-is-white .i-nav-lvl1-item__content:after,
body:has([data-header-style=skeleton]) .i-header-nav-pc .i-nav-lvl1-item__content span,
body:has([data-header-style=skeleton]) .i-header-nav-pc .i-nav-lvl1-item__content:after{
  color:#fff !important;
  fill:#fff;
}

/* ── 動きを減らす設定（原文に無い。この 1 枚の決め事で足した／変更 8）──────── */


/* ══════════════════════════════════════════════════════════════════════════════
   §14-stickycta
   ══════════════════════════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════════════════
   stickycta — スクロールに追従する問い合わせ導線（画面下端の帯・CTA 2 つ）
   ──────────────────────────────────────────────────────────────────────────────
   参照元: https://bakuraku.jp/expense/  （2026-09-08 取得）
     セレクタ: #lx-sticky-cta / #lx-sticky-cta__buttons / #lx-sticky-cta p /
               #lx-sticky-cta a / #lx-sticky-cta button
     入れ子 : div#lx-sticky-cta
                > p                        （1 行の呼びかけ）
                > div#lx-sticky-cta__buttons  （grid・2 列）
                    > a  ／ > a             （CTA 2 つ）
                > button                   （閉じる・absolute）
     規則の出どころ: bakuraku.jp/expense/ が実行時に <head> へ差し込む <style>
       （素の HTML には無い。CDP で document.styleSheets から原文を回収した。
         回収の手順は sticky/grab-lx.mjs、当たっている宣言の確認は
         `node rules.mjs https://bakuraku.jp/expense/ '#lx-sticky-cta' …`）
     原文の写しは sticky/lx-dump.json に置いてある。

   ── 「いつ出るか・どう出るか」の規則（参照元のまま）─────────────────────────
     ・出入りは transform の translateY(100%) ⇄ translateY(0) だけ。
       所要時間と曲線は `transition: transform .18s ease`（この頁の --duration-* /
       --easing-* に .18s / ease と同じものが無いので、原文の値のまま置いた）。
     ・引っ込む条件は 3 つの論理積 —「閉じられていない」「フッターと交わっていない」
       「有効」。参照元はフッターを IntersectionObserver（threshold .1）で見張る。
       ＝ フッターが 1 割見えた時点で帯が引っ込むので、フッター内側にある
          この頁の「↑ 上へ戻る」（.footer .bottom .button・position:absolute）とは
          構造上ぶつからない。重なりが 0 であることは実測で確かめた（報告参照）。
     ・閉じたら sessionStorage に記録して、その滞在中は出さない。
     ・ResizeObserver で自分の高さを --lx-sticky-height に書き戻す（頁側が避けるため）。

   ── 参照元から変えたところ（これ以外は原文のまま）─────────────────────────
     1. 【出方の向きを反転】原文は素の状態が translateY(100%)（＝画面外）で、
        JS が .is-visible を付けて初めて見える。この頁の決まり
        「初期値を不可視にして JS で戻す実装をしない」に真正面から反するので、
        素を translateY(0)、隠す側を .is-hidden にした。値も曲線も所要時間も同じ。
        JS が 1 行も動かなくても帯は下端に出る。
     2. 【色】rgb(9 105 95 / …) → rgb(0 54 120 / …)（= --color-oki-red #003678）。
        #fff → var(--color-oki-white)、#233447 → var(--color-oki-black)。
     3. 【44px の床】原文の SP は a{padding:10px 8px;font-size:13px} で行の高さが
        既定（≒19px）＝ 1 行のとき 39px にしかならない。line-height:24px を敷いて
        10+24+10 = 44px を確定させた（PC も 12+24+12 = 48px で原文の実測と同値）。
        inline-block のまま行箱＝内容箱にしたので、字は上下の中心から動かない。
     4. 【閉じるの当たり判定】原文は 24×24。::before を重ねて 44×44 にした
        （inset:-10px -8px -10px -12px。見た目の × は 24×24・位置も動かない）。
        併せて SP の上書き padding-inline-end:40px だけ外し、PC 側の 44px を全幅で
        使う（40px のままだと 44px の当たり判定が右のボタンに 2px かぶるため）。
     5. 【ホバー】原文にホバー規則は無い。この頁の作法
        （.footer .bottom .button:hover{background-color:var(--color-oki-red2)}）に
        ならって 1 組だけ足し、@media (any-hover: hover) で囲った。
     6. 【動きを減らす設定】原文に無いので 1 本足した。
     7. 【字を箱の中心へ】a に align-content:center を 1 行。grid が 2 つのボタンを
        同じ高さに伸ばすので、片方だけ 1 行で収まると素の inline-block では字が上へ
        寄る（375px で実測 dy=-12.5px）。参照元は左右とも 2 行になる文言だったので
        この穴が見えていなかった。display は原文の inline-block のまま。
     8. 落としたもの: dataLayer への計測 3 本（この頁に dataLayer が無い＝到達しない）。
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── §0 :root（組み込み時に畳めるよう先頭に分ける）──────────────────────────
   参照元は --lx-sticky-opacity を要素の style 属性で（0.85）、
   --lx-sticky-height を ResizeObserver で documentElement に書いていた。
   前者はここへ移し、後者は JS が無いときの既定として 0px を置いてある。
   名前は参照元のまま（この頁の 3 本に --lx- / #lx- は 1 つも無い＝衝突しない。実測）。
   ------------------------------------------------------------------------- */

/* ── §1 帯（原文のまま。色 2 か所と、出方の向きだけ変えた）────────────────── */
#lx-sticky-cta {
  position: fixed; z-index: 9999; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center;
  gap: 16px; flex-wrap: nowrap;
  padding: 12px 44px calc(12px + env(safe-area-inset-bottom)) 20px;
  /* 参照元: color:#fff / background: rgb(9 105 95 / var(--lx-sticky-opacity, .92)) */
  color: var(--color-oki-white);
  background: rgb(0 54 120 / var(--lx-sticky-opacity, .92));
  /* 調整ポイント：上記paddingの44pxは右上の閉じるボタン用 */
  box-shadow: 0 -4px 16px rgba(0,0,0,.15);
  transform: translateY(0); transition: transform .18s ease;
}
/* 参照元: #lx-sticky-cta{transform:translateY(100%)} / .is-visible{translateY(0)}
   ＝ 素を可視、隠す側をクラスへ入れ替えた（値・曲線・所要時間は同じ） */
#lx-sticky-cta.is-hidden { transform: translateY(100%); }

#lx-sticky-cta p { margin: 0; text-align: center; }

#lx-sticky-cta__buttons {
  display: grid; width: min(100%, 520px); flex: 0 1 520px;
  grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px;
}

#lx-sticky-cta a {
  display: inline-block; min-width: 160px; padding: 12px 20px;
  /* 参照元: color:#233447 / background:#fff */
  color: var(--color-oki-black); text-align: center;
  background: var(--color-oki-white); border-radius: 999px; font-weight: 700;
  /* ↓ 原文に無い 2 行。
     line-height … 押せる高さを 12+24+12 = 48px（PC）／10+24+10 = 44px（SP）に確定させる床。
     align-content … 2 つのボタンは grid の既定 stretch で同じ高さに伸びる。
       375px では「資料ダウンロード」だけが 2 行になるので、素の inline-block だと
       1 行で収まる「相談する」の字が箱の中心から 12.5px 上にずれていた（実測 dy=-12.5）。
       行の束を内容箱の中央へ寄せて直す。display は原文の inline-block のまま
       （flex にすると匿名の子が縮まず、「資料ダウンロード」が 1 行 104px のまま
        内側 88.7px を左右 7.7px ずつはみ出した。実測して差し戻した）。 */
  line-height: 24px;
  align-content: center;
}

#lx-sticky-cta button {
  /* 調整ポイント：閉じるボタンの位置・サイズ */
  position: absolute; top: 6px; right: 8px;
  width: 24px; height: 24px; padding: 0;
  /* 参照元: color:#fff */
  color: var(--color-oki-white); background: transparent; border: 0; cursor: pointer;
  font-size: 16px; line-height: 24px;
}
/* ↓ 原文に無い 1 本。見た目の × は 24×24（right:8px）のまま動かさず、
      当たり判定だけ 44×44 にする。左右は 8px / 12px と非対称にしてある —
      等しく 10px ずつ広げると帯の右端を 2px はみ出し、帯の scrollWidth が
      1442 になった（1440 幅で実測）。この形なら右端がちょうど帯の縁に揃い、
      SP では右のボタンの右端（padding-inline-end:44px の内側）とも 0px で接する。 */
#lx-sticky-cta button::before{
  content: ""; position: absolute; inset: -10px -8px -10px -12px;
}

/* ── §2 SP（原文のまま。padding-inline-end の上書きだけ外し、床を 1 行足した）── */
@media (max-width: 767px) {
  /* 参照元: #lx-sticky-cta{ gap:8px; padding-inline-start:12px; padding-inline-end:40px }
     40px は外した（§1 の 44px を使う。閉じるの当たり判定と右のボタンを離すため） */
  #lx-sticky-cta { gap: 8px; padding-inline-start: 12px; }
  #lx-sticky-cta p { max-width: 96px; font-size: 12px; text-align: center; }
  #lx-sticky-cta__buttons { min-width: 0; gap: 6px; }
  /* ↓ line-height:24px は原文に無い床。10+24+10 = 44px（1 行）／68px（2 行） */
  #lx-sticky-cta a { min-width: 0; padding: 10px 8px; font-size: 13px; line-height: 24px; }
}

/* ── §3 ホバー（原文に無い。この頁の作法に合わせて足した）────────────────── */
@media (any-hover: hover) {
  #lx-sticky-cta a{
    transition: background-color var(--duration-300) var(--easing-0);
  }
  #lx-sticky-cta a:hover{ background-color: var(--color-oki-gray3); }
  #lx-sticky-cta button:hover{ color: var(--color-oki-gray3); }
}

/* ── §4 動きを減らす設定（原文に無い。1 本だけ）────────────────────────────
   出入りそのものは残す（transform の到達点は同じ）。移動の見せ方だけ切る。 */


/* ══ §13 動きを止めたい人の分 ══════════════════════════════════════════════
   OKI は 1 本も持っていない。8 部品がそれぞれ 1 ブロックずつ持っていたものを、
   宣言はそのままここへ 1 つに集約した（部品側からは外してある）。 ═════════ */
@media (prefers-reduced-motion: reduce){

  /* ヘッダーとナビ */
  .header, .header .logo, .header .t-container[data-header-type=dynamic],
  .header .button-language, .button-blur, .button-menu,
  .button-menu .icon-open, .button-menu .icon-close,
  .header-navigation-desktop .label,
  .header-navigation-desktop .track-item,
  .header-navigation-desktop .track-item-inner,
  .menu-mobile, .menu-mobile .menu-body,
  .menu-mobile [data-delay-target], .menu-mobile .background{
    transition-duration:.01ms !important; transition-delay:0ms !important;
  }

  /* ヒーロー */
  .hero-home .media{ translate:none; scale:none }
  .hero-home .copy span, .hero-home .background-copy, .hero-home [data-action-items]{ transition:none }

  /* 共通部品（ボタン・下線・写真の拡大・アイコンの押し出し） */
  .button-base .button-base__label, .button-base .buttonBase__icon--left,
  .button-base .buttonBase__icon--right,
  [data-underline-anime-target]:before, [data-underline-anime-target]:after,
  [data-image-scale-anime-target], [data-image-scale-anime-target] img,
  [data-push-icon-root] :where(.icon-base){
    transition-duration:.01ms !important; transition-delay:0s !important;
  }
  [data-image-scale-anime-root]:hover [data-image-scale-anime-target] img{ scale:1 }
  .button-base:hover .button-base__label, .button-base:hover .buttonBase__icon--right{ transform:translateZ(0) }
  .button-base .buttonBase__icon--left, .button-base:hover .buttonBase__icon--left{ transform:scale(.001) }

  /* ニュース一覧 */
  #okis-news [data-image-scale-anime-target], #okis-news [data-image-scale-anime-target] img,
  #okis-news [data-underline-anime-target]:before, #okis-news [data-underline-anime-target]:after,
  #okis-news .arrow-slide-in__icon{ transition:none !important }
  #okis-news [data-image-scale-anime-root]:hover [data-image-scale-anime-target] img{ scale:1 }
  #okis-news [data-arrow-slide-in-anime-root]:hover .arrow-slide-in__icon.-arrow-1,
  #okis-news [data-arrow-slide-in-anime-root]:focus-visible .arrow-slide-in__icon.-arrow-1{ transform:translate(0); opacity:1 }
  #okis-news [data-arrow-slide-in-anime-root]:hover .arrow-slide-in__icon.-arrow-2,
  #okis-news [data-arrow-slide-in-anime-root]:focus-visible .arrow-slide-in__icon.-arrow-2{ opacity:0 }

  /* 事業領域 */
  .home-business-segment .home-business-segment__list_number,
  .home-business-segment .home-business-segment__list_description,
  .home-business-segment .home-business-segment__list_title,
  .home-business-segment .deco-dot,
  .home-business-segment .home-business-segment__image,
  .home-business-segment .home-business-segment__list_arrow.-bg-filled{ transition:none !important }
  .home-business-segment .deco-dot, .home-business-segment .home-business-segment__image{ transform:none }

  /* About の固定面 */
  .elevator .elevator__sticky-area_pagination_active,
  .elevator .elevator__sticky-area_pagination_link,
  .elevator [data-toggle-show-content],
  .elevator [data-toggle-show-content] [data-toggle-show-target],
  #about-us .button-base .button-base__label,
  #about-us .button-base .buttonBase__icon--left,
  #about-us .button-base .buttonBase__icon--right{
    transition-duration:1ms !important; transition-delay:0s !important;
  }
  .elevator [data-toggle-show-content]{ transform:none !important }
  .elevator [data-toggle-show-content] [data-toggle-show-target]{ transform:none !important }
  .elevator [data-elevator-image] img{ transition:none !important; transform:none !important }

  /* 数字 */
  .home-oki-numbers .swiper-wrapper, .home-oki-numbers .swiper-slide,
  .home-oki-numbers .button-square, .home-oki-numbers .button-square>span{
    transition-duration:.01ms !important; transition-delay:0s !important;
  }
  .home-oki-numbers .track-mobile{ scroll-behavior:auto }

  /* フッター */
  .footer .bottom .button{ transition-duration:.01ms !important }
  [data-hover-fade-target]{ transition-duration:.01ms !important }

  /* ── ここから下は parts2 の 13 部品ぶん（各部品が持っていたものを宣言そのまま）── */

  /* ── gateway ── */
  :where(.remind-gateway) .duration-300,
  :where(.remind-gateway) .duration-500{ transition-duration: 1ms }

  /* ── strength ── */
  .top-intro__list-wrapper{ scroll-behavior: auto }

  /* ── flow ── */
  ._1xo1mbu0{ transition:none }

  /* ── result ── */
  .result *,
  .result *::before,
  .result *::after{
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }

  /* ── articles ── */
  .articles__viewport{ scroll-behavior: auto }
  .articles__arrow,
  .articles__arrow::before,
  .articles__progress-bar,
  .articles__card,
  .articles__figure img{ transition: none }
  .articles__card:hover .articles__figure img{ transform: none }

  /* ── message ── */
  .p-media-section__pic{ transition: none }
  .p-media-section.is-standby:not(.js-fired) .p-media-section__pic,
  .p-media-section--ltr.is-standby:not(.js-fired) .p-media-section__pic,
  .is-standby .js-maskAnime-ele:not(.js-fired),
  .is-standby .js-maskAnime-tape:not(.js-fired){
    opacity: 1;
    transform: none;
    clip-path: none;
  }
  .js-maskAnime-ele.js-fired,
  .js-maskAnime-tape.js-fired{ animation: none }

  /* ── recruit ── */
  :where(.remind-recruit) *,
  :where(.remind-recruit) *::before,
  :where(.remind-recruit) *::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }

  /* ── faq ── */
  /* 出典: index.D73YQqLl.css `@media(prefers-reduced-motion:reduce){html:not(.js-on){--transition-duration:0s}}` */
  html:not(.js-on){ --faq-transition-duration: 0s }
  /* 出典: index.BGIjyZKp.css の同じブロック */
  html:not(.js-on) .summary[data-faq]::after{ transition:none }
  /* ★追加 D: 参照元の減速は body.-reduced-motion（JS が付ける）が入口なので、
     JS が動かない機械にも同じことが起きるように素の指定を足した */
  .summary[data-faq]::after,
  .summary_iconInner[data-faq]::after,
  .summary_text[data-faq] span[data-faq]{ transition-property:none }
  .summary_iconInner[data-faq]{ animation:none }

  /* ── company ── */
  .c-btn::before{
    transition:none;
  }
  .c-btn:hover::before{
    transform:none;
  }

  /* ── contactband ── */
  .contact-banner a{
    transition: none;
  }

  /* ── herobar ── */
  .hero-home .background-bars,
  .hero-home .c-svg-graphic,
  .hero-home .c-svg-graphic svg,
  .hero-home .c-svg-graphic .maskPath,
  .hero-home .c-svg-graphic mask path{ transition:none }
  .hero-home .c-svg-graphic.-hide{ opacity:1 }

  /* ── megamenu ── */
  .i-opacified-item,
  .i-nav-lvl1-item .i-nav-lvl1-item__content,
  .i-nav-lvl1-item .i-nav-lvl1-item__content .i-nav-lvl1-item__inner,
  .i-subnav,
  .arrow-circle .circle, .arrow-circle .arrow,
  .external-circle .circle, .external-circle .external{
    transition:none !important;
  }
  .i-subnav{ transform:none }

  /* ── stickycta ── */
  #lx-sticky-cta,
  #lx-sticky-cta a{ transition: none; }
}

/* ══════════════════════════════════════════════════════════════════════════
   ヒーローの動画に「若干」の調整（2026-09-08 オーナー指示）
   OKI 本来の .media-wrapper{opacity:.8} は触らず、上に薄く 1 枚だけ足す。
   .media-wrapper が opacity .8 なので、下の値はさらに 0.8 倍で効く＝実際はかなり薄い。
   白い「Scroll to explore」と停止ボタンが明るい場面で沈まないように、
   左（青帯と見出しの側）と下（操作の側）だけ落としている。
   ══════════════════════════════════════════════════════════════════════════ */
.hero-home video.media{ filter:saturate(.9) contrast(1.05) brightness(.96) }
.hero-home .media-wrapper::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    /* 右下。「Scroll to explore」は 11px の白なので、必要な比は 4.5。
       この動画の右下は明るい場面があり、覆い 50% 未満だと 1,470 コマ中 80 コマで割った */
    radial-gradient(58% 40% at 100% 100%, rgba(13,13,13,.55) 0%, rgba(13,13,13,0) 72%),
    /* 左。見出しは 62px の太字なので必要な比は 3.0。
       この帯の平均が 32% あれば 1,470 コマすべてで 3.0 を超える（24% だと 75 コマで割った） */
    linear-gradient(90deg, rgba(0,31,69,.45) 0%, rgba(0,31,69,.14) 46%, rgba(0,0,0,0) 78%),
    linear-gradient(0deg,  rgba(13,13,13,.22) 0%, rgba(13,13,13,0) 26%);
}

/* ══════════════════════════════════════════════════════════════════════════
   【削除】ヒーローの見出し・停止ボタンの text-shadow（2026-09-09 に入れたもの）
   ────────────────────────────────────────────────────────────────────────────
   消した宣言:
     .hero-home h1.copy{ text-shadow: 0 1px 2px rgba(0,20,45,.45), 0 4px 24px rgba(0,20,45,.35) }
     .hero-home .button-scroll{ text-shadow: 0 1px 3px rgba(0,20,45,.55) }
   理由: **出どころが 1 つも無い。** 写真・動画の上に白い字を置いている箇所を
   参照 12 社ぶん（設計 3・デザイン 3・studio 3・ブランド 3）で計算済みスタイルまで
   当たったが、text-shadow / -webkit-text-stroke / mix-blend-mode / 文字の後ろの板は
   **18/18 で 0 件**（craft/sekkei.md elements[0] / craft/studio.md elements 末尾 /
   craft/brand.md elements）。12 社のうち 1 社も持っていないので、値を写す先が無い。
   参照元がやっているのは「覆いのグラデーションを 1 枚敷く」だけなので、
   その役目は下の .media-wrapper::after（実測で決めた覆い）に一本化する。
   ══════════════════════════════════════════════════════════════════════════ */


/* ══════════════════════════════════════════════════════════════════════════
   §15 ホバーの受け口を 3 つにする（森ビル / 移植 1 部品）
   ────────────────────────────────────────────────────────────────────────────
   出どころ: craft/rules/sekkei-mori.css §3（= mori.fmt.css:2666-2698）
     森ビルは自分のホバー 3 種すべてを
       .x:focus-visible …………………………… 終状態
       @media (hover:none) and (pointer:coarse){ .x:active …… 終状態 }
       @media (hover:hover) and (pointer:fine) { .x:hover ……… 終状態 }
     の 3 つに分けて書いている。**取ったのはこの「分け方」だけで、値は 1 つも足していない。**
     終状態は全部この style.css が既に持っている宣言をそのまま写した（(c) 既存の組み合わせ）:
       下線   … 498-502 行 [data-underline-anime-root]:hover [data-underline-anime-target]:after
       写真   … 523-527 行 [data-image-scale-anime-root]:hover … img
       淡転   … 1747-1750 行 [data-hover-fade-*]
       矢印   … 1035-1040 行（:focus-visible は OKI が既に持っている。coarse の :active だけ足す）
   なぜ足すか: いまは @media (any-hover: hover) の :hover だけ。
     キーボードでたどる人には手掛かりが 1 つも出ず、指だけの機械では 3 つとも死ぬ。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 下線が伸びる ── */
[data-underline-anime-root]:focus-visible [data-underline-anime-target]:after{
  transform:scaleX(1); opacity:1; transition-delay:.01s;
}
@media (hover: none) and (pointer: coarse){
  [data-underline-anime-root]:active [data-underline-anime-target]:after{
    transform:scaleX(1); opacity:1; transition-delay:.01s;
  }
}

/* ── 写真が 1.08 倍 ── */
[data-image-scale-anime-root]:focus-visible [data-image-scale-anime-target] img{
  scale:var(--image-scale-size);
}
@media (hover: none) and (pointer: coarse){
  [data-image-scale-anime-root]:active [data-image-scale-anime-target] img{
    scale:var(--image-scale-size);
  }
}

/* ── 淡転（opacity .7） ── */
[data-hover-fade-target]:any-link:focus-visible{ opacity:.7; transition-duration:var(--duration-300) }
[data-hover-fade-root]:any-link:focus-visible [data-hover-fade-target]{ opacity:.7; transition-duration:var(--duration-300) }
@media (hover: none) and (pointer: coarse){
  [data-hover-fade-target]:any-link:active{ opacity:.7; transition-duration:var(--duration-300) }
  [data-hover-fade-root]:any-link:active [data-hover-fade-target]{ opacity:.7; transition-duration:var(--duration-300) }
}

/* ── 矢印が滑って消える（:focus-visible は 1039-1040 行に既在） ── */
@media (hover: none) and (pointer: coarse){
  [data-arrow-slide-in-anime-root]:active .arrow-slide-in__icon.-arrow-1{
    transform:translate(120%); opacity:0;
    transition:transform .4s var(--easing-2),opacity .3s var(--easing-1);
  }
  [data-arrow-slide-in-anime-root]:active .arrow-slide-in__icon.-arrow-2{
    transform:translate(0); opacity:1;
    transition:transform .5s 0s var(--easing-2),opacity .3s 0s var(--easing-1); transition-delay:.1s;
  }
}

/* 上で増えた受け口を、減速の指定でも止める（§13 と同じ扱い）。
   §13 は :hover しか書いていないので、:active / :focus-visible ぶんをここで足す。 */
@media (prefers-reduced-motion: reduce){
  [data-image-scale-anime-root]:focus-visible [data-image-scale-anime-target] img,
  [data-image-scale-anime-root]:active [data-image-scale-anime-target] img{ scale:1 }
  [data-underline-anime-root]:focus-visible [data-underline-anime-target]:after,
  [data-underline-anime-root]:active [data-underline-anime-target]:after,
  [data-hover-fade-target]:any-link:focus-visible,
  [data-hover-fade-target]:any-link:active,
  [data-hover-fade-root]:any-link:focus-visible [data-hover-fade-target],
  [data-hover-fade-root]:any-link:active [data-hover-fade-target],
  [data-arrow-slide-in-anime-root]:active .arrow-slide-in__icon{
    transition-duration:.01ms !important; transition-delay:0s !important;
  }
}


/* ══════════════════════════════════════════════════════════════════════════
   §16 フッターのナビを「罫つきの行」にする（Konel / 移植 1 部品）
   ────────────────────────────────────────────────────────────────────────────
   出どころ: craft/rules/studio-konel.css §2・§3・§4
             = craft/rules/_src/studio-konel-1440-27.css:2-3（.css-1gcgofq）
               craft/rules/_src/studio-konel-1440-28.css:2-3（.css-10gp97m）
               craft/rules/_src/studio-konel-1440-24.css:2-2（.css-1cis6gx）
             = https://www.konel.co.jp/ の emotion が吐いた inline <style>
   ★ 要点は **`border-top: 1px solid` と書いて色を書かないこと**。
     色は currentColor＝同じ行の文字色から来るので、罫と字が必ず揃う。
     Konel はこれを 66 か所でやっていて、それがあの密度の本体（影 0・角丸 0・囲み 0）。
     だから「色を自社のものに置き換える」は**ここでは色を書かないことがそのまま置き換え**になる。
   ★ 全行に border-top を入れ、**最後の行だけ border-bottom で閉じる**。
   ★ 掛ける先: フッターの `ul` を持つ 2 群だけ（会社情報 6 行 / 事業内容 3 行 = 9 本）。
     採用（label-link）と所在地（住所）は ul を持たないので当たらない。
   ★ 44px は既存の `.footer .footer-navigation-group a{min-height:44px}`（1744 行）が持つ。
     Konel の `padding: 10px 0px` を足しても 15px×190% + 20px = 48.5px で下回らない。
   ══════════════════════════════════════════════════════════════════════════ */
.footer .footer-navigation-group nav ul{ width:100%; display:flex; flex-flow:column; }
.footer .footer-navigation-group nav ul > li,
.footer .footer-navigation-group nav > a{ border-top: 1px solid; }
.footer .footer-navigation-group nav ul > li:last-child,
.footer .footer-navigation-group nav > a:last-child{ border-bottom: 1px solid; }
.footer .footer-navigation-group nav ul > li > a{ display:block; padding: 10px 0px; }
.footer .footer-navigation-group nav > a{ padding: 10px 0px; }

/* ★ 2026-09-10、**1024px 以上では罫を外す**（オーナー報告「ここら辺崩れている」）。
   ── なぜ崩れて見えたか（実測）──────────────────────────────────────────
   OKI のフッターは 4 列が**隙間ゼロで隣り合う**（会社情報 600→840 / 事業内容 840→1110 /
   所在地 1110→1395。OKI 本家も同じ座標）。
   そこへ列いっぱいの罫を引くと、**隣の列の罫と端がぴったり繋がって 1 本の長い線に見える。**
   しかも列ごとに行数が違う（会社情報 6 / 事業内容 3）ので、
   **上 3 行は 600→1110 の長い線、下 3 行は 600→840 の短い線**になり、揃っていないように見える。

   ── なぜモバイルでは残すか ────────────────────────────────────────────
   375px では列が縦に積まれるので隣と繋がらず、Konel の狙いどおり「罫つきの行」になる
   （実測で確認済み）。**部品自体は 1 列のための道具**なので、1 列のときだけ使う。

   ── なぜ「消す」で正しいか ────────────────────────────────────────────
   **OKI 本家のフッターには罫が 1 本も無い**（1440px で実描画して確認）。
   消すと土台どおりに戻る。 */
@media (min-width: 1024px){
  .footer .footer-navigation-group nav ul > li,
  .footer .footer-navigation-group nav > a,
  .footer .footer-navigation-group nav ul > li:last-child,
  .footer .footer-navigation-group nav > a:last-child{ border-top:0; border-bottom:0 }
  .footer .footer-navigation-group nav ul > li > a,
  .footer .footer-navigation-group nav > a{ padding:0 }
}
