/*
Theme Name: URAHACKS LAB
Theme URI: https://urahacks.com/
Description: 裏英国ハックス研究所 v7「THE LAB ／ 潜入」。潜入→書斎→書庫→開封の四幕。言葉と紙と写真で語る、日本語エディトリアルの機密研究所テーマ。クリーンルーム実装。
Author: 裏英国ハックス研究所
Version: 7.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: urahacks-lab
*/

/* =========================================================================
   トークン
   ========================================================================= */
:root {
	/* 色（闇） */
	--abyss:     #081419;
	--petrol:    #0d2129;
	--line:      #1c3a41;
	--phosphor:  #57e98f;
	--ghost:     #a7bcb6;
	--ghost-dim: #647f79;
	--bone:      #eef0e6;
	/* 色（紙） */
	--manila:      #d9c99f;
	--manila-2:    #cdbb8c;
	--manila-line: #b3a074;
	--paper-lit:   #e5d8b3;
	--file-ink:      #232016;
	--file-ink-soft: #55503b;
	--accent-paper:  #6a4a12;
	--alert:         #a83323;

	/* 書体 */
	--serif: "Noto Serif JP", "Hiragino Mincho ProN", serif;
	--sans:  "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", sans-serif;
	--doc:   "Courier Prime", "Courier New", monospace;

	/* 級数（60 ↔ 12 の間を段階固定：15/18/22/27/34。紙面本文のみ v7.3 で 16.5px/34px、記事題 36px） */
	--fs-note: 12px;
	--fs-body: 15px;
	--fs-18:   18px;
	--fs-22:   22px;
	--fs-27:   27px;
	--fs-34:   34px;

	/* 余白（8px グリッド。要素間は 12/24/48 の3段階） */
	--sp-1: 12px;
	--sp-2: 24px;
	--sp-3: 48px;
	--sp-sec: clamp(96px, 13vw, 140px);
	--pad-x: clamp(24px, 6vw, 40px);
	--maxw: 1120px;
	--head-h: 62px;

	/* 本文の行送り（紙面の便箋グリッド基準：15px × 2.2 = 33px） */
	--paper-lh: 33px;
}

/* =========================================================================
   リセット / 基盤
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--abyss);
	color: var(--ghost);
	font-family: var(--sans);
	font-size: var(--fs-body);
	line-height: 1.9;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4, p, ol, ul, figure { margin: 0; }
/* 下線の所作は全サイト統一: offset 6px / 1px（v7.3 D-12） */
a { color: inherit; text-underline-offset: 6px; text-decoration-thickness: 1px; }

::selection { background: var(--phosphor); color: var(--file-ink); }

.skip-link {
	position: absolute; left: -9999px; top: 0; z-index: 100;
	background: var(--bone); color: var(--abyss); padding: 10px 16px; font-size: var(--fs-note);
}
.skip-link:focus { left: 8px; top: 8px; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; border: 0; padding: 0; margin: -1px;
}

:focus-visible { outline: 1px solid var(--phosphor); outline-offset: 2px; }

/* リンクの所作：色が変わるだけ。移動・発光なし */
.ul-link {
	font-family: var(--serif);
	color: var(--bone);
	text-decoration: underline;
	text-decoration-color: var(--ghost-dim);
	text-decoration-thickness: 1px;
	text-underline-offset: 6px;
	letter-spacing: .16em;
	transition: color .25s ease, text-decoration-color .25s ease;
}
.ul-link:hover { color: var(--phosphor); text-decoration-color: var(--phosphor); }

/* =========================================================================
   ヘッダー
   ========================================================================= */
/* ヘッダー背景は全ページ --abyss に統一（v7.1 追補 C-12。半透過の「二段の黒帯」を解消） */
.site-head {
	position: fixed; top: 0; left: 0; right: 0; z-index: 50;
	background: var(--abyss);
	border-bottom: 1px solid var(--line);
}
.site-head__in {
	max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad-x);
	height: var(--head-h);
	display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
}
.brand {
	font-family: var(--serif); font-weight: 600; font-size: 17px; /* v7.3 D-13 */
	letter-spacing: .12em; color: var(--bone); text-decoration: none; white-space: nowrap;
}
.brand:hover { color: var(--phosphor); }

.nav-list {
	list-style: none; margin: 0; padding: 0;
	display: flex; align-items: center; gap: 32px; /* v7.3 D-13 */
}
.nav-list a {
	font-family: var(--serif); font-size: var(--fs-note); letter-spacing: .1em;
	color: var(--ghost); text-decoration: none;
	transition: color .25s ease;
}
.nav-list a:hover, .nav-list .current-menu-item > a { color: var(--bone); }

.nav-toggle {
	display: none; width: 44px; height: 44px; padding: 0;
	background: none; border: 0; cursor: pointer; position: relative;
}
/* ストロークアイコン（v7.3 C-9）: 1.5px線・--ghost・hover --phosphor */
.nav-toggle__bar {
	display: block; width: 22px; height: 1.5px; margin: 5px auto; background: var(--ghost);
	transition: background-color .25s ease;
}
.nav-toggle:hover .nav-toggle__bar { background: var(--phosphor); }

