/* lint-allow: W30 .stack .numbered .faq-list .grid .tnd-feat-cases .tnd-grid4 .svc-related — CMS（SITE PUBLIS）の箱（くり返しブロック）が挟む div 要素を前提にした補正。ワイヤー単体には CMS の div が無いのでローカルでは当たらない（2026-10-01 池澤判断・判断ログ「ブロック化の最終形は足し引きする単位で分ける」論点6） */
/* CMS のブロック入れ子の補正（案・2026-10-01 検証用）。
   箱（くり返しブロック）に class を付けると、CMS は「箱の div ＞ div（pbNested）＞ 項目の div（pbNestedWrapper）
   ＞ div（pbBlock pbBlockBase）＞ div ＞ 中身」の形で出力する。シェアブロックの項目は、さらに
   「置き場所の div ＞ div（pbNested）＞ シェアブロック本体の div」が加わる。
   1. 箱の中の CMS の div を display: contents で素通しにし、中身の要素を箱の直接の子として並べる。
   2. jst.css で「箱の直接の子」に当てていた指定（.stack > * など）は CMS では当たらないので、
      中身の要素（pbBlockBase の中の div の直下）に当て直す。
   3. 先頭・末尾の判定（:first-child・:last-child）は、項目の div（pbNestedWrapper）の位置で判定する。
   2026-10-01 の再現検証（hp_93 その3）：下の 1-2 と 4 を足した状態で、services/sase を最終形のブロック構成にした
   PC プレビューがワイヤーと一致した（1920px・全要素の位置と大きさの差分0件）。
   編集画面では、この素通しで項目の div が大きさ0になり、TinyMCE のツールバーが出なかった（項目を直せない）。
   5 で、編集画面だけ素通しをやめる（2026-10-01 池澤判断＝案A。CMS の検証ページで確認済み＝5 の注記）。 */

/* 1. 素通し。課題詳細のカードの箱（.tnd-feat-cases＝関連サービス2列、.tnd-grid4＝関連課題4列）も block-design.md §3 の
      「箱＋項目」なので含める（2026-10-03 コードレビュー K24。含めないと、グリッドの子が div.pbNested 1つだけになり
      カードが1列に縦積みになった＝CMS の入れ子を再現して solutions/ransomware の 1440px で確認） */
:is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4) > .pbNested,
:is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4) > .pbNested :is(.pbNested, .pbBlockBase, .pbBlockBase > div) { display: contents; }

/* 2. 箱の直接の子に当てていた指定の当て直し */
.stack .pbBlockBase > div > * { padding: var(--s-3) 0; border-top: 1px solid var(--line); }
.section.paper-2 .stack .pbBlockBase > div > * { border-color: var(--line-on-paper2); }
.numbered .pbBlockBase > div > * { display: flex; gap: var(--s-2); align-items: flex-start; counter-increment: jst-n; }
/* 番号バッジ（jst.css の .numbered > *::before と同じ指定。W42 で番号用の要素をやめた・2026-10-01） */
.numbered .pbBlockBase > div > *::before {
  content: counter(jst-n);
  content: counter(jst-n) / "";
  flex: 0 0 auto; width: 30px; height: 30px; border-radius: var(--pill);
  background: var(--yellow); color: var(--navy);
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--f-head); font-weight: 800; font-size: 14px; margin-top: 2px;
}
/* jst.css の .numbered > *::before は、箱の内側の div（素通しにした pbNested）にも当たり、余分なバッジが出る。止める */
.numbered > .pbNested::before { content: none; }
.numbered > .pbNested { counter-increment: none; }
:is(.grid, .tnd-feat-cases, .tnd-grid4) .pbBlockBase > div > * { min-width: 0; }

/* 1-2. CMS の回り込み解除を止める。view_css.php の `.pbNested::after {content:""; display:block; clear:both}` は、
        素通しにした div の中から縦並び・グリッドの1項目として数えられ、項目ごとに余分な間隔（.numbered では 32px）が入る。
        箱そのもの（class を付けた div も pbNested を持つ）と、その中の pbNested の両方で止める（2026-10-01 実機で確認） */
:is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4)::after,
:is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4) .pbNested::after { content: none; }

/* 3. 先頭・末尾 */
.stack > .pbNested > .pbNestedWrapper:last-child .pbBlockBase > div > * { border-bottom: 1px solid var(--line); }
/* 関連サービスが奇数枚のとき、900px 以下で最後の1枚を全幅にする（jst.css の .svc-related の C26 の当て直し）。
   jst.css は「箱の直接の子の最後」で判定するが、CMS では箱の直接の子は div.pbNested 1つで、素通しの div には
   grid-column が働かない。項目の div（pbNestedWrapper）の位置で判定し、中身（カード）に当てる
   （2026-10-03 コードレビュー K34。再現：services/sase の 768px で3枚目が 348px のままだった→720px） */
