@charset "UTF-8";
/* =============================================================
   計装研究会 公式サイト  style.css  (リニューアル 2026-06)
   - モバイルファースト / ブレークポイント: 600px・960px
   - デザイントークンは :root に集約
   ============================================================= */

/* ---------- 1. デザイントークン ---------- */
:root {
	--brand:        #5ab4bd;
	--brand-dark:   #3f969e;
	--brand-soft:   #e4f2f4;
	--accent:       #990033;
	--accent-dark:  #7a0028;

	--text:         #333;
	--muted:        #6a7378;
	--heading:      #2b3a3d;
	--link:         #2b7a82;

	--bg:           #fff;
	--bg-soft:      #f4f6f7;
	--bg-tint:      #f7fafa;
	--border:       #e2e6e8;
	--border-strong:#cdd4d6;

	--maxw:         960px;
	--radius:       10px;
	--radius-sm:    6px;
	--shadow:       0 1px 3px rgba(0,0,0,.06), 0 8px 24px rgba(20,40,45,.05);
	--shadow-sm:    0 1px 2px rgba(0,0,0,.06);

	--font: "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN",
	        "Hiragino Sans", Meiryo, sans-serif;
	--font-heading: "Zen Kaku Gothic New", "Noto Sans JP", system-ui,
	        "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;

	--sp-1: .25rem; --sp-2: .5rem;  --sp-3: .75rem; --sp-4: 1rem;
	--sp-5: 1.5rem; --sp-6: 2rem;   --sp-7: 3rem;   --sp-8: 4rem;

	--nav-h: 52px;
}

/* ---------- 2. リセット ---------- */
*, *::before, *::after { box-sizing: border-box; }
/* hidden 属性は常に最優先で非表示（.event-table{display:block} 等の上書き対策） */
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 12px); }
body, h1, h2, h3, h4, p, ul, ol, dl, dd, figure, table, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img, svg { max-width: 100%; height: auto; vertical-align: middle; }
a { color: var(--link); text-decoration: none; transition: color .15s ease, background-color .15s ease, opacity .15s ease; }
a:hover { color: var(--brand-dark); text-decoration: underline; }
button { font: inherit; cursor: pointer; }
table { border-collapse: collapse; width: 100%; }

/* ---------- 3. 基本タイポグラフィ ---------- */
body {
	font-family: var(--font);
	color: var(--text);
	background: var(--bg-soft);
	line-height: 1.8;
	font-size: 15px;
	letter-spacing: .02em;
	font-feature-settings: "palt";
	-webkit-font-smoothing: antialiased;
}
@media (min-width: 600px){ body { font-size: 16px; } }

/* 見出し・タイトル・UIラベルは見出し用フォント（本文は Noto Sans JP） */
h1, h2, h3, h4, h5, h6,
.page-title, .sec-title, .icon01, .icon04, .intro,
.container h4, .container h5,
.event-table > caption, .event-table td.sec-head, .block-title, .rule01,
.event-table .label_t01, .event-table .lec-key,
.event-table td ul:has(.label_t01) > li:has(.label_t01),
.event-tabs, .event-subtabs, .global-nav, .drawer-panel a,
.btn, .dwn_m, .dwn02, .tabBlock-tab, .toggle-button,
.news-list dt, dl.Info dt, .pdf-doc-title {
	font-family: var(--font-heading);
}
.page-title { font-weight: 900; letter-spacing: .06em; }
p:last-child { margin-bottom: 0; }
strong, b { font-weight: 700; }
.red { color: var(--accent); }

/* ---------- 4. レイアウト ---------- */
/* 背景は全幅（フルブリード）、中身だけ 960px センター。フッターは常に最下部（スティッキーフッター） */
.wrapper {
	display: flex; flex-direction: column;
	min-height: 100vh;
	background: var(--bg);
}
.container {
	flex: 1 0 auto;
	width: 100%;
	max-width: var(--maxw);
	margin-inline: auto;
	padding: var(--sp-5) clamp(1rem, 4vw, 2.25rem) var(--sp-7);
}
@media (min-width: 600px){ .container { padding-top: var(--sp-6); } }

section { margin-bottom: var(--sp-6); }
section:last-child { margin-bottom: 0; }

hr {
	border: 0;
	border-top: 1px solid var(--border);
	margin: var(--sp-5) 0;
}
hr.clear { clear: both; }

/* ---------- 5. ヘッダー ---------- */
.site-header { background: var(--bg); border-bottom: 1px solid var(--border); }
.header-inner {
	max-width: var(--maxw);
	margin-inline: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-3);
	padding: var(--sp-3) clamp(1rem, 4vw, 2.25rem);
}
.site-logo { display: inline-flex; align-items: center; }
.site-logo img { width: auto; height: 38px; }
@media (min-width: 600px){ .site-logo img { height: 46px; } }