/* モバイル・ナビのドロワー */
.nav-drawer {
	position: fixed; inset: 0; z-index: 60;
	background: rgba(8, 20, 25, .72);
	opacity: 0; visibility: hidden;
	transition: opacity .3s ease, visibility .3s ease;
}
.nav-drawer.is-open { opacity: 1; visibility: visible; }
.nav-drawer__panel {
	position: absolute; inset: 0;
	background: var(--petrol);
	padding: calc(var(--head-h) + var(--sp-3)) var(--pad-x) var(--sp-3);
	display: flex; flex-direction: column; gap: var(--sp-2);
}
.nav-drawer__close {
	position: absolute; top: 12px; right: 12px; width: 44px; height: 44px;
	background: none; border: 0; cursor: pointer;
}
/* 閉じる: 文字グリフ×をやめ 1.5px線の45°クロスを描画（v7.3 C-9） */
.icon-close { position: relative; display: block; width: 22px; height: 22px; margin: 0 auto; }
.icon-close::before, .icon-close::after {
	content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 1.5px;
	background: var(--ghost); transition: background-color .25s ease;
}
.icon-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.icon-close::after { transform: translate(-50%, -50%) rotate(-45deg); }
.nav-drawer__close:hover .icon-close::before, .nav-drawer__close:hover .icon-close::after { background: var(--phosphor); }
.nav-drawer__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--sp-1); }
.nav-drawer__list a {
	font-family: var(--serif); font-weight: 600; font-size: var(--fs-22);
	color: var(--bone); text-decoration: none; letter-spacing: .06em;
	display: block; padding: 8px 0; /* タップ対象 44px 以上（v7.3 D-14） */
}
.nav-drawer__list a:hover { color: var(--phosphor); }
body.drawer-open { overflow: hidden; }

/* 内側ページはヘッダー分を確保 */
body:not(.is-front) #main { padding-top: calc(var(--head-h) + clamp(28px, 5vw, 56px)); }

/* =========================================================================
   第一幕 ── 潜入
   ========================================================================= */
.act-infiltrate {
	position: relative; min-height: 94vh; overflow: hidden;
	background: var(--petrol); /* ロード中も闇を維持 */
}
.act-infiltrate__img {
	position: absolute; inset: 0; width: 100%; height: 100%;
	object-fit: cover; object-position: center 32%;
}
.act-infiltrate__grade {
	position: absolute; inset: 0; pointer-events: none;
	background:
		radial-gradient(120% 85% at 88% 12%, rgba(8, 20, 25, .58) 0%, rgba(8, 20, 25, 0) 58%),
		linear-gradient(180deg, rgba(8, 20, 25, .45) 0%, rgba(8, 20, 25, .08) 40%, rgba(8, 20, 25, .90) 88%, var(--abyss) 100%);
}
/* 諧調のバンディング抑止：極薄のノイズを重畳 */
.act-infiltrate__grade::after {
	content: ""; position: absolute; inset: 0; opacity: .035; mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/*
 * 題字は「設計された2列組」（v7.1 追補 A-1 理想版。縮小1列は禁止）。
 * <h1><span>裏英国ハックス</span><span>研究所</span></h1> を vertical-rl で組む:
 * ブロック進行が右→左のため、右列=「裏英国ハックス」(7字)・左列=「研究所」(3字)。
 * 左列は約1.5字下げ（書籍装丁の字下げ段差）、列間は0.7字。折返しは構造的に発生しない。
 * 級数は右列7字がヒーローに収まる高さから算出:
 *   必要高 = 7字 × (1 + 字間.30) × fs = 9.1fs ≦ 94vh − 上端74px − 下端余裕40px
 * 上端はヘッダー実背景（62px）に食い込まないよう max(9vh, 74px)。
 */
.daiji {
	position: absolute; top: max(9vh, 74px); right: clamp(20px, 6vw, 96px); z-index: 2;
	writing-mode: vertical-rl; text-orientation: mixed; white-space: nowrap;
	font-family: var(--serif); font-weight: 800;
	font-size: clamp(40px, calc((94vh - 114px) / 9.1), 60px); letter-spacing: .30em; line-height: 1;
	color: var(--bone); text-shadow: 0 2px 34px rgba(8, 20, 25, .95);
	margin: 0;
}
.daiji span { display: block; }
/* 左列（研究所）: 1.5字下げの段差 + 列間0.7字 */
.daiji span + span { margin-top: 1.5em; margin-right: .7em; }
/* 副題は題字（2列分 ≒ 2.7字幅）から題字1文字分以上離す（v7.1 追補 A-2） */
.daiji-sub {
	position: absolute; top: max(11vh, 86px); right: calc(clamp(20px, 6vw, 96px) + 230px); z-index: 2;
	writing-mode: vertical-rl; text-orientation: mixed; white-space: nowrap;
	font-family: var(--serif); font-size: var(--fs-note); letter-spacing: .30em;
	color: var(--ghost); text-shadow: 0 2px 20px rgba(8, 20, 25, .9);
	margin: 0;
}
.act-infiltrate__foot {
	position: absolute; left: var(--pad-x); bottom: 8vh; z-index: 2; max-width: 440px;
}
.en-note {
	display: block; font-family: var(--serif); font-style: italic; font-size: var(--fs-note);
	letter-spacing: .1em; color: var(--ghost-dim); margin-bottom: var(--sp-1);
}
.act-infiltrate__foot p {
	font-size: var(--fs-body); color: var(--ghost); line-height: 2.1; margin-bottom: var(--sp-2);
}

/* =========================================================================
   第二幕 ── 博士の書斎
   ========================================================================= */
.act-study {
	max-width: var(--maxw); margin: 0 auto; padding: var(--sp-sec) var(--pad-x) 0;
	display: grid; grid-template-columns: 260px 1fr; gap: clamp(36px, 6vw, 84px);
	align-items: start;
}
.portrait { position: relative; margin: 0; }
.portrait img {
	width: 100%; border-radius: 2px;
	filter: saturate(.9) contrast(1.02);
	box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .9);
}
.portrait::before { /* マスキングテープ */
	content: ""; position: absolute; top: -10px; left: 50%;
	width: 88px; height: 22px; transform: translateX(-50%) rotate(-2deg);
	background: rgba(217, 201, 159, .26); border: 1px solid rgba(217, 201, 159, .14);
}
.portrait figcaption { margin-top: var(--sp-1); font-size: var(--fs-note); color: var(--ghost-dim); line-height: 1.9; }
.portrait figcaption b {
	display: block; font-family: var(--serif); font-weight: 800; font-size: var(--fs-body); color: var(--bone);
}
.koe {
	font-family: var(--serif); font-weight: 800;
	font-size: clamp(22px, 2.8vw, 27px); line-height: 2; color: var(--bone);
	letter-spacing: .03em; margin: 0 0 var(--sp-3);
}
/* 推薦は [テキスト | 大判プリント 380px]（v7.2 追補 9-B-2） */
.study__pick {
	border-top: 1px solid var(--line); padding-top: var(--sp-3);
	display: grid; grid-template-columns: 1fr 380px; gap: 28px; align-items: start;
}
.study__pick-photo {
	display: block; padding: 4px; background: #e8e0cc; border: 1px solid var(--manila-line);
}
.study__pick-photo img {
	display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover;
	filter: saturate(.85); transition: filter .3s ease;
}
.study__pick-photo:hover img { filter: saturate(1); }
.meta { display: block; font-size: var(--fs-note); color: var(--ghost-dim); margin-bottom: var(--sp-1); letter-spacing: .04em; }
.study__title {
	font-family: var(--serif); font-weight: 800;
	font-size: clamp(22px, 2.6vw, 27px); line-height: 1.8; margin: 0 0 var(--sp-1); max-width: 26em;
}
.study__title a { text-decoration: none; transition: color .25s ease; }
.study__title a:hover { color: var(--phosphor); }
.study__excerpt { font-size: var(--fs-body); color: var(--ghost); max-width: 42em; margin-bottom: var(--sp-2); }

