/* ==========================================================================
   base：土台・ヘッダー・フッター・共通パーツ
   ========================================================================== */

body{
	font-family:var(--f-sans);
	font-size:15px;
	line-height:1.95;
	color:var(--ink);
	background:var(--paper);
	font-feature-settings:"palt" 1;
	overflow-x:hidden;
}
@media (min-width:768px){ body{font-size:16px} }

::selection{background:var(--teal);color:#fff}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.wrap--narrow{max-width:840px}

.skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--ink);color:#fff;padding:10px 16px}
.skip-link:focus{left:8px;top:8px}

.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

a{transition:color .18s ease,border-color .18s ease,background-color .18s ease}
a:hover{color:var(--teal)}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}

/* --- スクロール表示（JSで .is-in を付与）------------------------------------
   ★初期状態を隠すのは「JSが動いている時（html.js）」だけ。JS無効・JS失敗時でも
     本文が消えないようにする。 */
.js [data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .65s ease,transform .65s ease}
.js [data-reveal].is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){ .js [data-reveal]{opacity:1;transform:none} }

/* --- 見出し・テキスト共通 -------------------------------------------------- */
.serif{font-family:var(--f-serif)}
.mono{font-family:var(--f-mono)}

.eyebrow{
	display:flex;align-items:center;gap:10px;
	font-family:var(--f-mono);font-size:11px;font-weight:500;
	letter-spacing:.18em;color:var(--teal);text-transform:uppercase;
}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--teal);flex:none}

.lede{font-size:15px;line-height:2.1;color:var(--ink-2)}
@media (min-width:768px){ .lede{font-size:16.5px} }