.header-actions { display: none; gap: var(--sp-2); }
@media (min-width: 960px){ .header-actions { display: flex; } }

/* ボタン（旧 header-btn 画像の置換） */
.btn {
	display: inline-flex; align-items: center; justify-content: center;
	gap: .4em;
	padding: .55em 1.2em;
	border-radius: 999px;
	font-size: .9rem; font-weight: 700; line-height: 1;
	border: 1.5px solid transparent;
	white-space: nowrap;
	text-decoration: none;
}
.btn:hover { text-decoration: none; }
.btn-accent { background: var(--accent); color: #fff; }
.btn-accent:hover { background: var(--accent-dark); color: #fff; }
.btn-outline { background: #fff; color: var(--brand-dark); border-color: var(--brand); }
.btn-outline:hover { background: var(--brand-soft); color: var(--brand-dark); }
.btn-brand { background: var(--brand); color: #fff; }
.btn-brand:hover { background: var(--brand-dark); color: #fff; }

/* ---------- 6. グローバルナビ（PC・スクロール固定） ---------- */
.global-nav {
	position: sticky; top: 0; z-index: 50;
	background: var(--brand);
	display: none;
}
@media (min-width: 600px){ .global-nav { display: block; } }
.global-nav > ul {
	max-width: var(--maxw);
	margin-inline: auto;
	padding-inline: clamp(1rem, 4vw, 2.25rem);
	display: flex;
	min-height: var(--nav-h);
}
.global-nav li { flex: 0 0 auto; }
.global-nav a {
	display: flex; align-items: center;
	height: 100%; min-height: var(--nav-h);
	padding: 0 clamp(.9rem, 2.4vw, 1.8rem);
	color: #fff; font-weight: 500; letter-spacing: .04em;
	border-left: 1px solid rgba(255,255,255,.18);
}
.global-nav li:last-child a { border-right: 1px solid rgba(255,255,255,.18); }
.global-nav a:hover { background: var(--brand-dark); color: #fff; text-decoration: none; }
.global-nav .nowpage a, .global-nav a[aria-current="page"] { background: var(--brand-dark); }

/* ---------- 7. モバイル ハンバーガー＋ドロワー（JS不要） ---------- */
.drawer { display: block; }
@media (min-width: 600px){ .drawer { display: none; } }

.drawer-toggle { position: absolute; opacity: 0; pointer-events: none; }
/* ドロワー展開中の背面スクロールロックは js/main.js が body を固定して実現 */
.nav-open {
	display: inline-flex; align-items: center; justify-content: center;
	width: 44px; height: 44px; cursor: pointer;
	border-radius: var(--radius-sm);
}
@media (min-width: 600px){ .nav-open { display: none; } }
.nav-open span, .nav-open span::before, .nav-open span::after {
	content: ""; display: block;
	width: 24px; height: 2px; background: var(--brand-dark);
	transition: transform .25s ease, opacity .2s ease, background-color .2s ease;
}
.nav-open span { position: relative; }
.nav-open span::before { position: absolute; top: -8px; }
.nav-open span::after  { position: absolute; top: 8px; }

.drawer-backdrop {
	position: fixed; inset: 0; z-index: 80;
	background: rgba(20,30,32,.45);
	opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease;
}
.drawer-panel {
	position: fixed; top: 0; right: 0; z-index: 90;
	width: min(82vw, 320px); height: 100%;
	background: #fff; box-shadow: -6px 0 24px rgba(0,0,0,.18);
	transform: translateX(100%); transition: transform .28s ease;
	overflow-y: auto; padding: var(--sp-5) 0;
}
.drawer-toggle:checked ~ .drawer-backdrop { opacity: 1; visibility: visible; }
.drawer-toggle:checked ~ .drawer-panel { transform: translateX(0); }
/* ハンバーガー→×変形 */
.drawer-toggle:checked ~ .header-inner .nav-open span { background: transparent; }
.drawer-toggle:checked ~ .header-inner .nav-open span::before { transform: rotate(45deg); top: 0; }
.drawer-toggle:checked ~ .header-inner .nav-open span::after  { transform: rotate(-45deg); top: 0; }

.drawer-panel ul li a {
	display: block; padding: .85em clamp(1.2rem, 6vw, 1.8rem);
	color: var(--text); font-weight: 500;
	border-bottom: 1px solid var(--border);
}
.drawer-panel ul li a:hover { background: var(--brand-soft); text-decoration: none; }
.drawer-panel .nowpage a { color: var(--brand-dark); font-weight: 700; }
.drawer-panel .foo02 { color: var(--muted); font-weight: 400; font-size: .92em; }
.drawer-close-x {
	display: flex; justify-content: flex-end;
	padding: 0 clamp(1.2rem,6vw,1.8rem) var(--sp-3);
}
.drawer-close-x label { cursor: pointer; color: var(--muted); font-size: 1.6rem; line-height: 1; }

/* ---------- 8. ページ見出し（旧 topimg / event.png 等の置換） ---------- */
/* 案A：和モダン明朝 × 英字（Cormorant）。白地＋細罫＋ティールアクセント */
.page-hero {
	background: #fff; border: 1px solid var(--border); box-shadow: var(--shadow-sm);
	border-radius: var(--radius);
	min-height: 172px;
	display: flex; flex-direction: column; justify-content: center;
	padding: var(--sp-4) clamp(1.5rem, 5vw, 2.6rem);
	margin-bottom: var(--sp-5);
}
.hero-en {
	font-family: "Cormorant Garamond", serif; font-style: italic; font-weight: 500;
	color: var(--brand); letter-spacing: .06em; line-height: 1.1;
	font-size: clamp(.95rem, 2.6vw, 1.25rem); margin: 0 0 .15em;
}
.page-hero .page-title {
	font-family: "Shippori Mincho", serif; font-weight: 700; color: var(--heading);
	letter-spacing: .2em; line-height: 1.25; margin: 0;
	font-size: clamp(1.5rem, 4vw, 2.1rem);
}
.hero-rule { position: relative; height: 1px; background: var(--border); margin-top: clamp(.8rem, 2.4vw, 1.2rem); }
.hero-rule::before { content: ""; position: absolute; left: 0; top: -1px; width: 60px; height: 3px; background: var(--brand); border-radius: 2px; }
.page-hero .lead { color: var(--muted); font-size: .92rem; margin: var(--sp-3) 0 0; }
.page-title.on-light { color: var(--heading); }

/* トップ画像ヒーロー（index：topimg） */
.hero-banner {
	margin: 0 0 var(--sp-5);
	border-radius: var(--radius); overflow: hidden;
	line-height: 0; box-shadow: var(--shadow-sm);
}
.hero-banner picture { display: block; }
.hero-banner img { width: 100%; height: auto; display: block; }

/* セクション見出し（旧 icon01/icon04 等） */
.sec-title, .icon01, .icon04 {
	display: flex; align-items: center; flex-wrap: wrap;
	font-size: clamp(1.1rem, 3vw, 1.3rem); font-weight: 700; line-height: 1.4;
	color: var(--heading);
	padding: 0 0 0.75em 0;
	margin-bottom: var(--sp-4);
	border-bottom: 2px solid var(--brand-soft);
}
.sec-title::before, .icon01::before, .icon04::before {
	content: ""; flex: 0 0 auto;
	width: 3px; height: 1.5em; border-radius: 0;
	background: var(--brand); margin-right: .55rem;
}
.icon04 span { font-size: .72em; font-weight: 500; color: var(--muted); margin-left: .5em; }

/* リード文（旧 .intro） */
.intro { color: var(--brand-dark); font-weight: 700; font-size: 1.15rem; letter-spacing: .06em; }

/* ---------- 9. お知らせ（dl.Info / 一覧） ---------- */
.news-list { display: block; }
.news-list dt {
	font-weight: 700; color: var(--brand-dark);
	font-size: .85rem; letter-spacing: .04em;
	padding-top: var(--sp-4);
}
.news-list dd {
	padding: var(--sp-1) 0 var(--sp-4);
	border-bottom: 1px dashed var(--border);
	margin: 0;
}
.news-list dd.last { border-bottom: 0; }
@media (min-width: 600px){
	.news-list { display: grid; grid-template-columns: max-content 1fr; column-gap: 0; }
	.news-list dt { padding-top: var(--sp-4); border-top: 1px dashed var(--border); line-height: 1.8rem; white-space: nowrap; }
	.news-list dd { padding: var(--sp-4) 0 var(--sp-4) var(--sp-5); border-bottom: 0; border-top: 1px dashed var(--border); }
	.news-list dt:first-of-type, .news-list dd:first-of-type { border-top: 0; }
}
.news-list a { color: var(--link); font-weight: 500; }
.news-more { text-align: right; margin-top: var(--sp-4); }

article.pd { padding: 0; }

/* ---------- 10. 汎用テキストリンク・ボタン（旧 dwn / dwn02） ---------- */
.dwn, a.dwn { color: var(--link); font-weight: 700; }
.dwn02 {
	display: inline-flex; align-items: center; gap: .5em;
	padding: .7em 1.4em; border-radius: 999px;
	background: var(--brand); color: #fff; font-weight: 700;
}
.dwn02:hover { background: var(--brand-dark); color: #fff; text-decoration: none; }
.fs15 { font-size: .95rem; }

/* ---------- 11. フッター ---------- */
.s_beneath { background: var(--bg-tint); border-top: 1px solid var(--border); padding: var(--sp-6) clamp(1rem,4vw,2.25rem); margin-top:250px !important;margin-bottom: 0 !important;}
.s_beneath .beneath, .s_beneath .beneath02 { max-width: var(--maxw); margin-inline: auto; }
.beneath {
	display: grid; gap: .35rem var(--sp-4);
	grid-template-columns: repeat(2, minmax(0,1fr));
	margin-bottom: var(--sp-5);
}
@media (min-width: 600px){ .beneath { grid-template-columns: repeat(3, minmax(0,1fr)); } }
.beneath li a { color: var(--muted); font-size: .9rem; display: inline-block; padding: .25em 0; }
.beneath li a:hover { color: var(--brand-dark); }
.beneath02 { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.beneath02 a { flex: 1 1 220px; justify-content: center; }
.beneath02 .icon07, .beneath02 .icon08 { display: inline; }

footer { background: var(--heading); color: rgba(255,255,255,.85); text-align: center; padding: var(--sp-4); }
footer p { margin: 0; font-size: .8rem; letter-spacing: .04em; }

/* ページトップボタン */
.pagetop {
	position: fixed; right: 18px; bottom: 18px; z-index: 60;
	margin: 0; opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease;
}
.pagetop.show { opacity: 1; visibility: visible; }
.pagetop a {
	display: flex; align-items: center; justify-content: center;
	width: 46px; height: 46px; border-radius: 50%;
	background: var(--brand); color: #fff; box-shadow: var(--shadow-sm);
}
.pagetop a:hover { background: var(--brand-dark); }
.pagetop a::before { content: "↑"; font-size: 1.2rem; line-height: 1; }
.pagetop a img { display: none; }

/* =============================================================
   行事案内 (event.html) — タブ / テーブル
   ============================================================= */
.event-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: var(--sp-4); }
.event-tabs .tab-year {
	padding: .45em 1em; border-radius: 999px;
	background: var(--bg-soft); color: var(--muted);
	border: 1px solid var(--border); font-size: .85rem; font-weight: 500;
}
.event-tabs .tab-year:hover { border-color: var(--brand); color: var(--brand-dark); }
.event-tabs .tab-year.active { background: var(--brand); color: #fff; border-color: var(--brand); }

/* 年度セレクト（モバイル時のみ。PC はピルタブ） */
.event-year-select { display: none; }
@media (max-width: 599px){
	.event-tabs { display: none; }
	.event-year-select {
		display: block; width: 100%; margin-bottom: var(--sp-4);
		padding: .7em 2.4em .7em 1em; border-radius: var(--radius-sm);
		border: 1px solid var(--border-strong); background-color: #fff;
		color: var(--heading); font-family: var(--font-heading); font-weight: 500; font-size: 1rem;
		appearance: none; -webkit-appearance: none; cursor: pointer;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%233f969e' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
		background-repeat: no-repeat; background-position: right 1em center; background-size: .85em;
	}
	.event-year-select:focus { outline: 2px solid var(--brand); outline-offset: 1px; border-color: var(--brand); }
}

.event-subtabs { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: var(--sp-4); }
.event-subtabs .subtab {
	padding: .4em .9em; border-radius: var(--radius-sm);
	background: #fff; border: 1px solid var(--border-strong);
	font-size: .85rem; font-weight: 500; color: var(--muted);
}
.event-subtabs .subtab:hover { border-color: var(--brand); color: var(--brand-dark); }
.event-subtabs .subtab.active { background: var(--brand-soft); border-color: var(--brand); color: var(--brand-dark); font-weight: 700; }

.event-empty { color: var(--muted); padding: var(--sp-5) 0; }

/* 年度パネルの PDF 埋め込み（平成25年度以前の例会一覧 等） */
.pdf-doc { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); }
.pdf-doc-head { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; padding: var(--sp-4); background: var(--brand-soft); }
.pdf-doc-ico { font-size: 2rem; line-height: 1; }
.pdf-doc-meta { min-width: 0; }
.pdf-doc-title { font-weight: 700; color: var(--heading); margin: 0; }
.pdf-doc-sub { font-size: .85rem; color: var(--muted); margin: 0; }
.pdf-doc-btn { margin-left: auto; flex-shrink: 0; }
.pdf-frame { width: 100%; height: min(80vh, 880px); background: #f1f3f4; }
.pdf-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 599px){
	.pdf-doc-btn { margin-left: 0; width: 100%; }
	.pdf-frame { height: 62vh; min-height: 360px; }
}

.event-table {
	box-shadow: var(--shadow-sm); border: 1px solid var(--border);
	border-radius: var(--radius); overflow: hidden; background: #fff;
}
.event-table > caption {
	caption-side: top; text-align: left;
	background: var(--brand); color: #fff;
	font-weight: 700; font-size: 1.1rem; line-height: 1.5; letter-spacing: .02em;
	padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--brand-dark);
}
.event-table td, .event-table th {
	padding: var(--sp-3) var(--sp-4); text-align: left; vertical-align: top;
	border-top: 1px solid var(--border); line-height: 1.7;
}
.event-table tr:first-child > td, .event-table tr:first-child > th { border-top: 0; }
/* 左ラベル列（旧 heading / cere） */
.event-table td.heading, .event-table td.cere {
	width: 7em; white-space: nowrap;
	background: var(--bg-tint); color: var(--heading); font-weight: 700;
}
@media (max-width: 599px){
	.event-table, .event-table tbody, .event-table tr, .event-table td { display: block; width: 100%; }
	.event-table > caption { display: block; width: 100%; }
	.event-table td.heading, .event-table td.cere {
		width: auto; white-space: normal; background: #fff; color: var(--brand-dark);
		padding-bottom: 0; border-top: 1px solid var(--border);
	}
	.event-table td.heading + td, .event-table td.cere + td { border-top: 0; padding-top: var(--sp-1); }
}
/* ===== 会次第：講演ブロック ===== */
.event-table td ul { margin: 0 0 var(--sp-2); padding: 0; list-style: none; }
.event-table td ul:last-child { margin-bottom: 0; }
.event-table td ul > li { padding: 0; }

/* 講演を含む ul = カード化 */
.event-table td ul:has(.label_t01) {
	margin: 0 0 var(--sp-3); padding: var(--sp-4) var(--sp-4) var(--sp-3);
	background: #fff; border: 1px solid var(--border); border-left: 4px solid var(--brand);
	border-radius: var(--radius-sm); box-shadow: var(--shadow-sm);
}
.event-table td ul:has(.label_t01):last-child { margin-bottom: 0; }

/* 講演タイトル（label_t01 を含む li） */
.event-table td ul:has(.label_t01) > li:has(.label_t01) {
	font-size: 1.06rem; font-weight: 700; color: var(--heading); line-height: 1.55;
	margin-bottom: var(--sp-3); padding-bottom: var(--sp-3);
	border-bottom: 1px solid var(--border);
}
/* 講演ラベルは必ず独立行（演題名は下段に統一）。元データの <br> 有無に依存しない */
.event-table .label_t01 {
	display: block; width: fit-content;
	background: var(--brand); color: #fff; font-size: .76rem; font-weight: 700;
	border-radius: 999px; padding: .3em .95em; margin: 0 0 .5em; letter-spacing: .04em;
}
.event-table .label_t01 strong { font-weight: 700; }
.event-table .label_t01 + br { display: none; }   /* バッジ直後の改行を無効化（二重改行防止） */

/* サブ見出し（講師 / 概要 / 要旨 等） */
.event-table td li.lec-key {
	display: inline-block; font-size: .76rem; font-weight: 700; color: var(--brand-dark);
	background: var(--brand-soft); border-radius: 4px;
	padding: .22em .85em; margin: var(--sp-3) 0 var(--sp-2); letter-spacing: .06em;
}
.event-table td ul:has(.label_t01) > li.lec-key:first-of-type { margin-top: var(--sp-1); }

/* 本文（講師名・概要 = lpl） */
.event-table td li.lpl {
	list-style: none; margin: 0; padding: 0 0 0 .2em;
	line-height: 1.9; color: var(--text);
}
.event-table td li.lpl + li.lpl { margin-top: var(--sp-2); }
.event-table td li.lpl > ol { margin: .4em 0 .4em 1.4em; padding: 0; list-style: decimal; }
.event-table td li.lpl > ol > li { font-size: .95em; font-weight: 400; padding: .1em 0; }

/* 講演以外の単純な注記リスト（開催挨拶 等） */
.event-table td ul:not(:has(.label_t01)) > li { line-height: 1.8; padding: .12em 0; }

/* === 総会パターン（439/437/435/431 等）=== */
/* セクション見出し（《当日の全体スケジュール》等） */
.event-table td.sec-head {
	background: var(--brand-soft); color: var(--brand-dark); font-weight: 700;
	font-size: .98rem; letter-spacing: .02em;
	padding: var(--sp-2) var(--sp-3) !important;
	border-top: 6px solid #fff !important;
}
.event-table tr:first-child td.sec-head { border-top: 0 !important; }
/* セクション本文（dl のラッパー） */
.event-table td.sec-body { padding: var(--sp-3) !important; border-top: 0 !important; }

/* スケジュール表（soukai）: 行程名 | 時刻 */
.event-table .soukai {
	display: grid; grid-template-columns: 1fr auto; margin: 0;
	border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden;
}
.event-table .soukai dt, .event-table .soukai dd {
	padding: var(--sp-2) var(--sp-3); border-top: 1px solid var(--border); line-height: 1.5;
}
.event-table .soukai dt { color: var(--heading); font-weight: 500; }
.event-table .soukai dd { margin: 0; text-align: right; white-space: nowrap; color: var(--muted); font-variant-numeric: tabular-nums; }
.event-table .soukai dt:first-of-type, .event-table .soukai dd:first-of-type { border-top: 0; }

/* 詳細表（soukai02）: ラベル | 内容（430のラベル列スタイルに合わせる） */
.event-table .soukai02 {
	display: grid; grid-template-columns: 6.5em 1fr; margin: 0;
	border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden;
}
.event-table .soukai02 dt {
	background: var(--bg-tint); color: var(--heading); font-weight: 700; white-space: nowrap;
	padding: var(--sp-2) var(--sp-3); border-top: 1px solid var(--border);
}
.event-table .soukai02 dd {
	padding: var(--sp-2) var(--sp-3); border-top: 1px solid var(--border); margin: 0; line-height: 1.7;
}
.event-table .soukai02 dt:first-of-type, .event-table .soukai02 dd:first-of-type { border-top: 0; }
@media (max-width: 599px){
	/* ラベルを上、内容を下にスタック（430のモバイル挙動に合わせる） */
	.event-table .soukai02 { grid-template-columns: 1fr; }
	.event-table .soukai02 dt { border-top: 1px solid var(--border); background: #fff; color: var(--brand-dark); padding-bottom: 0; }
	.event-table .soukai02 dd { border-top: 0; padding-top: var(--sp-1); }
	.event-table .soukai02 dt:first-of-type { border-top: 0; }
}

/* 会員専用ダウンロード行（旧 mdwn）
   ※ <td colspan="2"> に display:flex を当てると colspan が無効化されセルが潰れるため、
      td はテーブルセルのまま（colspan維持）、中の <p> を inline-block で横並びにする。 */
.event-table td.mdwn { background: var(--bg-tint); vertical-align: middle; }
.event-table td.mdwn > p {
	display: inline-block; vertical-align: middle;
	float: none !important; margin: 0 var(--sp-4) 0 0 !important;
}
.event-table td.mdwn > p:empty { display: none; }
.event-table td.mdwn .pdf-ico { font-size: 1.9rem; line-height: 1; }
.event-table .dwn_m {
	display: inline-flex; align-items: center; gap: .4em;
	padding: .6em 1.3em; border-radius: 999px;
	background: var(--accent); color: #fff; font-weight: 700; font-size: .9rem;
	white-space: nowrap;
}
.event-table .dwn_m:hover { background: var(--accent-dark); color: #fff; text-decoration: none; }
.event-table .dl-ico { font-size: .95em; }
@media (max-width: 599px){
	.event-table td.mdwn > p { margin: 0 var(--sp-3) var(--sp-2) 0 !important; }
}

/* ---------- 工場見学会（トグル + 一覧） ---------- */
.toggle-wrap { margin-top: var(--sp-3); }
#toggle-checkbox { position: absolute; opacity: 0; pointer-events: none; }
.toggle-button {
	display: inline-flex; align-items: center; gap: .5em; cursor: pointer;
	padding: .6em 1.3em; border-radius: 999px;
	background: var(--brand-soft); color: var(--brand-dark); font-weight: 700; font-size: .92rem;
}
.toggle-button::before { content: "▶"; font-size: .7em; transition: transform .2s ease; }
#toggle-checkbox:checked + .toggle-button::before { transform: rotate(90deg); }
.toggle-content { display: none; margin-top: var(--sp-4); }
#toggle-checkbox:checked ~ .toggle-content { display: block; }

.tour { box-shadow: var(--shadow-sm); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.tour th, .tour td { padding: var(--sp-2) var(--sp-3); border-top: 1px solid var(--border); text-align: left; vertical-align: top; font-size: .92rem; }
.tour tr > td:nth-child(2) { white-space: nowrap; }
.tour thead th { background: var(--brand); color: #fff; border-top: 0; white-space: nowrap; }
.tour .nendo { white-space: nowrap; color: var(--heading); font-weight: 500; }
.tour tbody tr:nth-child(even) { background: var(--bg-tint); }
@media (max-width: 599px){
	.tour, .tour tbody, .tour tr, .tour td { display: block; width: 100%; }
	.tour thead { display: none; }
	.tour td { border-top: 0; padding: .15em var(--sp-3); }
	.tour tr { border-top: 1px solid var(--border); padding: var(--sp-2) 0; }
	.tour .nendo { font-weight: 700; }
}

/* ---------- 12. 汎用ユーティリティ（旧マージン系の互換） ---------- */
.mb15 { margin-bottom: 15px; } .mb35 { margin-bottom: 35px; } .mb55 { margin-bottom: 55px; }
.mt1em { margin-top: 1em; } .mt2em { margin-top: 2em; }
.texR { text-align: right; } .clear { clear: both; }
.pc { display: none; } .sp { display: block; }
@media (min-width: 600px){ .pc { display: block; } .sp { display: none; } }
.anchor { display: block; position: relative; top: calc(-1 * (var(--nav-h) + 12px)); visibility: hidden; }

/* =============================================================
   コンテンツページ共通（概要 / 組織 / 会則 / 細則 / あゆみ 等）
   ============================================================= */
.container h4 {
	font-size: 1.05rem; font-weight: 700; color: var(--heading);
	margin: var(--sp-5) 0 var(--sp-2); padding-left: .6em;
	border-left: 4px solid var(--brand);
}
.container h5 {
	font-size: 1rem; font-weight: 700; color: var(--brand-dark);
	margin: var(--sp-5) 0 var(--sp-2);
}
.container section > p, .container .m_info > p { line-height: 1.9; }

/* お知らせ一覧（info.html の dl.Info を news-list と同等に） */
dl.Info { display: block; }
dl.Info dt { font-weight: 700; color: var(--brand-dark); font-size: .85rem; letter-spacing: .04em; padding-top: var(--sp-4); }
dl.Info dd { padding: var(--sp-1) 0 var(--sp-4); border-bottom: 1px dashed var(--border); margin: 0; }
dl.Info dd.last { border-bottom: 0; }
@media (min-width: 600px){
	dl.Info { display: grid; grid-template-columns: max-content 1fr; column-gap: 0; }
	dl.Info dt { padding-top: var(--sp-4); border-top: 1px dashed var(--border); line-height: 1.8rem; white-space: nowrap; }
	dl.Info dd { padding: var(--sp-4) 0 var(--sp-4) var(--sp-5); border-bottom: 0; border-top: 1px dashed var(--border); }
	dl.Info dt:first-of-type, dl.Info dd:first-of-type { border-top: 0; }
}

/* 概要：定義リスト（join01 / join02） */
.m_info { margin-bottom: var(--sp-4); }
.join01, .join02 {
	display: grid; grid-template-columns: max-content 1fr; gap: .3em var(--sp-4);
	margin: var(--sp-3) 0; padding: var(--sp-4); background: var(--bg-tint);
	border-radius: var(--radius-sm); border: 1px solid var(--border);
}
.join01 dt, .join02 dt { font-weight: 700; color: var(--heading); white-space: nowrap; }
.join01 dd, .join02 dd { margin: 0; }

/* 概要：サブリンク（scr_p） */
.scr_p { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin: var(--sp-4) 0; }
.scr_p li a {
	display: inline-flex; align-items: center;
	padding: .5em 1.1em; border-radius: 999px;
	background: var(--brand-soft); color: var(--brand-dark); font-weight: 500; font-size: .9rem;
}
.scr_p li a:hover { background: var(--brand); color: #fff; text-decoration: none; }

/* CTAリンク（entry / entry02） */
.entry, .entry02 {
	display: inline-block;
	padding: .85em 1.6em; border-radius: 999px;
	background: var(--accent); color: #fff; font-weight: 500; line-height: 1.6;
	margin-top: var(--sp-3); text-decoration: none;
}
.entry:hover, .entry02:hover { background: var(--accent-dark); color: #fff; text-decoration: none; }
.entry02 span { font-weight: 700; font-size: 1.08em; }
.entry02 br.tbls { display: none; }   /* 旧レスポンシブ用 br を無効化（1行で自然に折返し） */

/* 会則 / 細則：タブブロック */
.tabBlock { margin: 0; }
.tabBlock-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: var(--sp-4); border: 0; padding: 0; }
.tabBlock-tab {
	cursor: pointer; padding: .55em 1.3em; border-radius: 999px;
	background: var(--bg-soft); color: var(--muted);
	border: 1px solid var(--border); font-weight: 500; font-size: .92rem;
}
.tabBlock-tab:hover { border-color: var(--brand); color: var(--brand-dark); }
.tabBlock-tab.is-active { background: var(--brand); color: #fff; border-color: var(--brand); }
.tabBlock-pane[hidden] { display: none; }

.rule01 {
	font-size: 1.2rem; font-weight: 700; color: var(--heading);
	text-align: center; margin: var(--sp-3) 0 var(--sp-4);
	padding-bottom: var(--sp-3); border-bottom: 2px solid var(--brand-soft);
}
.revision {
	width: auto; margin: 0 0 var(--sp-5); font-size: .8rem; color: var(--muted);
	border: 1px solid var(--border);
}
.revision td { border: 1px solid var(--border); padding: .25em .8em; }
.revision tr:first-child td { background: var(--bg-tint); font-weight: 700; text-align: center; }

/* 会則本文（kisoku / ktitle） */
.kisoku { display: grid; grid-template-columns: 2.4em 1fr; gap: .15em var(--sp-3); margin: 0 0 var(--sp-5); }
.kisoku dt { color: var(--muted); font-weight: 700; text-align: right; }
.kisoku dd { margin: 0; line-height: 1.85; }
.kisoku dt.ktitle {
	grid-column: 1 / -1; color: var(--brand-dark); font-weight: 700;
	text-align: left; margin-top: var(--sp-3); padding-left: .4em;
}
.kisoku dd.ktitle02 { display: none; }

/* 汎用テーブル（tbl01 / tbl02 / tbl03 / tbls） */
.tbl01, .tbl02, .tbl03, table.tbls { margin: var(--sp-2) 0 var(--sp-4); border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }
.tbl01 th, .tbl01 td, .tbl03 th, .tbl03 td, table.tbls th, table.tbls td { padding: var(--sp-2) var(--sp-3); border-top: 1px solid var(--border); text-align: left; vertical-align: top; }
.tbl01 tr:first-child th, .tbl01 tr:first-child td { border-top: 0; }
.tbl01 th, .tbl03 th, table.tbls th { background: var(--bg-tint); color: var(--heading); font-weight: 700; white-space: nowrap; width: 8em; }
.tbl02 { width: auto; border: 0; }
.tbl02 td { padding: .15em var(--sp-3) .15em 0; border: 0; }
/* 右寄せ指定(texR)はテーブルの既定 text-align より優先（会費の「円」揃え等） */
.container td.texR, .event-table td.texR { text-align: right; }
/* 会費テーブル(tbl03)の金額セルは等幅数字で桁を揃える */
.tbl03 td.texR { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* 組織：会員一覧 */
.member_list_box { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.member_list { min-width: 620px; font-size: .85rem; }
.member_list th, .member_list td { padding: .4em .6em; border-top: 1px solid var(--border); text-align: center; }
.member_list thead th { position: sticky; top: 0; background: var(--brand); color: #fff; border-top: 0; line-height: 1.3; }
.member_list tbody td:first-child { text-align: left; }
.member_list .m_class { background: var(--brand-soft); color: var(--brand-dark); font-weight: 700; text-align: left; }

/* 組織：専門部会 */
.bukai { margin: 0 0 var(--sp-4); padding: var(--sp-4); background: var(--bg-tint); border-radius: var(--radius-sm); border-left: 4px solid var(--brand); }
.bukai li:first-child { font-weight: 700; color: var(--heading); margin-bottom: var(--sp-1); }
.bukai li { line-height: 1.8; }

/* =============================================================
   会員専用ダウンロードページ（data/ 配下・今後用テンプレート）
   ※ 旧ページは data/css/style_d.css のままなので影響なし
   ============================================================= */
.member-badge {
	display: inline-flex; align-items: center; gap: .4em;
	padding: .35em 1em; border-radius: 999px;
	background: var(--accent); color: #fff; font-size: .8rem; font-weight: 700;
	font-family: var(--font-heading); letter-spacing: .04em;
}
.member-badge::before { content: "🔒"; font-size: .9em; }
.member-page .member-title { color: var(--heading); margin-bottom: var(--sp-3); }
.member-note { color: var(--muted); margin-bottom: var(--sp-5); }
.file_box {
	border: 1px solid var(--border); border-left: 4px solid var(--brand);
	border-radius: var(--radius); box-shadow: var(--shadow-sm);
	padding: var(--sp-5); margin-bottom: var(--sp-5); background: #fff;
}
.file_box ul { margin: 0 0 var(--sp-4); }
.file_box ul li { line-height: 1.9; padding: .1em 0; }
.file_box ul li.fb-title { font-weight: 700; color: var(--heading); font-size: 1.05rem; font-family: var(--font-heading); margin-bottom: var(--sp-2); }
.file_box .ls02, .file_box .ls03 {
	display: inline-block; min-width: 6.5em;
	color: var(--brand-dark); font-weight: 700; font-size: .85rem;
}
.fb-actions { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.fb-actions .btn { min-width: 9em; }
.member-back { margin-top: var(--sp-6); }
.member-back a { color: var(--link); font-weight: 700; }

/* mailform 受付完了（thanks）ページ */
#thanks { max-width: 760px; margin: 0 auto; }
#thanks h1 {
	font-size: clamp(1.3rem, 4vw, 1.8rem); color: var(--heading); text-align: center;
	margin-bottom: var(--sp-5); padding-bottom: var(--sp-4); border-bottom: 2px solid var(--brand-soft);
}
#thanks h1::before {
	content: "✓"; display: block; width: 2.4em; height: 2.4em; line-height: 2.4em;
	margin: 0 auto var(--sp-3); border-radius: 50%;
	background: var(--brand); color: #fff; font-size: 1.1rem; font-weight: 700;
}
#thanks p { margin-bottom: var(--sp-4); line-height: 1.9; }
#thanks p a { color: var(--link); font-weight: 700; }

/* details.html ポップアップ */
.popup-body { background: var(--bg); }
.popup-doc { max-width: 600px; margin: 0 auto; padding: var(--sp-5) var(--sp-5) var(--sp-6); }
.popup-title { font-size: 1.3rem; font-weight: 700; color: var(--heading); padding-bottom: var(--sp-3); margin-bottom: var(--sp-4); border-bottom: 2px solid var(--brand); }
.centerbox p { margin-bottom: var(--sp-4); }
.setbottom { margin-top: var(--sp-6); text-align: center; }