/* =========================================================================
   第三幕 ── 書庫（証拠写真つきファイル行。v7.2 追補 9-B でフォルダ積みを全廃）
   ========================================================================= */
/* 第三幕の上余白は 96px の1段に統一（v7.1 追補 B-5） */
.act-archive { max-width: var(--maxw); margin: 0 auto; padding: 96px var(--pad-x) 0; }

/*
 * `.file-row` = 証拠写真つきファイル行（v7.2 追補 9-B-1）。
 * [印画紙プリント 240px | テキスト]。行間は細罫線 --line。
 * 写真は内縁4px #e8e0cc + 外枠1px manila-line、saturate(.85)、hover で彩度復帰。
 * 回転・テープ・クリップ等の小道具は付けない（ギミック禁止）。
 */
.file-rows { display: block; }
.file-row {
	display: grid; grid-template-columns: 240px 1fr; gap: 32px; align-items: center;
	padding: 28px 0; text-decoration: none; /* v7.3 D-11 */
	border-top: 1px solid var(--line);
}
.file-row:last-child { border-bottom: 1px solid var(--line); }
.file-row__photo {
	display: block; padding: 4px; background: #e8e0cc; border: 1px solid var(--manila-line);
}
.file-row__photo img {
	display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover;
	filter: saturate(.85); transition: filter .3s ease;
}
.file-row:hover .file-row__photo img { filter: saturate(1); }
/* アイキャッチ無しフォールバック: --petrol 地に明朝「裏」1字 */
.file-row__blank {
	display: flex; align-items: center; justify-content: center;
	width: 100%; aspect-ratio: 3 / 2; background: var(--petrol);
	font-family: var(--serif); font-size: 24px; color: var(--ghost-dim);
}
.file-row__text { display: block; min-width: 0; }
.file-row__meta { display: block; font-size: var(--fs-note); color: var(--ghost-dim); margin-bottom: 2px; letter-spacing: .04em; } /* v7.3 D-11: 題との間 -4px */
.file-row__title {
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
	font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); line-height: 1.7;
	color: var(--bone); transition: color .25s ease;
}
.file-row:hover .file-row__title { color: var(--phosphor); }
.file-row__yoshi {
	display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
	margin-top: 8px; font-size: 13px; color: var(--ghost); /* 13px は 9-B-1 の指定値 */
}
/* 関連ファイル（縮小版: 写真160px・抜粋なし） */
.file-row--related { grid-template-columns: 160px 1fr; gap: var(--sp-2); }

/*
 * 部門索引（v7.4 C-8。引き出しメタファーの取っ手装飾を全廃、アイコンレス）。
 * 各項目 = 部門名（明朝18 --bone）+ 説明（12.5px --ghost-dim）、細罫線区切り。
 * hover は部門名の --phosphor のみ。件数表示は置かない（v7.1 B-6 継続）。
 */