/* --- ボタン ---------------------------------------------------------------- */
.btn{
	display:inline-flex;align-items:center;justify-content:center;gap:12px;
	padding:15px 30px;font-size:14px;font-weight:700;letter-spacing:.06em;
	border:1px solid var(--ink);text-align:center;position:relative;
}
.btn--solid{background:var(--ink);color:#fff}
.btn--solid:hover{background:var(--teal);border-color:var(--teal);color:#fff}
.btn--ghost{background:transparent;color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:#fff}
.btn--teal{background:var(--teal);border-color:var(--teal);color:#fff}
.btn--teal:hover{background:var(--teal-d);border-color:var(--teal-d);color:#fff}
.btn::after{content:"→";font-family:var(--f-mono);font-weight:400;transition:transform .2s ease}
.btn:hover::after{transform:translateX(4px)}
.btn--noarrow::after{content:none}

/* --- ヘッダー -------------------------------------------------------------- */
.site-header{
	position:sticky;top:0;z-index:100;
	background:rgba(251,251,247,.94);
	backdrop-filter:saturate(180%) blur(8px);
	border-bottom:1px solid var(--line);
}
.hdr{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--hdr-h)}

.brand{display:flex;align-items:center;gap:11px;flex:none}
.brand__mark{
	width:36px;height:36px;flex:none;display:grid;place-items:center;
	background:var(--ink);color:#fff;
	font-family:var(--f-serif);font-weight:600;font-size:13px;letter-spacing:.04em;
}
.brand__mark svg{width:20px;height:20px}
.brand__logo{width:36px;height:36px;object-fit:contain;flex:none}
.brand__txt{display:flex;flex-direction:column;line-height:1.25}
.brand__en{font-family:var(--f-serif);font-weight:600;font-size:17px;letter-spacing:.08em}
.brand__ja{font-family:var(--f-sans);font-size:9.5px;letter-spacing:.14em;color:var(--ink-3)}
@media (min-width:768px){
	.brand__en{font-size:19px}
	.brand__ja{font-size:10.5px}
}

.gnav{display:none}
@media (min-width:1024px){
	.gnav{display:flex;align-items:center;gap:0}
	/* 項目が7つあるため、1024〜1279px では左右の余白を詰めて収める */
	.gnav a{
		position:relative;padding:8px 10px;font-size:12.5px;font-weight:500;letter-spacing:.02em;color:var(--ink-2);
	}
	.gnav a::after{
		content:"";position:absolute;left:10px;right:10px;bottom:2px;height:1px;background:var(--teal);
		transform:scaleX(0);transform-origin:left;transition:transform .22s ease;
	}
	.gnav a:hover{color:var(--ink)}
	.gnav a:hover::after{transform:scaleX(1)}
}
@media (min-width:1280px){
	.gnav a{padding:8px 14px;font-size:13px;letter-spacing:.04em}
	.gnav a::after{left:14px;right:14px}
}
.hdr__cta{display:none}
@media (min-width:1024px){
	.hdr__cta{display:inline-flex;align-items:center;padding:11px 20px;font-size:12.5px;font-weight:700;letter-spacing:.06em;
		border:1px solid var(--teal);color:var(--teal)}
	.hdr__cta:hover{background:var(--teal);color:#fff}
}

/* ハンバーガー（〜1023px） */
.burger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;align-items:center;border:1px solid var(--line-2)}
.burger span{display:block;width:18px;height:1.5px;background:var(--ink);transition:transform .25s ease,opacity .2s ease}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
@media (min-width:1024px){ .burger{display:none} }

.drawer{
	position:fixed;inset:var(--hdr-h) 0 0;z-index:99;background:var(--paper);
	border-top:1px solid var(--line);
	transform:translateY(-8px);opacity:0;visibility:hidden;transition:all .24s ease;
	overflow-y:auto;
}
.drawer.is-open{transform:none;opacity:1;visibility:visible}
.drawer__inner{padding:8px var(--gut) 48px}
.drawer a{
	display:flex;align-items:baseline;gap:14px;padding:17px 2px;border-bottom:1px solid var(--line-3);
	font-family:var(--f-serif);font-size:16px;font-weight:500;
}
.drawer a i{font-family:var(--f-mono);font-style:normal;font-size:10.5px;letter-spacing:.12em;color:var(--teal);flex:none}
.drawer .btn{width:100%;margin-top:26px}
@media (min-width:1024px){ .drawer{display:none} }

/* --- パンくず -------------------------------------------------------------- */
.crumbs{border-bottom:1px solid var(--line);background:var(--white)}
.crumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;font-size:11.5px;color:var(--ink-3)}
.crumbs li+li::before{content:"/";margin-right:8px;color:var(--line-2);font-family:var(--f-mono)}
.crumbs a{color:var(--ink-3)}
.crumbs a:hover{color:var(--teal)}

/* --- フッター -------------------------------------------------------------- */
.site-footer{background:var(--ink);color:#C6D3D8;margin-top:0}
.foot-top{padding:var(--s8) 0 var(--s7)}
.foot-grid{display:grid;gap:var(--s7)}
@media (min-width:768px){ .foot-grid{grid-template-columns:1.25fr 1fr 1fr;gap:var(--s6)} }
@media (min-width:1024px){ .foot-grid{grid-template-columns:1.5fr 1fr 1fr 1fr} }

.foot-brand__mark{display:flex;align-items:center;gap:11px;margin-bottom:18px}
.foot-brand__mark .m{width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.35);
	font-family:var(--f-serif);font-size:13px;color:#fff}
.foot-brand__mark b{font-family:var(--f-serif);font-size:19px;letter-spacing:.08em;color:#fff;font-weight:600}
.foot-brand p{font-size:13px;line-height:2;color:#9FB2BA}
.foot-en{margin-top:18px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;color:#6C838D}

.foot-col__h{font-family:var(--f-mono);font-size:11px;font-weight:500;letter-spacing:.16em;color:#7FA8A2;margin-bottom:16px}
.foot-col a{display:block;padding:6px 0;font-size:13.5px;color:#C6D3D8}
.foot-col a:hover{color:#fff}
/* まだページが無い項目：リンクにせず「準備中」を添える */
.foot-soon{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13.5px;color:#7B929B;cursor:default}
.foot-soon small{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.1em;color:#6C838D;border:1px solid rgba(255,255,255,.18);padding:2px 6px;line-height:1.3}

.foot-bottom{border-top:1px solid rgba(255,255,255,.12);padding:22px 0 30px;
	display:flex;flex-wrap:wrap;gap:10px 24px;align-items:center;justify-content:space-between;
	font-size:11.5px;color:#7B929B}
.foot-bottom nav{display:flex;flex-wrap:wrap;gap:18px}

/* --- フォーム -------------------------------------------------------------- */
.cform__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cform__row{margin-bottom:22px}
.cform__label{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700;letter-spacing:.04em;margin-bottom:8px}
.cform__label .req,.cform__label .any{
	font-family:var(--f-mono);font-size:9.5px;font-weight:500;letter-spacing:.1em;padding:3px 7px;line-height:1;
}
.cform__label .req{background:var(--crimson);color:#fff}
.cform__label .any{border:1px solid var(--line-2);color:var(--ink-3)}
.cform input[type=text],.cform input[type=email],.cform select,.cform textarea{
	width:100%;padding:13px 14px;border:1px solid var(--line-2);background:var(--white);
	font-size:16px;line-height:1.7;transition:border-color .18s ease;
}
.cform textarea{resize:vertical}
.cform input:focus,.cform select:focus,.cform textarea:focus{border-color:var(--teal);outline:none}
.cform__agree{margin:26px 0;padding:16px;background:var(--paper-2);border:1px solid var(--line)}
.cform__agree label{display:flex;gap:11px;align-items:flex-start;font-size:12.5px;line-height:1.9;color:var(--ink-2)}
.cform__agree input{margin-top:5px;flex:none;width:16px;height:16px;accent-color:var(--teal)}
.cform .btn{width:100%}
@media (min-width:768px){ .cform .btn{width:auto;min-width:280px} }

.form-note{padding:14px 16px;margin-bottom:24px;font-size:13.5px;line-height:1.9;border:1px solid}
.form-note--ok{background:var(--teal-l);border-color:var(--teal);color:var(--teal-d)}
.form-note--ng{background:#FCF1F0;border-color:var(--crimson);color:var(--crimson)}
.form-note--ng p+p{margin-top:4px}

/* --- 下層ページ（汎用）----------------------------------------------------- */
.page-head{border-bottom:1px solid var(--line);padding:var(--s7) 0 var(--s6);background:var(--white)}
.page-head h1{font-family:var(--f-serif);font-size:25px;font-weight:600;line-height:1.5;letter-spacing:.02em;margin-top:10px}
@media (min-width:768px){ .page-head{padding:var(--s8) 0 var(--s7)} .page-head h1{font-size:34px} }

.pager{margin-top:var(--s7)}
.pager .nav-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.pager .page-numbers{display:grid;place-items:center;min-width:40px;height:40px;padding:0 12px;
	border:1px solid var(--line-2);font-family:var(--f-mono);font-size:13px;color:var(--ink-2)}
.pager .page-numbers.current{background:var(--ink);border-color:var(--ink);color:#fff}
.pager a.page-numbers:hover{border-color:var(--teal);color:var(--teal)}

.page-head__lead{margin-top:var(--s4);font-size:14.5px;line-height:2.05;color:var(--ink-2);max-width:60em}
@media (min-width:768px){ .page-head__lead{font-size:16px;margin-top:var(--s5)} }

/* 下層ページ下部の共通CTA */
.page-cta{background:var(--ink);color:#C6D3D8;border-bottom:1px solid rgba(255,255,255,.1)}
.page-cta__in{padding:var(--s8) 0;text-align:center}
@media (min-width:768px){ .page-cta__in{padding:var(--s9) 0} }
.page-cta .eyebrow{color:#57B3A6;justify-content:center}
.page-cta .eyebrow::before{background:#57B3A6}
.page-cta h2{margin-top:var(--s4);font-family:var(--f-serif);font-size:21px;font-weight:600;line-height:1.6;color:#fff;line-break:strict}
@media (min-width:768px){ .page-cta h2{font-size:28px} }
.page-cta p{margin-top:var(--s4);font-size:13.5px;line-height:2;color:#A9BDC4;max-width:60ch;margin-inline:auto}
.page-cta .btn{margin-top:var(--s6);min-width:260px}

.entry{padding:var(--s7) 0 var(--s9)}
.entry__body>*+*{margin-top:1.6em}
.entry__body h2{font-family:var(--f-serif);font-size:20px;font-weight:600;line-height:1.6;padding-bottom:12px;border-bottom:1px solid var(--line-2);margin-top:2.4em}
.entry__body h3{font-family:var(--f-serif);font-size:17px;font-weight:600;line-height:1.7;padding-left:12px;border-left:3px solid var(--teal);margin-top:2em}
/* h4 は白書のような章立ての長い記事で使う（h2 章 → h3 節 → h4 項）。
   罫線を持たせず字面だけで段差を作り、h3 との差を保つ。 */
.entry__body h4{font-family:var(--f-serif);font-size:15px;font-weight:600;line-height:1.8;margin-top:1.8em;color:var(--ink)}
.entry__body h4+p{margin-top:.6em}
.entry__body p{line-height:2.05}
.entry__body ul{list-style:none}
.entry__body ul li{position:relative;padding-left:18px;margin-top:.5em}
.entry__body ul li::before{content:"";position:absolute;left:0;top:.95em;width:7px;height:1px;background:var(--teal)}
.entry__body ol{list-style:decimal;padding-left:1.4em}
.entry__body a{color:var(--teal);border-bottom:1px solid currentColor}
.entry__body table{border:1px solid var(--line-2);font-size:14px}
.entry__body th,.entry__body td{border:1px solid var(--line);padding:10px 12px;text-align:left}
.entry__body th{background:var(--paper-2);font-weight:700}
.entry__body blockquote{border-left:3px solid var(--line-2);padding:4px 0 4px 18px;color:var(--ink-2)}