@media (max-width: 900px) {
  .svc-related:has(.svc-card) > .pbNested > .pbNestedWrapper:last-child:nth-child(odd) .pbBlockBase > div > * { grid-column: 1 / -1; }
}
/* jst.css の .faq-list details.faq:first-child（先頭だけ上罫）は、CMS では各 FAQ が自分の div の先頭になるため全部に当たる。2問目以降を打ち消す */
.faq-list > .pbNested > .pbNestedWrapper:not(:first-child) details.faq { border-top: 0; }

/* 4. ヘッダーを単独のブロック（タグ挿入）にすると、親がヘッダーと同じ高さのブロック枠になり、スクロールしても上に貼り付かなくなる（position: sticky が働かない）。
      枠の側を貼り付かせる（2026-10-01 プレビューで確認。ヘッダーエリアに置く最終形では足りない＝7） */
.pbNestedWrapper:has(> header.header) { position: sticky; top: 0; z-index: 90; }

/* 5. 編集画面（メインエリアに pb-edit が付く。公開ページと PC プレビューには付かない）
      1 の素通しのままだと、項目の枠の大きさが0になり、エディタのツールバーが出ず項目を直せない。
      jst.css の「箱の直接の子」への指定（.numbered > * の横並びなど）も CMS の内側の div に当たり、項目の幅が0になる。
      → 編集画面では素通しをやめて項目を縦に積み、内側の div への指定を打ち消す（2026-10-01 池澤判断＝案A）。
      項目の見た目（罫線・番号バッジ・FAQ の枠）は 2・3 の指定がそのまま当たる。
      CMS の検証ページ（2026-10-01・hp_93 その4）で確認：4種類の箱の9項目すべてでツールバーが出て、ソース表示から
      入力・書き換え・保存ができた。項目の追加もできた。PC プレビューは素通しのまま（ワイヤーどおりの並び）だった。 */
.pb-edit :is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4) > .pbNested,
.pb-edit :is(.stack, .numbered, .faq-list, .grid, .tnd-feat-cases, .tnd-grid4) > .pbNested :is(.pbNested, .pbBlockBase, .pbBlockBase > div) { display: block; }
.pb-edit :is(.numbered, .grid, .tnd-feat-cases, .tnd-grid4) { display: block; }
.pb-edit .stack > .pbNested { padding: 0; border: 0; }
.pb-edit .numbered > .pbNested > .pbNestedWrapper + .pbNestedWrapper { margin-top: var(--s-4); }
/* カードは内側の div をグリッドにして、編集画面でも公開と同じ列数で並べる（列数は箱の g-2・g-3 などの指定を引き継ぐ） */
.pb-edit :is(.grid, .tnd-feat-cases, .tnd-grid4) > .pbNested { display: grid; grid-template-columns: inherit; gap: var(--s-3); }

/* 6. ブロック分割の目印（2026-10-08）
      組み方（判断ログ 2026-10-07_ブロックは取り込み・分割・流し込み直しで組む.md）では、区切りごとに
      <h6 class="pb-split">split</h6> を挟んで取り込み、見出しタグ分割フィルターで分ける。流し込み直したブロックでは
      目印は消えるが、取り込みのまま残すブロック（お問い合わせの K3 フォームなど＝blocks-kit.py の refill:false）には
      先頭に目印が残り、「split」の文字が出て下の要素が約18px下がった（2026-10-08、contact/service で実測）。
      目印は表示しない（隠すと 1920px・375px とも差分0件になった）。ワイヤーには h6.pb-split が無いので影響しない。 */
h6.pb-split { display: none !important; }

/* 7. ヘッダーをヘッダーエリアのシェアブロックに置く形（G11。2026-10-08）では、ヘッダーの外側の CMS の div
      （シェアブロック本体・置き場所・#area1・#headerArea）がどれもヘッダーと同じ高さ（76px）で、#headerArea は
      overflow: hidden。4 の指定（シェアブロック本体の div を貼り付かせる）だけでは親の高さの中でしか動けず、
      スクロールするとヘッダーが流れていった（作業フォルダの会社情報・サービス一覧の PC プレビュー、1920px・375px で実測）。
      #headerArea の外側の #page はページ全体の高さがあるので、#headerArea そのものを貼り付かせる。
      overflow: visible は、貼り付いたヘッダーの下に出る影や、開いたメニューを切らないため。
      編集画面（メインエリアに .pb-edit が付く）では貼り付かせない（編集中にヘッダーが本文に重なるのを避ける）。 */
body:not(:has(.pb-edit)) #headerArea:has(header.header) { position: sticky; top: 0; z-index: 90; overflow: visible; }