.dept-index {
	margin-top: var(--sp-3);
	display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--sp-3);
}
.dept-index__item {
	display: block; text-decoration: none;
	padding: 16px 4px; border-top: 1px solid var(--line);
}
.dept-index__name {
	display: block; font-family: var(--serif); font-weight: 600; font-size: var(--fs-18);
	color: var(--bone); transition: color .25s ease;
}
.dept-index__item:hover .dept-index__name { color: var(--phosphor); }
.dept-index__desc {
	display: block; margin-top: 2px;
	font-size: 12.5px; color: var(--ghost-dim); line-height: 1.8;
}

/* =========================================================================
   口上（フッター前）
   ========================================================================= */
.act-closing {
	max-width: 760px; margin: 0 auto; padding: var(--sp-sec) var(--pad-x) var(--sp-sec);
}
.act-closing p {
	font-family: var(--serif); font-size: var(--fs-18); line-height: 2.2; color: var(--ghost);
}

/* =========================================================================
   紙面（single / page）── .sheet
   ========================================================================= */
.listing, .notfound { max-width: var(--maxw); margin: 0 auto; padding-left: var(--pad-x); padding-right: var(--pad-x); }
/*
 * シートは本文実幅+パディング=880px に絞り中央配置（v7.1 追補 C-10）。
 * WP は body にも .single を付与するため main 要素にスコープする（body 汚染防止）。
 */
main.single { max-width: calc(880px + 2 * var(--pad-x)); margin: 0 auto; padding-left: var(--pad-x); padding-right: var(--pad-x); }
.single__crumbs, .listing__crumbs { margin-bottom: var(--sp-2); }

.sheet {
	background: linear-gradient(172deg, var(--paper-lit), var(--manila));
	color: var(--file-ink); border: 1px solid var(--manila-line); border-radius: 2px;
	box-shadow: 0 44px 90px -44px rgba(0, 0, 0, .95);
	overflow: hidden;
}
/*
 * 便箋罫線は全廃（v7.1 追補 C-7 理想版）。このシートは「タイプされた報告書」であり、
 * 便箋罫線は手書きの記号で概念的に誤り。無地のマニラ紙（紙グラデのみ）で組む。
 * 罫線は「太2px=表紙と本文の区切り／細1px=本文内要素の区切り」の2階層のみ（C-9）。
 */
.sheet__cover {
	position: relative;
	padding: 48px clamp(24px, 5vw, 56px) 32px; /* v7.3 B-5: 48/56/32。左右min 24px（D-14） */
	border-bottom: 2px solid var(--file-ink);
}
.kokuin {
	font-family: var(--doc); font-size: var(--fs-note); letter-spacing: .1em; color: var(--file-ink-soft);
	display: flex; gap: 28px; flex-wrap: wrap; margin: 0 0 16px; line-height: var(--paper-lh);
}
.sheet__title {
	font-family: var(--serif); font-weight: 900;
	font-size: clamp(28px, 3.8vw, 36px); line-height: 1.6; letter-spacing: .01em; max-width: 24em; margin: 0; /* v7.3 A-2 */
}
.sheet__yoshi { margin-top: 14px; font-size: var(--fs-body); color: var(--file-ink-soft); max-width: 44em; line-height: var(--paper-lh); }

/* 添付写真（v7.2 追補 9-B-2）: 本文カラム幅・プリント縁のみ・キャプションなし */
.sheet__photo {
	margin: 32px clamp(24px, 5vw, 56px) 0;
	padding: 4px; background: #e8e0cc; border: 1px solid var(--manila-line);
}
.sheet__photo img { display: block; width: 100%; height: auto; }

/*
 * 本文タイポグラフィ（v7.3 追補 A-1）: 16.5px / 行送り34px(2.06) / 段落間26px。
 * 段落間はマージン相殺を「前提に」設計する: 全ブロック要素に margin-bottom を
 * フル値で与え、相殺は max を取るため blockquote・リスト直後でも 26px が保たれる。
 * 表紙→本文は padding-top 40px + 先頭子のマージン殺しで一定化（B-6）。
 */
.sheet__body {
	padding: 40px clamp(24px, 5vw, 56px) 52px;
	font-size: 16.5px; line-height: 34px; color: #3a3526;
}
.sheet__body > :first-child { margin-top: 0; }
/* パイプラインは本文を <div class="urahacks-post"> で包むため、ラッパー越しの
   マージン相殺（内側先頭パーツの40pxが表紙直下に漏れる）も殺して 40px を一定化 */
.sheet__body > div:first-child > :first-child { margin-top: 0; }
.sheet__body p { margin: 0 0 26px; }
.sheet__body a { color: var(--accent-paper); text-decoration-line: underline; transition: color .25s ease; }
.sheet__body a:hover { color: var(--alert); }
/* 外部リンク矢（v7.3 追補 C-9）: 1.5px線の北東チェブロン7px。紙上 soft → hover accent */
.sheet__body a[target="_blank"]::after {
	content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 5px;
	border-top: 1.5px solid var(--file-ink-soft); border-right: 1.5px solid var(--file-ink-soft);
	transition: border-color .25s ease;
}
.sheet__body a[target="_blank"]:hover::after { border-color: var(--accent-paper); }
.sheet__body h2 {
	font-family: var(--serif); font-weight: 800; font-size: var(--fs-22); line-height: 1.6;
	border-bottom: 1px solid var(--file-ink); padding-bottom: 10px;
	margin: 64px 0 28px; scroll-margin-top: calc(var(--head-h) + 20px); /* v7.3 A-4: 上64/下28 */
}
.sheet__body h3 {
	font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); line-height: 1.7; margin: 40px 0 var(--sp-1);
}
.sheet__body ul, .sheet__body ol { margin: 0 0 26px; padding-left: 1.4em; }
.sheet__body li { margin-bottom: 8px; }
.sheet__body img { margin: 26px 0; border-radius: 2px; }
.sheet__body blockquote {
	margin: 26px 0; padding-left: var(--sp-2); border-left: 2px solid var(--manila-line); color: var(--file-ink-soft);
}
.sheet ::selection { background: var(--file-ink); color: var(--paper-lit); }

/* 紙上の注意書き（YMYL）＝赤罫線1本＋墨文字。色面塗りなし */
.paper-note {
	border-left: 2px solid var(--alert); padding: 4px 0 4px 16px; margin: 0 0 26px;
	font-size: var(--fs-note); color: var(--file-ink); line-height: 1.9;
}

/* 記事末 */
.sheet__foot { padding: 0 clamp(24px, 5vw, 56px) 40px; }
.sheet__contact { font-family: var(--serif); font-size: var(--fs-body); color: var(--file-ink-soft); }
.sheet__contact a { color: var(--accent-paper); text-decoration-line: underline; }
.sheet__contact a:hover { color: var(--alert); }

/* =========================================================================
   パイプライン記事パーツ（すべて書類の要素として）
   ========================================================================= */
/* 各パーツの小見出し（span）は紙面の明朝小見出し 18px/600（v7.3 A-3。本文16.5px化で階層が立つ） */
.sheet__body .box-title, .sheet__body .check-title, .sheet__body .src-title, .sheet__body .log-title {
	display: block; font-family: var(--serif); font-weight: 600; font-size: var(--fs-18);
	color: var(--file-ink); letter-spacing: .02em; margin-bottom: var(--sp-1);
}
/* パイプラインが小見出し直後に挿す空段落を畳む */
.sheet__body .summary-box > p:empty, .sheet__body .checklist > p:empty,
.sheet__body .sources > p:empty, .sheet__body .update-log > p:empty { display: none; margin: 0; }

/*
 * 記事パーツの上下マージンは全て 40px に統一（v7.3 B-7）。
 * 相殺前提の設計: 各パーツが上下フル40pxを持ち、隣接時は max(40,40)=40、
 * 段落隣接時は max(26,40)=40 に相殺される（20px に潰れる組み方はしていない）。
 */
/* 要旨：上下細罫線のみ、リストは「・」。罫線は「太=表紙区切り／細=要素区切り」の2階層に統一（v7.1 追補 C-9） */
.sheet__body .summary-box { width: 100%; border-top: 1px solid var(--manila-line); border-bottom: 1px solid var(--manila-line); padding: var(--sp-2) 0; margin: 40px 0; }
.sheet__body .summary-box ul { list-style: none; padding-left: 0; margin: 0; }
.sheet__body .summary-box li { padding-left: 1.2em; position: relative; margin-bottom: 8px; }
.sheet__body .summary-box li::before { content: "・"; position: absolute; left: 0; color: var(--file-ink); }

/* 罫線表：横罫のみ、ヘッダ下 1.5px 墨 */
.sheet__body .data-table { margin: 40px 0; }
.sheet__body table { width: 100%; border-collapse: collapse; margin: 40px 0; font-size: var(--fs-note); }
.sheet__body .data-table table { margin: 0; } /* figure 側が40pxを担う。二重マージン防止 */
.sheet__body table th, .sheet__body table td { text-align: left; padding: 10px 12px; border: 0; border-bottom: 1px solid var(--manila-line); }
.sheet__body table th { border-bottom: 1.5px solid var(--file-ink); font-family: var(--serif); font-weight: 800; }

/* 手順：番号は和数字「一、二…」の明朝、縦罫でつなぐ（.step-num の算用数字は伏せる） */
.sheet__body .steps { counter-reset: step; margin: 40px 0; }
.sheet__body .step-item {
	counter-increment: step; position: relative;
	padding: 0 0 var(--sp-2) 2.4em; margin-left: .6em; border-left: 1px solid var(--manila-line);
}
.sheet__body .step-item:last-child { border-left-color: transparent; padding-bottom: 0; }
.sheet__body .step-num { position: absolute; left: 0; top: 0; transform: translateX(-50%); font-size: 0; }
.sheet__body .step-num::before {
	content: counter(step, cjk-ideographic); display: block; padding: 0 5px;
	font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); color: var(--file-ink);
	background: var(--paper-lit);
}
.sheet__body .step-title { font-family: var(--serif); font-weight: 800; font-size: var(--fs-body); color: var(--file-ink); margin-bottom: 4px; }
.sheet__body .step-body { color: #3a3526; }

/* 確認欄：□ の墨枠、破線区切り */
.sheet__body .checklist { margin: 40px 0; }
.sheet__body .check-item { position: relative; padding: 8px 0 8px 2em; border-bottom: 1px dashed var(--manila-line); }
.sheet__body .check-item::before { content: ""; position: absolute; left: 0; top: 12px; width: 13px; height: 13px; border: 1.5px solid var(--file-ink); }

/* 注意書き：左に赤罫線1本、色面塗りなし */
.sheet__body .alert-box { border-left: 2px solid var(--alert); padding: 4px 0 4px 16px; margin: 40px 0; color: var(--alert); }
.sheet__body .ab-label { display: block; font-family: var(--serif); font-weight: 800; font-size: var(--fs-note); color: var(--alert); margin-bottom: 4px; }

/* 一次資料：脚注風、上に一点鎖線 */
.sheet__body .sources {
	margin: 40px 0; padding-top: var(--sp-2); font-size: var(--fs-note); color: var(--file-ink-soft);
	background-image: repeating-linear-gradient(90deg, var(--manila-line) 0 6px, transparent 6px 9px, var(--manila-line) 9px 10px, transparent 10px 16px);
	background-repeat: no-repeat; background-size: 100% 1px; background-position: top left;
}
.sheet__body .sources ul { list-style: none; padding-left: 0; margin: 0; }
.sheet__body .sources li { margin-bottom: 6px; }
.sheet__body .src-link { color: var(--accent-paper); text-decoration: none; }
.sheet__body .src-link:hover { color: var(--alert); text-decoration-line: underline; }
.sheet__body .src-arrow { margin-right: .5em; color: var(--file-ink-soft); }

/* 改訂記録：日付は刻印書体 + 一文 */
.sheet__body .update-log { margin: 40px 0; font-size: var(--fs-note); color: var(--file-ink-soft); }
.sheet__body .log-entry { margin-bottom: 6px; }
.sheet__body .log-date { font-family: var(--doc); margin-right: 1em; color: var(--file-ink); }

.sheet__body .toc, .toc {
	border-top: 1px solid var(--manila-line); border-bottom: 1px solid var(--manila-line);
	padding: var(--sp-2) 0; margin: 40px 0;
}
.toc .toc-t { font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); margin-bottom: var(--sp-1); }
.toc ol { list-style: none; padding-left: 1em; counter-reset: toc; margin: 0; }
.toc li { counter-increment: toc; padding-left: 1.6em; position: relative; margin-bottom: 6px; }
.toc li::before { content: counter(toc, cjk-ideographic); position: absolute; left: 0; font-family: var(--serif); color: var(--file-ink-soft); }
.toc a { color: var(--file-ink); text-decoration: none; }
.toc a:hover { color: var(--accent-paper); text-decoration-line: underline; }

/* =========================================================================
   前後ナビ / 関連 / コメント
   ========================================================================= */
.file-nav { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2); margin-top: var(--sp-3); }
.file-nav__link { text-decoration: none; color: var(--ghost); display: flex; flex-direction: column; gap: 6px; }
.file-nav__link--next { text-align: right; }
.file-nav__dir { font-size: var(--fs-note); color: var(--ghost-dim); }
.file-nav__t { font-family: var(--serif); font-weight: 600; font-size: var(--fs-body); color: var(--bone); line-height: 1.6; transition: color .25s ease; }
.file-nav__link:hover .file-nav__t { color: var(--phosphor); }

.related { margin-top: 96px; } /* v7.3 B-8: 140はページ大区切り専用 */
.related__t { font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); color: var(--bone); margin-bottom: var(--sp-2); }

.comments { margin-top: 96px; border-top: 1px solid var(--line); padding-top: var(--sp-3); } /* v7.3 B-8 */
.comments__t { font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); color: var(--bone); margin-bottom: var(--sp-2); }
.comments__n { font-family: var(--doc); font-size: var(--fs-note); color: var(--ghost-dim); margin-left: 1em; }
/* 見出しへの添え書きと、見出しに連結して見えるキャンセルリンクの分離（v7.4 B-2） */
.comments__note { font-size: var(--fs-note); color: var(--ghost); margin: -12px 0 var(--sp-2); }
.comments__cancel {
	display: block; margin-top: 8px;
	font-family: var(--sans); font-weight: 400; font-size: var(--fs-note); letter-spacing: 0;
}
.comments__cancel a { color: var(--ghost-dim); text-decoration: underline; }
.comments__cancel a:hover { color: var(--phosphor); }
/*
 * スパム対策 honeypot の隠しフィールド露出対策（v7.4 B-6 実バグ）。
 * 実査: WP Armour の #altEmail_container（Alternative: + #alt_s）が可視露出
 * （コンテナ1x1だが入力欄がはみ出す）。Akismet(.akismet-fields-container=Δ)と
 * WP Armour 本体(.wpa_hidden_field=WPA)は隠れているが、プラグイン更新に備え恒久隠蔽。
 * フィールドは DOM に残るためアンチスパム機能は無傷。
 * !important 理由: プラグインCSS/インラインJSより確実に優先させるため。
 */
.comment-form .akismet-fields-container,
.comment-form .wpa_hidden_field,
.comment-form #altEmail_container { display: none !important; }
.comments__list { list-style: none; padding: 0; margin: 0 0 var(--sp-3); }
.comments__list ol { list-style: none; }
.comments .comment-body { border: 1px solid var(--line); background: var(--petrol); padding: var(--sp-2); border-radius: 3px; margin-bottom: var(--sp-2); }
.comments .comment-author { font-family: var(--serif); color: var(--bone); font-size: var(--fs-body); }
.comments .comment-meta { font-size: var(--fs-note); color: var(--ghost-dim); }
.comments .comment-meta a { color: var(--ghost-dim); }
.comments input[type="text"], .comments input[type="email"], .comments input[type="url"], .comments textarea {
	width: 100%; background: var(--petrol); border: 1px solid var(--line); color: var(--bone);
	padding: 10px 12px; font-family: var(--sans); font-size: var(--fs-body); border-radius: 2px;
}
.comments label { display: block; font-size: var(--fs-note); color: var(--ghost); margin: var(--sp-1) 0 6px; }
.comments .form-submit input, .comments__submit {
	background: none; border: 1px solid var(--ghost-dim); color: var(--bone);
	font-family: var(--serif); letter-spacing: .1em; padding: 10px 26px; cursor: pointer; border-radius: 2px;
	transition: border-color .25s ease, color .25s ease;
}
.comments .form-submit input:hover { border-color: var(--phosphor); color: var(--phosphor); }

/* =========================================================================
   一覧（archive / search）
   ========================================================================= */
.listing__head { margin-bottom: var(--sp-3); }
.listing__title { font-family: var(--serif); font-weight: 800; font-size: clamp(22px, 3vw, 27px); color: var(--bone); line-height: 1.6; }
.listing__count { font-family: var(--doc); font-size: var(--fs-body); color: var(--ghost-dim); margin-left: 1em; letter-spacing: .06em; }
.listing__sub { font-size: var(--fs-note); color: var(--ghost-dim); margin-top: 6px; }

.empty-note { font-family: var(--serif); font-size: var(--fs-18); color: var(--ghost); padding: var(--sp-3) 0; }
.empty-search { max-width: 420px; margin-top: var(--sp-2); }

.pagination { margin: var(--sp-3) 0 0; }
.pagination .nav-links { display: flex; gap: var(--sp-1); flex-wrap: wrap; }
.pagination .page-numbers {
	font-family: var(--doc); font-size: var(--fs-note); color: var(--ghost);
	border: 1px solid var(--line); padding: 8px 14px; text-decoration: none; border-radius: 2px;
	transition: border-color .25s ease, color .25s ease;
}
.pagination .page-numbers.current { color: var(--bone); border-color: var(--ghost-dim); }
.pagination a.page-numbers:hover { color: var(--phosphor); border-color: var(--phosphor); }

/* =========================================================================
   検索フォーム
   ========================================================================= */
.searchform { display: flex; gap: var(--sp-1); }
.searchform__input {
	flex: 1; background: var(--petrol); border: 1px solid var(--line); color: var(--bone);
	padding: 11px 14px; font-family: var(--sans); font-size: var(--fs-body); border-radius: 2px;
}
.searchform__input::placeholder { color: var(--ghost-dim); }
.searchform__submit {
	background: none; border: 1px solid var(--ghost-dim); color: var(--bone);
	font-family: var(--serif); letter-spacing: .1em; padding: 0 22px; cursor: pointer; border-radius: 2px;
	transition: border-color .25s ease, color .25s ease;
}
.searchform__submit:hover { border-color: var(--phosphor); color: var(--phosphor); }

/* =========================================================================
   404
   ========================================================================= */
.notfound { min-height: 60vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.notfound__code {
	margin: 0 0 16px; font-family: var(--mono); font-size: clamp(64px, 10vw, 112px);
	line-height: .85; letter-spacing: -.06em; color: var(--manila);
}
.notfound__title {
	margin: 0; font-family: var(--serif); font-size: clamp(24px, 3vw, 36px);
	line-height: 1.5; color: var(--bone);
}
.notfound__msg {
	max-width: 34em; margin: 14px 0 0; font-size: var(--fs-note);
	line-height: 1.9; color: var(--ghost-dim);
}
.notfound__actions { display: flex; align-items: center; justify-content: center; gap: 28px; margin-top: 32px; }
.notfound__primary {
	display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 20px;
	background: var(--paper-lit); color: var(--file-ink); font-family: var(--sans); font-size: var(--fs-note);
	font-weight: 700; text-decoration: none;
}
.notfound__primary:hover { background: var(--paper-lit); }

/* =========================================================================
   固定ページ内のフォーム（CF7）── 紙面トークン
   ========================================================================= */
.sheet__body input[type="text"], .sheet__body input[type="email"], .sheet__body input[type="tel"],
.sheet__body input[type="url"], .sheet__body input[type="number"], .sheet__body textarea, .sheet__body select {
	width: 100%; background: var(--paper-lit); border: 1px solid var(--manila-line); color: var(--file-ink);
	padding: 11px 13px; font-family: var(--sans); font-size: var(--fs-body); border-radius: 2px;
}
.sheet__body input:focus-visible, .sheet__body textarea:focus-visible, .sheet__body select:focus-visible,
.sheet a:focus-visible, .sheet button:focus-visible { outline: 1px solid var(--file-ink); outline-offset: 2px; }
.sheet__body .wpcf7-submit, .sheet__body input[type="submit"] {
	width: auto; background: none; border: 1px solid var(--file-ink); color: var(--file-ink);
	font-family: var(--serif); letter-spacing: .1em; padding: 11px 28px; cursor: pointer;
	transition: background-color .25s ease, color .25s ease;
}
.sheet__body .wpcf7-submit:hover, .sheet__body input[type="submit"]:hover { background: var(--file-ink); color: var(--paper-lit); }

/* =========================================================================
   フッター
   ========================================================================= */
.site-foot { border-top: 1px solid var(--line); margin-top: var(--sp-sec); }
.site-foot__in { max-width: var(--maxw); margin: 0 auto; padding: 64px var(--pad-x) 48px; } /* v7.3 D-15 */
.site-foot__brand { font-family: var(--serif); font-weight: 800; font-size: var(--fs-18); color: var(--bone); letter-spacing: .08em; }
.site-foot__nav { margin: var(--sp-2) 0; }
.foot-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.foot-list a { font-family: var(--serif); font-size: var(--fs-note); color: var(--ghost); text-decoration: none; transition: color .25s ease; }
.foot-list a:hover { color: var(--phosphor); }
.site-foot__note { font-size: var(--fs-note); color: var(--ghost-dim); line-height: 1.9; max-width: 60em; margin-bottom: var(--sp-1); }
.site-foot__copy { font-family: var(--doc); font-size: var(--fs-note); color: var(--ghost-dim); letter-spacing: .08em; }

/* =========================================================================
   トップへ戻る（v7.3 C-9 新設。存否調査の結果、既存要素なし）
   ========================================================================= */
.to-top {
	position: fixed; right: 20px; bottom: 20px; z-index: 40;
	width: 44px; height: 44px; border-radius: 50%;
	background: var(--petrol); border: 1px solid var(--line); cursor: pointer;
	opacity: 0; visibility: hidden;
	transition: opacity .3s ease, visibility .3s ease, border-color .25s ease;
}
.to-top.is-visible { opacity: 1; visibility: visible; }
.to-top:hover { border-color: var(--ghost-dim); }
/* 山形シェブロン: 1.5px線の描画（文字グリフ不使用） */
.icon-chevron-up {
	display: block; width: 11px; height: 11px; margin: 4px auto 0;
	border-top: 1.5px solid var(--ghost); border-left: 1.5px solid var(--ghost);
	transform: rotate(45deg); transition: border-color .25s ease;
}
.to-top:hover .icon-chevron-up { border-color: var(--phosphor); }

/* =========================================================================
   パンくず
   ========================================================================= */
.crumbs { font-size: var(--fs-note); color: var(--ghost-dim); }
.crumbs a { color: var(--ghost-dim); text-decoration: none; transition: color .25s ease; }
.crumbs a:hover { color: var(--ghost); }
.crumb-sep { margin: 0 .6em; color: var(--line); }
.crumbs [aria-current="page"] { color: var(--ghost); }

/* =========================================================================
   レスポンシブ（1024 / 768 / 480）
   ========================================================================= */
@media (max-width: 1024px) {
	/* <1024px はナビリンクを完全に隠しハンバーガーのみ（v7.1 追補 A-3） */
	.nav-main { display: none; }
	.nav-toggle { display: block; }
	.act-study { grid-template-columns: 220px 1fr; }
	.study__pick { grid-template-columns: 1fr 300px; }
}

@media (max-width: 768px) {
	.act-infiltrate { min-height: 70vh; }
	.act-infiltrate__img { object-position: 72% 32%; } /* モバイルは右寄り（モニタ群側） */
	/*
	 * モバイルも同じ2列組で堂々たる級数を維持（v7.1 追補 A-1 理想版。1字34px以上）:
	 *   右列必要高 = 7字 × (1 + 字間.28) × fs = 8.96fs ≦ 70vh − 上端74px − 下端余裕20px
	 *   → fs = clamp(34px, (70vh − 94px) / 8.96, 46px)。375×667 で実測41px。
	 */
	.daiji { font-size: clamp(34px, calc((70vh - 94px) / 8.96), 46px); right: 16px; letter-spacing: .28em; }
	.daiji-sub { display: none; } /* 縦書き副題はモバイル非表示（v7.1 追補 A-2） */
	.act-infiltrate__foot { left: var(--pad-x); right: var(--pad-x); bottom: 6vh; max-width: none; }
	.act-study { grid-template-columns: 1fr; }
	.portrait { max-width: 220px; margin: 0 auto; }
	.file-nav { grid-template-columns: 1fr; }
	.file-nav__link--next { text-align: left; }
	/* ファイル行: 写真112px・抜粋なし（v7.2 追補 9-B-1 モバイル） */
	.file-row, .file-row--related { grid-template-columns: 112px 1fr; gap: 16px; }
	.file-row__yoshi { display: none; }
	/* パンくずのタップ対象 44px 以上（v7.3 D-14。視覚レイアウトを崩さぬよう負マージンで相殺） */
	.crumbs a { display: inline-block; padding: 13px 6px; margin: -10px -2px; }
	/* 部門索引は1列（v7.4 C-8） */
	.dept-index { grid-template-columns: 1fr; }
	/* 書斎: 写真が題の上（v7.2 追補 9-B-2 モバイル） */
	.study__pick { display: flex; flex-direction: column; }
	.study__pick-photo { order: -1; max-width: 420px; }
}

@media (max-width: 480px) {
	/* （480px 以下の追加調整はここに集約） */
	.sheet__cover, .sheet__body, .sheet__foot { padding-left: 24px; padding-right: 24px; } /* v7.3 D-14 */
	.notfound { min-height: 56vh; }
	.notfound__actions { flex-direction: column; gap: 16px; }
}

/* モーションの抑制（理由：前庭障害への配慮。装飾トランジションのみ無効化） */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .001ms !important; animation-duration: .001ms !important; scroll-behavior: auto; }
}
