/*
Theme Name: 白熊義塾（shirokuma）
Theme URI: https://shirokuma-gijuku.com/
Author: 白熊義塾株式会社
Description: 白熊義塾 公式サイトのブロックテーマ。4言語（日本語・简体中文・繁體中文・English）。デザイン規格は DESIGN.md。機能は mu-plugin shirokuma-core。
Version: 0.1.0
Requires at least: 6.6
Requires PHP: 8.1
License: GPL-2.0-or-later
Text Domain: shirokuma
*/

/* ==========================================================================
   0. トークン（theme.json のプリセットの別名＋言語別の書体）DESIGN.md §2〜4
   ========================================================================== */
:root {
	--sk-paper: var(--wp--preset--color--paper);
	--sk-surface: var(--wp--preset--color--surface);
	--sk-washi: var(--wp--preset--color--washi);
	--sk-sky: var(--wp--preset--color--sky);
	--sk-ink: var(--wp--preset--color--ink);
	--sk-muted: var(--wp--preset--color--muted);
	--sk-line: var(--wp--preset--color--line);
	--sk-navy: var(--wp--preset--color--navy);
	--sk-navy-deep: var(--wp--preset--color--navy-deep);
	--sk-maple: var(--wp--preset--color--maple);
	--sk-wood: var(--wp--preset--color--wood);
	--sk-on-navy-muted: var(--wp--preset--color--on-navy-muted);
	--sk-field-border: #B9B3A8;
	--sk-wood-soft: #A88D70;   /* 大きな装飾数字用（白地で 3.1:1。大きな文字の基準 3:1 を満たす） */
	--sk-success: #2E7D5B;
	--sk-error: #B3261E;
	--sk-r-sm: var(--wp--custom--radius--sm);
	--sk-r-md: var(--wp--custom--radius--md);
	--sk-r-lg: var(--wp--custom--radius--lg);
	--sk-r-xl: var(--wp--custom--radius--xl);
	--sk-shadow-1: var(--wp--custom--shadow--1);
	--sk-shadow-2: var(--wp--custom--shadow--2);
	--sk-fast: var(--wp--custom--duration--fast);
	--sk-dur: var(--wp--custom--duration--base);
	--sk-slow: var(--wp--custom--duration--slow);
	--sk-ease: var(--wp--custom--ease);
	--sk-header-h: 72px;
	--sk-gutter: var(--wp--preset--spacing--40);
	--sk-section: var(--wp--preset--spacing--80);

	/* 書体：日本語を既定に、:lang() で切り替える（§3-1） */
	--sk-font-body: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", "Meiryo", sans-serif;
	--sk-font-heading: var(--sk-font-body);
	--sk-font-display: Outfit, var(--sk-font-body);
}
:lang(zh-Hans) {
	--sk-font-body: "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;
}
:lang(zh-Hant) {
	--sk-font-body: "PingFang TC", "Noto Sans TC", "Source Han Sans TC", "Microsoft JhengHei", sans-serif;
}
:lang(en) {
	--sk-font-body: Outfit, system-ui, -apple-system, "Segoe UI", sans-serif;
}
/* 言語切替の項目などは、その言語の書体で表示する */
:lang(ja) { font-family: var(--sk-font-body); }
:lang(zh-Hans), :lang(zh-Hant), :lang(en) { font-family: var(--sk-font-body); }

@media (max-width: 599px) {
	:root { --sk-header-h: 64px; }
}

/* ==========================================================================
   0-2. アイコン：Font Awesome Free 6.7.2（セルフホスト・使用グリフだけのサブセット。ADR-013）
   フォント：SIL OFL 1.1／アイコン：CC BY 4.0（assets/fonts/fontawesome/LICENSE.txt）
   アイコンを足すときは scripts/build-fontawesome.sh の一覧に追加して再生成する
   ========================================================================== */
@font-face { font-family: "Font Awesome 6 Brands"; font-style: normal; font-weight: 400; font-display: block; src: url("assets/fonts/fontawesome/fa-brands-400-subset.woff") format("woff"); }
@font-face { font-family: "Font Awesome 6 Free"; font-style: normal; font-weight: 900; font-display: block; src: url("assets/fonts/fontawesome/fa-solid-900-subset.woff") format("woff"); }
.fa-solid, .fa-brands {
	display: inline-block; flex: none; font-style: normal; font-variant: normal; line-height: 1; text-rendering: auto;
	-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 1.25em; text-align: center;
}
.fa-solid { font-family: "Font Awesome 6 Free"; font-weight: 900; }
.fa-brands { font-family: "Font Awesome 6 Brands"; font-weight: 400; }
.fa-solid::before, .fa-brands::before { content: var(--fa); }
.fa-line { --fa: "\f3c0"; } .fa-weixin { --fa: "\f1d7"; } .fa-qq { --fa: "\f1d6"; } .fa-whatsapp { --fa: "\f232"; }
.fa-facebook-messenger { --fa: "\f39f"; } .fa-instagram { --fa: "\f16d"; } .fa-x-twitter { --fa: "\e61b"; } .fa-youtube { --fa: "\f167"; }
.fa-tiktok { --fa: "\e07b"; } .fa-facebook { --fa: "\f09a"; } .fa-threads { --fa: "\e618"; } .fa-linkedin { --fa: "\f08c"; }
.fa-weibo { --fa: "\f18a"; } .fa-bilibili { --fa: "\e3d9"; }
.fa-envelope { --fa: "\f0e0"; } .fa-file-lines { --fa: "\f15c"; } .fa-globe { --fa: "\f0ac"; } .fa-xmark { --fa: "\f00d"; }
.fa-arrow-right { --fa: "\f061"; } .fa-copy { --fa: "\f0c5"; } .fa-check { --fa: "\f00c"; } .fa-comment-dots { --fa: "\f4ad"; }
.fa-location-dot { --fa: "\f3c5"; } .fa-bars { --fa: "\f0c9"; } .fa-chevron-down { --fa: "\f078"; } .fa-plus { --fa: "\2b"; }
.fa-circle-check { --fa: "\f058"; } .fa-paper-plane { --fa: "\f1d8"; } .fa-clock { --fa: "\f017"; } .fa-book-open { --fa: "\f518"; }


/* ==========================================================================
   1. ベース
   ========================================================================== */
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--sk-header-h) + 16px); -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
body { overflow-x: clip; font-feature-settings: normal; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
:lang(en) body, body:lang(en) { line-height: 1.7; }
h1, h2, h3, h4 { text-wrap: balance; }
:lang(ja) h1, :lang(ja) h2, :lang(ja) h3, :lang(zh-Hans) h1, :lang(zh-Hans) h2, :lang(zh-Hans) h3, :lang(zh-Hant) h1, :lang(zh-Hant) h2, :lang(zh-Hant) h3 { font-feature-settings: "palt"; }
:lang(en) h1, :lang(en) h2, :lang(en) h3 { font-family: var(--sk-font-display); font-weight: 600; letter-spacing: -0.01em; }
p { text-wrap: pretty; }
img { max-width: 100%; height: auto; }
a { text-decoration-thickness: 1px; text-underline-offset: .25em; transition: color var(--sk-fast) var(--sk-ease); }
.wp-block-post-content a:not(.wp-element-button):not(.sk-channel):not(.sk-btn) { text-decoration-color: var(--sk-maple); text-decoration-thickness: 2px; }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--sk-maple);
	outline-offset: 2px;
	border-radius: 4px;
}
.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;
}
.sk-skip {
	position: fixed; top: 8px; left: 8px; z-index: 1000; padding: 12px 20px; background: var(--sk-ink); color: #fff; border-radius: var(--sk-r-sm);
	transform: translateY(-200%); transition: transform var(--sk-fast);
}
.sk-skip:focus { transform: none; color: #fff; }
.sk-icon { flex: none; display: block; }
.sk-main { position: relative; }
.wp-site-blocks > * + * { margin-block-start: 0; }

/* アイブロウ（小見出し）§3-3 */
.sk-eyebrow {
	display: inline-flex; align-items: center; gap: .6em; margin: 0 0 .75rem;
	font-family: var(--sk-font-display); font-weight: 600; font-size: var(--wp--preset--font-size--sm);
	letter-spacing: .14em; text-transform: uppercase; color: var(--sk-wood);
}
.sk-eyebrow::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--sk-maple); }
.sk-lead { font-size: var(--wp--preset--font-size--lg); color: var(--sk-muted); line-height: 1.8; }

/* ==========================================================================
   2. ボタン §6-1
   ========================================================================== */
.sk-btn, .wp-block-button__link {
	box-sizing: border-box;
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	min-height: 52px; padding: .95rem 1.75rem; border-radius: 999px; border: 0;
	background: var(--sk-navy); color: #fff; font: inherit; font-weight: 700; line-height: 1.3; text-decoration: none; cursor: pointer;
	transition: background-color var(--sk-fast) var(--sk-ease), color var(--sk-fast) var(--sk-ease), transform var(--sk-fast) var(--sk-ease), box-shadow var(--sk-fast);
}
.sk-btn:hover, .wp-block-button__link:hover { background: var(--sk-navy-deep); color: #fff; }
.sk-btn[disabled], .sk-btn[aria-busy="true"] { opacity: .45; cursor: not-allowed; }
.sk-btn--sm { white-space: nowrap; min-height: 44px; padding: .6rem 1.25rem; font-size: var(--wp--preset--font-size--sm); }
.sk-btn--accent, .is-style-accent .wp-block-button__link { background: var(--sk-maple); color: #fff; }
.sk-btn--accent:hover, .is-style-accent .wp-block-button__link:hover { background: #962F1E; color: #fff; }
.is-style-outline .wp-block-button__link { background: transparent; color: var(--sk-ink); box-shadow: inset 0 0 0 1.5px var(--sk-ink); }
.is-style-outline .wp-block-button__link:hover { background: var(--sk-ink); color: #fff; }
.is-style-on-dark .wp-block-button__link { background: #fff; color: var(--sk-navy); }
.is-style-on-dark .wp-block-button__link:hover { background: var(--sk-washi); color: var(--sk-navy-deep); }
.is-style-ghost .wp-block-button__link { background: transparent; color: var(--sk-ink); padding-inline: 0; min-height: 44px; }
.is-style-ghost .wp-block-button__link::after { content: "\f061"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .85em; transition: transform var(--sk-hover) var(--sk-float); }
.is-style-ghost .wp-block-button__link:hover { color: var(--sk-maple); background: transparent; }
.is-style-ghost .wp-block-button__link:hover::after, .sk-channel:hover > .sk-icon:last-of-type { transform: translateX(4px); }

/* ==========================================================================
   3. ヘッダー・メニュー・言語切替 §6-2〜6-4
   ========================================================================== */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: 0; z-index: 50; }
.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { .admin-bar .wp-site-blocks > header.wp-block-template-part { top: 46px; } }
.sk-header {
	position: relative; background: color-mix(in srgb, var(--sk-paper) 92%, transparent);
	-webkit-backdrop-filter: saturate(1.4) blur(10px); backdrop-filter: saturate(1.4) blur(10px);
	transition: box-shadow var(--sk-dur) var(--sk-ease), background-color var(--sk-dur) var(--sk-ease);
}
.sk-header--overlay:not(.is-scrolled) { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
.sk-header.is-scrolled { background: color-mix(in srgb, var(--sk-surface) 94%, transparent); box-shadow: 0 1px 0 var(--sk-line), 0 8px 24px rgba(27,35,51,.06); }
.sk-header__inner {
	max-width: calc(var(--wp--style--global--wide-size) + 2 * var(--sk-gutter)); margin: 0 auto; padding: 0 var(--sk-gutter);
	height: var(--sk-header-h); display: flex; align-items: center; gap: 24px;
}
.sk-header__logo { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--sk-ink); flex: 0 1 auto; min-width: 0; }
.sk-lang__short { display: none; }
.sk-header__logo img { flex: none; width: 53px; height: 40px; }
.sk-header__name { display: flex; flex-direction: column; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; font-size: 1.0625rem; line-height: 1.2; letter-spacing: .04em; }
.sk-header__name small { font-weight: 400; font-size: .6875rem; color: var(--sk-muted); letter-spacing: .02em; }
.sk-nav { margin-inline-start: auto; }
.sk-nav__list { display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; }
.sk-nav__list a {
	display: flex; align-items: center; min-height: 44px; padding: 0 12px; border-radius: 999px;
	font-size: var(--wp--preset--font-size--sm); font-weight: 600; color: var(--sk-ink); text-decoration: none; white-space: nowrap;
}
.sk-nav__list a:hover { background: var(--sk-washi); color: var(--sk-ink); }
.sk-nav__list a[aria-current="page"] { color: var(--sk-navy); box-shadow: inset 0 -2px 0 var(--sk-maple); border-radius: 0; }
.sk-header__actions { flex: none; display: flex; align-items: center; gap: 8px; }
.sk-header__menu {
	display: none; width: 44px; height: 44px; border-radius: 999px; border: 0; background: var(--sk-washi); color: var(--sk-ink);
	align-items: center; justify-content: center; cursor: pointer;
}
@media (max-width: 1179px) {
	.sk-nav { display: none; }
	.sk-header__actions { margin-inline-start: auto; }
	.sk-header__menu { display: inline-flex; }
}
@media (max-width: 599px) {
	.sk-header__cta, .sk-header__name small { display: none; }
	.sk-header__logo img { width: 42px; height: 32px; }
	.sk-header__inner { gap: 12px; }
}
@media (max-width: 599px) { .sk-header__name { display: none; } }
.sk-header__actions > * { margin: 0 !important; }

.sk-lang { position: relative; }
.sk-lang summary {
	list-style: none; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border-radius: 999px;
	border: 1px solid var(--sk-line); background: var(--sk-surface); font-size: var(--wp--preset--font-size--sm); font-weight: 600; cursor: pointer;
}
.sk-lang summary::-webkit-details-marker { display: none; }
.sk-lang summary:hover { border-color: var(--sk-ink); }
@media (max-width: 599px) { .sk-lang__long { display: none; } .sk-lang__short { display: inline; font-weight: 700; } .sk-lang summary { padding: 0 10px; } }
.sk-lang__menu {
	position: absolute; right: 0; top: calc(100% + 8px); min-width: 180px; margin: 0; padding: 8px; list-style: none;
	background: var(--sk-surface); border: 1px solid var(--sk-line); border-radius: var(--sk-r-md); box-shadow: var(--sk-shadow-2); z-index: 60;
	transform-origin: top right;
}
.sk-lang__menu a, .sk-lang-list a {
	display: flex; align-items: center; min-height: 44px; padding: 0 12px; border-radius: var(--sk-r-sm); color: var(--sk-ink); text-decoration: none; font-weight: 500;
}
.sk-lang__menu a:hover { background: var(--sk-washi); }
.sk-lang__menu a[aria-current="true"], .sk-lang-list a[aria-current="true"] { font-weight: 700; }
.sk-lang__menu a[aria-current="true"]::after { content: "\f00c"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: .8em; margin-inline-start: auto; color: var(--sk-maple); }

.sk-lang-suggest {
	display: flex; justify-content: center; align-items: center; gap: 12px; padding: 8px var(--sk-gutter);
	background: var(--sk-sky); color: var(--sk-navy); font-size: var(--wp--preset--font-size--sm);
}
.sk-lang-suggest[hidden] { display: none; }
.sk-lang-suggest a { color: var(--sk-navy); font-weight: 700; }
.sk-lang-suggest__close { width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; color: var(--sk-navy); font-size: 1.25rem; cursor: pointer; }

/* 全画面メニュー（<dialog>） */
.sk-menu {
	margin: 0 0 0 auto; width: min(420px, 100vw); max-width: 100vw; height: 100dvh; max-height: 100dvh; padding: 0; border: 0;
	background: var(--sk-paper); color: var(--sk-ink);
}
.sk-menu[open] { animation: sk-slide-in .55s var(--sk-float); }
.sk-menu::backdrop, .sk-sheet::backdrop { background: rgba(20,36,59,.45); }
.sk-menu__inner { display: flex; flex-direction: column; gap: 24px; padding: 80px 24px 32px; min-height: 100%; box-sizing: border-box; position: relative; }
.sk-menu__list { list-style: none; margin: 0; padding: 0; }
.sk-menu__list a {
	display: flex; align-items: center; min-height: 56px; border-bottom: 1px solid var(--sk-line); color: var(--sk-ink);
	text-decoration: none; font-size: 1.125rem; font-weight: 700;
}
.sk-menu__list a[aria-current="page"] { color: var(--sk-maple); }
.sk-menu__cta { width: 100%; }
.sk-lang-list { display: flex; flex-wrap: wrap; gap: 4px 8px; list-style: none; margin: 0; padding: 0; }
@keyframes sk-slide-in { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }

/* ==========================================================================
   4. ダイアログ（連絡ドックのシート・微信QR）§6-10
   ========================================================================== */
.sk-sheet {
	width: min(400px, calc(100vw - 32px)); max-height: calc(100dvh - 48px); padding: 0; border: 0; border-radius: var(--sk-r-lg);
	background: var(--sk-surface); color: var(--sk-ink); box-shadow: var(--sk-shadow-2);
}
.sk-sheet[open] { animation: sk-rise .55s var(--sk-float); }
.sk-sheet__inner { position: relative; padding: 32px 24px 24px; display: flex; flex-direction: column; gap: 12px; }
.sk-sheet__close {
	position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; border: 0; border-radius: 50%;
	background: var(--sk-washi); color: var(--sk-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.sk-menu .sk-sheet__close { top: 16px; right: 16px; }
.sk-sheet__bear { color: var(--sk-navy); }
.sk-sheet__title { margin: 0; font-size: var(--wp--preset--font-size--xl); font-weight: 700; line-height: 1.4; }
.sk-sheet__lead { margin: 0 0 8px; color: var(--sk-muted); font-size: var(--wp--preset--font-size--sm); line-height: 1.8; }
.sk-sheet__note { margin: 4px 0 0; color: var(--sk-muted); font-size: var(--wp--preset--font-size--xs); }
.sk-sheet--wechat .sk-sheet__inner { align-items: center; text-align: center; }
.sk-wechat__qr { width: 220px; height: 220px; border-radius: var(--sk-r-md); border: 1px solid var(--sk-line); object-fit: contain; }
/* LINE ボタン：白抜き文字（オーナー指定。LINE の公式ボタンと同じ配色） */
.sk-btn--line { background: #06C755; color: #fff; margin-top: 4px; }
.sk-btn--line:hover { background: #05a647; color: #fff; }
.sk-wechat__id { display: flex; align-items: center; gap: 12px; margin: 0; }
.sk-copy {
	display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border-radius: 999px;
	border: 1px solid var(--sk-line); background: var(--sk-paper); font: inherit; font-size: var(--wp--preset--font-size--sm); cursor: pointer;
}
@keyframes sk-rise { from { transform: translateY(16px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 599px) {
	.sk-sheet:not(.sk-sheet--wechat) { margin: auto 0 0; width: 100vw; max-width: 100vw; border-radius: var(--sk-r-lg) var(--sk-r-lg) 0 0; }
	.sk-sheet .sk-sheet__inner { padding-bottom: calc(24px + env(safe-area-inset-bottom)); }
}

/* 連絡手段ボタン §6-11 */
.sk-channels { display: grid; gap: 8px; }
.sk-channel {
	display: flex; align-items: center; gap: 12px; width: 100%; min-height: 60px; padding: 8px 14px; box-sizing: border-box;
	border: 1px solid var(--sk-line); border-radius: var(--sk-r-md); background: var(--sk-surface); color: var(--sk-ink);
	font: inherit; text-align: start; text-decoration: none; cursor: pointer;
	transition: border-color var(--sk-fast), box-shadow var(--sk-fast), transform var(--sk-fast);
}
.sk-channel:hover { border-color: var(--sk-ink); color: var(--sk-ink); box-shadow: var(--sk-shadow-1); }
.sk-channel__icon {
	width: 36px; height: 36px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center;
	background: var(--brand, var(--sk-navy)); color: #fff;
}
.sk-channel__text { display: flex; flex-direction: column; min-width: 0; flex: 1; line-height: 1.35; }
.sk-channel__text strong { font-size: .9375rem; }
.sk-channel__text small { font-size: var(--wp--preset--font-size--xs); color: var(--sk-muted); overflow-wrap: anywhere; }
.sk-channel > .sk-icon:last-of-type { color: var(--sk-muted); transition: transform var(--sk-fast) var(--sk-ease); }

/* 連絡ドック本体：PC は右下の丸ボタン、スマホは下部固定バー */
.sk-dock { position: fixed; z-index: 40; right: 24px; bottom: 24px; transition: transform var(--sk-dur) var(--sk-ease), opacity var(--sk-dur); }
.sk-dock__fab {
	display: inline-flex; align-items: center; gap: 10px; min-height: 64px; padding: 0 22px 0 10px; border: 0; border-radius: 999px;
	background: var(--sk-navy); color: #fff; font: inherit; font-weight: 700; box-shadow: var(--sk-shadow-2); cursor: pointer;
	transition: background-color var(--sk-fast), transform var(--sk-fast) var(--sk-ease);
}
.sk-dock__fab .sk-icon { width: 36px; height: 36px; padding: 3px; border-radius: 50%; background: #fff; color: var(--sk-navy); }
.sk-dock__fab:hover { background: var(--sk-navy-deep); transform: translateY(-2px); }
.sk-dock__bar { display: none; }
.sk-dock.is-hidden { opacity: 0; pointer-events: none; transform: translateY(16px); }
@media (max-width: 767px) {
	.sk-dock { left: 0; right: 0; bottom: 0; }
	.sk-dock__fab { display: none; }
	.sk-dock__bar {
		display: grid; grid-template-columns: 1fr auto; gap: 8px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
		background: color-mix(in srgb, var(--sk-surface) 96%, transparent); border-top: 1px solid var(--sk-line); box-shadow: 0 -6px 20px rgba(27,35,51,.08);
		-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	}
	.sk-dock__bar .sk-channel { min-height: 52px; padding-block: 4px; }
	.sk-dock__bar .sk-channel__text small { display: none; }
	.sk-dock__more {
		display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 72px; min-height: 52px;
		border: 0; border-radius: var(--sk-r-md); background: var(--sk-navy); color: #fff; font: inherit; font-size: .6875rem; font-weight: 700; cursor: pointer;
	}
	body { padding-bottom: calc(76px + env(safe-area-inset-bottom)); }
}

/* ==========================================================================
   5. セクション共通 §4・§7
   ========================================================================== */
.sk-section { padding-block: var(--sk-section); position: relative; }
.sk-section--washi { background: var(--sk-washi); }
.sk-section--paper { background: var(--sk-paper); }
.sk-section--navy { background: var(--sk-navy); color: #fff; }
.sk-section--navy :is(h2, h3, p, li) { color: #fff; }
.sk-section--navy .sk-lead, .sk-section--navy .sk-muted { color: var(--sk-on-navy-muted); }
.sk-section--navy .sk-eyebrow { color: var(--sk-on-navy-muted); }
.sk-heading { margin-bottom: var(--wp--preset--spacing--70); }
.sk-heading > * { margin-block: 0; }
.sk-heading > * + * { margin-block-start: .75rem; }
.sk-heading--center { text-align: center; }
.sk-heading--center .sk-lead { margin-inline: auto; max-width: 40em; }
.sk-heading--split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "eyebrow lead" "title lead"; column-gap: var(--wp--preset--spacing--70); align-items: end; }
.sk-heading--split > .sk-eyebrow { grid-area: eyebrow; }
.sk-heading--split > h2 { grid-area: title; }
.sk-heading--split > .sk-lead { grid-area: lead; margin: 0 !important; }
@media (max-width: 839px) { .sk-heading--split { grid-template-columns: 1fr; grid-template-areas: "eyebrow" "title" "lead"; } .sk-heading--split > .sk-lead { margin-top: .75rem !important; } }
.sk-muted { color: var(--sk-muted); }

/* 障子の格子 */
.is-style-shoji, .sk-shoji {
	background-image:
		linear-gradient(var(--sk-line) 1px, transparent 1px),
		linear-gradient(90deg, var(--sk-line) 1px, transparent 1px);
	background-size: 120px 160px;
	background-position: center top;
}

/* カード §6-6 */
.sk-card, .is-style-card {
	background: var(--sk-surface); border: 1px solid var(--sk-line); border-radius: var(--sk-r-lg); padding: var(--wp--preset--spacing--50);
	transition: box-shadow var(--sk-dur) var(--sk-ease), transform var(--sk-dur) var(--sk-ease);
}
.sk-card > :first-child { margin-top: 0; }
.sk-card > :last-child { margin-bottom: 0; }
.sk-card:has(a:hover) { box-shadow: var(--sk-shadow-1); transform: translateY(-2px); }
.sk-card__num {
	font-family: var(--sk-font-display); font-weight: 300; font-size: 3rem; line-height: 1; color: var(--sk-wood); margin: 0 0 1rem;
}
.sk-card h3 { margin: 0 0 .5rem; }
.sk-card p { color: var(--sk-muted); }
.sk-grid { display: grid; gap: var(--wp--preset--spacing--50); grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.sk-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.sk-grid > * { margin: 0 !important; }

/* コース §6-6（料金欄は持たない） */
.sk-course { display: flex; flex-direction: column; gap: 14px; position: relative; overflow: hidden; }
.sk-course > * { margin: 0 !important; }
.sk-course .sk-card__num { position: absolute; top: 20px; right: 24px; font-size: 4.5rem; color: var(--sk-wood-soft); margin: 0; }
.sk-course h3 { font-size: var(--wp--preset--font-size--xl); }
.sk-course ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.sk-course li { position: relative; padding-left: 28px; line-height: 1.7; }
.sk-course li::before {
	content: "\f00c"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: 10px; line-height: 18px; text-align: center;
	position: absolute; left: 0; top: .35em; width: 18px; height: 18px; border-radius: 50%; background: var(--sk-sky); color: var(--sk-navy);
}
.sk-course li small { display: block; color: var(--sk-muted); font-size: var(--wp--preset--font-size--sm); }
.sk-course .wp-block-buttons { margin-top: auto; }
.sk-tag {
	width: fit-content; margin: 0;
	display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; background: var(--sk-sky); color: var(--sk-navy);
	font-size: var(--wp--preset--font-size--xs); font-weight: 700; letter-spacing: .02em;
}

/* 数字 */
.sk-section:has(> .sk-stats) { padding-block: 0 var(--wp--preset--spacing--70); }
.sk-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 0; border-block: 1px solid var(--sk-line); }
.sk-stat { padding: 28px 24px; margin: 0 !important; }
.sk-stat + .sk-stat { border-inline-start: 1px solid var(--sk-line); }
@media (max-width: 719px) { .sk-stat + .sk-stat { border-inline-start: 0; border-block-start: 1px solid var(--sk-line); } }
.sk-stat__value { font-family: var(--sk-font-display); font-size: clamp(2rem, 1.5rem + 2vw, 3rem); font-weight: 600; line-height: 1.1; color: var(--sk-navy); margin: 0; }
.sk-stat__value small { font-size: .45em; font-weight: 600; margin-inline-start: .2em; }
.sk-stat__label { margin: .5rem 0 0; color: var(--sk-muted); font-size: var(--wp--preset--font-size--sm); line-height: 1.6; }

/* 画像＋文章の2カラム */
.sk-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr)); gap: var(--wp--preset--spacing--70); align-items: center; }
.sk-split > * { margin: 0 !important; }
.sk-split--reverse > :first-child { order: 2; }
@media (max-width: 839px) { .sk-split--reverse > :first-child { order: 0; } }
.sk-split .wp-block-image img, .sk-photo img { border-radius: var(--sk-r-xl); width: 100%; object-fit: cover; }
.is-style-arch img { border-radius: 999px 999px var(--sk-r-lg) var(--sk-r-lg) !important; }

/* ==========================================================================
   6. ヒーロー（トップ）§7-1
   ========================================================================== */
.sk-hero { position: relative; padding-top: calc(var(--sk-header-h) + var(--wp--preset--spacing--50)); margin-top: calc(-1 * var(--sk-header-h)); padding-bottom: var(--wp--preset--spacing--70); overflow: hidden; }
.sk-hero::before {
	content: ""; position: absolute; inset: 0 0 auto 0; height: 78%; z-index: -1; opacity: .7;
	background-image: linear-gradient(var(--sk-line) 1px, transparent 1px), linear-gradient(90deg, var(--sk-line) 1px, transparent 1px);
	background-size: 120px 160px; -webkit-mask-image: linear-gradient(#000 40%, transparent); mask-image: linear-gradient(#000 40%, transparent);
}
.sk-hero__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: var(--wp--preset--spacing--70); align-items: center; }
@media (max-width: 899px) { .sk-hero__grid { grid-template-columns: 1fr; } }
.sk-hero__grid > * { margin: 0 !important; }
.sk-hero__title {
	font-size: clamp(2.25rem, 1.2rem + 3.6vw, 4.25rem) !important; line-height: 1.12 !important; letter-spacing: .01em; margin: 0 0 1.25rem !important;
}
:lang(en) .sk-hero__title { font-size: clamp(2.25rem, 1.2rem + 4vw, 4.5rem) !important; }
.sk-hero__title em { font-style: normal; color: var(--sk-maple); }
.sk-hero__lead { font-size: var(--wp--preset--font-size--lg); color: var(--sk-muted); max-width: 32em; margin: 0 0 2rem !important; }
.sk-hero__tags { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 1.75rem 0 0 !important; }
.sk-hero__tags li { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 999px; background: var(--sk-surface); border: 1px solid var(--sk-line); font-size: var(--wp--preset--font-size--sm); font-weight: 600; }
.sk-hero__tags li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--sk-navy); }
.sk-hero__media { position: relative; aspect-ratio: 5 / 5.4; }
.sk-hero__media figure { margin: 0; position: absolute; }
.sk-hero__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sk-hero__main { inset: 0 12% 6% 0; border-radius: 999px 999px var(--sk-r-xl) var(--sk-r-xl); overflow: hidden; box-shadow: var(--sk-shadow-2); }
.sk-hero__sub { right: 0; bottom: 0; width: 42%; aspect-ratio: 3 / 4; border-radius: var(--sk-r-lg); overflow: hidden; border: 6px solid var(--sk-paper); box-shadow: var(--sk-shadow-2); }
.sk-hero__badge {
	position: absolute; left: -12px; bottom: 14%; z-index: 2; display: flex; align-items: center; gap: 10px; padding: 10px 18px 10px 10px;
	background: var(--sk-surface); border-radius: 999px; box-shadow: var(--sk-shadow-2); font-size: var(--wp--preset--font-size--sm); font-weight: 700; line-height: 1.35;
}
.sk-hero__badge img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.sk-hero__badge small { display: block; font-weight: 400; color: var(--sk-muted); font-size: var(--wp--preset--font-size--xs); }
@media (max-width: 899px) {
	.sk-hero__media { max-width: 520px; width: 100%; margin-inline: auto !important; }
	.sk-hero__badge { left: 0; }
}

/* ==========================================================================
   7. スケジュール（年間タイムライン）§6-7
   ========================================================================== */
.sk-timeline { --months: 12; background: var(--sk-surface); border: 1px solid var(--sk-line); border-radius: var(--sk-r-lg); padding: 24px; overflow: hidden; }
.sk-timeline__months, .sk-timeline__row { display: grid; grid-template-columns: minmax(180px, 1.1fr) repeat(var(--months), minmax(0, 1fr)); align-items: center; }
.sk-timeline__months { font-family: var(--sk-font-display); font-size: var(--wp--preset--font-size--xs); color: var(--sk-muted); padding-bottom: 8px; border-bottom: 1px solid var(--sk-line); }
.sk-timeline__months span { text-align: center; }
.sk-timeline__row { min-height: 56px; border-bottom: 1px dashed var(--sk-line); }
.sk-timeline__row:last-child { border-bottom: 0; }
.sk-timeline__name { grid-column: 1; grid-row: 1; font-weight: 700; font-size: var(--wp--preset--font-size--sm); padding-right: 12px; line-height: 1.5; }
.sk-timeline__name small { display: block; font-weight: 400; color: var(--sk-muted); }
.sk-timeline__bar {
	height: 28px; border-radius: 999px; background: var(--sk-navy); color: #fff; font-size: var(--wp--preset--font-size--xs); font-weight: 700;
	display: flex; align-items: center; padding: 0 12px; white-space: nowrap; overflow: hidden; grid-row: 1;
}
.sk-timeline__bar--wood { background: var(--sk-wood); }
.sk-timeline__bar--sky { background: var(--sk-sky); color: var(--sk-navy); }
.sk-timeline__bar--cont { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.sk-timeline__bar--tail { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.sk-anytime { display: flex; flex-wrap: wrap; gap: 10px; margin-top: var(--wp--preset--spacing--50); padding: 0; }
.sk-anytime li { list-style: none; }
@media (max-width: 899px) {
	.sk-timeline { padding: 8px 16px; }
	.sk-timeline__months { display: none; }
	.sk-timeline__row { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0; }
	.sk-timeline__bar { grid-column: auto !important; width: auto; }
	.sk-timeline__bar--tail { display: none; }
	.sk-timeline__bar--cont { border-radius: 999px; }
}

/* ==========================================================================
   8. ギャラリー・FAQ・CTA・お問い合わせ
   ========================================================================== */
.sk-gallery.wp-block-gallery { gap: 12px !important; }
.sk-gallery.wp-block-gallery .wp-block-image img { border-radius: var(--sk-r-md); aspect-ratio: 1; object-fit: cover; }
.sk-gallery.wp-block-gallery .wp-block-image figcaption {
	background: none; color: #fff; font-size: var(--wp--preset--font-size--xs); font-weight: 700; padding: 24px 12px 10px;
	background: linear-gradient(transparent, rgba(20,36,59,.75)); border-radius: 0 0 var(--sk-r-md) var(--sk-r-md);
}
.sk-gallery--mosaic { display: grid !important; grid-template-columns: repeat(4, 1fr); }
.sk-gallery--mosaic > .wp-block-image:first-child { grid-column: span 2; grid-row: span 2; }
.sk-gallery--mosaic > .wp-block-image { width: auto !important; margin: 0 !important; }
.sk-gallery--mosaic > .wp-block-image img { height: 100% !important; }
@media (max-width: 719px) { .sk-gallery--mosaic { grid-template-columns: repeat(2, 1fr); } }

.sk-faq { border-top: 1px solid var(--sk-line); }
.sk-faq .wp-block-details { border-bottom: 1px solid var(--sk-line); padding: 0; margin: 0; overflow: hidden; }
.sk-faq .wp-block-details summary {
	list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 56px; padding: 18px 4px;
	font-weight: 700; cursor: pointer; transition: color var(--sk-hover) var(--sk-float);
}
.sk-faq .wp-block-details summary::-webkit-details-marker { display: none; }
.sk-faq .wp-block-details summary::before { content: "Q"; font-family: var(--sk-font-display); color: var(--sk-maple); font-weight: 600; flex: none; }
.sk-faq .wp-block-details summary::after {
	content: "\2b"; font-family: "Font Awesome 6 Free"; font-weight: 900; flex: none; margin-inline-start: auto; font-size: 14px; line-height: 1;
	transition: transform .5s var(--sk-float);
}
.sk-faq .wp-block-details[open] summary::after { transform: rotate(135deg); }
.sk-faq .wp-block-details > :not(summary) { margin: 0 0 20px; padding-inline: 4px 32px; color: var(--sk-muted); }

.sk-cta { overflow: hidden; }
.sk-cta__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: var(--wp--preset--spacing--60); align-items: center; }
.sk-cta__grid > * { margin: 0 !important; }
.sk-cta h2 { color: #fff; }
.sk-cta .sk-channels { background: rgba(255,255,255,.06); padding: 16px; border-radius: var(--sk-r-lg); }
.sk-cta .sk-channel { border-color: transparent; }

.sk-contact-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--wp--preset--spacing--70); align-items: start; }
.sk-contact-grid > * { margin: 0 !important; }
@media (max-width: 899px) { .sk-contact-grid { grid-template-columns: 1fr; } }
.sk-aside { position: sticky; top: calc(var(--sk-header-h) + 24px); display: grid; gap: 16px; }
.sk-aside > * { margin: 0 !important; }

/* フォーム §6-13 */
.sk-form { display: grid; gap: 24px; background: var(--sk-surface); border: 1px solid var(--sk-line); border-radius: var(--sk-r-lg); padding: clamp(20px, 4vw, 40px); }
.sk-form__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 24px; align-items: start; }
.sk-form__field { display: grid; gap: 8px; align-content: start; border: 0; margin: 0; padding: 0; min-width: 0; }
.sk-form__field > label, .sk-form__field > legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-weight: 700; font-size: .9375rem; line-height: 1.5; padding: 0; margin-bottom: 0; min-height: 1.5em; }
.sk-form__field legend { margin-bottom: 8px; }
.sk-form input[type="text"], .sk-form input[type="email"], .sk-form select, .sk-form textarea {
	width: 100%; box-sizing: border-box; height: 52px; padding: 12px 14px; border: 1.5px solid var(--sk-field-border); border-radius: var(--sk-r-sm);
	background: var(--sk-surface); color: var(--sk-ink); font: inherit; font-size: 16px; line-height: 1.6;
	transition: border-color var(--sk-fast);
}
.sk-form textarea { height: auto; min-height: 168px; resize: vertical; }
.sk-form :is(input, select, textarea):focus { border-color: var(--sk-navy); }
.sk-form [aria-invalid="true"] { border-color: var(--sk-error) !important; }
.sk-form__hint { margin: 0; color: var(--sk-muted); font-size: var(--wp--preset--font-size--xs); line-height: 1.6; }
.sk-form__error { margin: 0; color: var(--sk-error); font-size: var(--wp--preset--font-size--sm); font-weight: 600; }
.sk-form__errors { border: 1.5px solid var(--sk-error); background: #FDF1EF; border-radius: var(--sk-r-md); padding: 16px 20px; color: var(--sk-error); }
.sk-form__errors ul { margin: 8px 0 0; padding-left: 1.2em; }
.sk-form__errors a { color: var(--sk-error); }
.sk-badge { display: inline-block; padding: 1px 8px; border-radius: 4px; font-size: .6875rem; font-weight: 700; border: 1px solid var(--sk-field-border); color: var(--sk-muted); line-height: 1.5; vertical-align: middle; flex: none; }
.sk-badge--req { background: var(--sk-maple); border-color: var(--sk-maple); color: #fff; }
.sk-form__chips { display: flex; flex-wrap: wrap; gap: 10px; }
.sk-chip { position: relative; }
.sk-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.sk-chip span {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1.5px solid var(--sk-field-border);
	font-size: var(--wp--preset--font-size--sm); font-weight: 600; background: var(--sk-surface); transition: all var(--sk-fast);
}
.sk-chip input:checked + span { background: var(--sk-navy); border-color: var(--sk-navy); color: #fff; }
.sk-chip input:focus-visible + span { outline: 3px solid var(--sk-maple); outline-offset: 2px; }
.sk-form__check { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-radius: var(--sk-r-md); background: var(--sk-paper); cursor: pointer; }
.sk-form__check input { width: 22px; height: 22px; accent-color: var(--sk-navy); flex: none; }
.sk-form__submit { width: 100%; min-height: 56px; font-size: 1.0625rem; }
.sk-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.sk-form__done {
	display: flex; gap: 16px; align-items: flex-start; padding: 28px; border-radius: var(--sk-r-lg);
	background: #EAF4EE; border: 1.5px solid var(--sk-success); color: var(--sk-ink);
}
.sk-form__done .sk-icon { color: var(--sk-success); }
.sk-form__done p { margin: 4px 0 0; }

/* 地図・住所カード §6-16 */
.sk-place { display: grid; gap: 4px; }
.sk-place p { margin: 0; }
.sk-maps { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px !important; }
.sk-maps a, .sk-footer__maps a {
	display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--sk-line);
	font-size: var(--wp--preset--font-size--sm); font-weight: 600; text-decoration: none; color: var(--sk-ink); background: var(--sk-surface);
}
.sk-maps a:hover { border-color: var(--sk-ink); }

/* 表（開講スケジュール） */
.sk-table { margin: var(--wp--preset--spacing--60) 0 1rem; overflow-x: auto; }
.sk-table table { border-collapse: collapse; width: 100%; background: var(--sk-surface); border-radius: var(--sk-r-md); overflow: hidden; font-size: .9375rem; }
.sk-table :is(th, td) { border: 0 !important; border-bottom: 1px solid var(--sk-line) !important; padding: 14px 16px; text-align: start; vertical-align: top; }
.sk-table thead { border: 0 !important; }
.sk-table thead th { background: var(--sk-washi); font-size: var(--wp--preset--font-size--sm); color: var(--sk-muted); }
.sk-table td:first-child, .sk-table td:last-child { white-space: nowrap; }
.sk-table td:last-child { color: var(--sk-muted); font-size: var(--wp--preset--font-size--sm); }
@media (max-width: 599px) { .sk-table :is(th, td) { padding: 12px 10px; font-size: var(--wp--preset--font-size--sm); } }

/* 会社概要などの定義リスト */
.sk-dl { display: grid; grid-template-columns: minmax(7em, max-content) 1fr; margin: 0; border-top: 1px solid var(--sk-line); }
.sk-dl dt, .sk-dl dd { margin: 0; padding: 18px 12px; border-bottom: 1px solid var(--sk-line); }
.sk-dl dt { font-weight: 700; color: var(--sk-muted); font-size: var(--wp--preset--font-size--sm); padding-left: 0; }
@media (max-width: 599px) { .sk-dl { grid-template-columns: 1fr; } .sk-dl dt { border-bottom: 0; padding-bottom: 0; } .sk-dl dd { padding-left: 0; } }

/* ==========================================================================
   9. 下層ページの見出し帯・パンくず §6-14
   ========================================================================== */
.sk-pagehead { background: var(--sk-washi); position: relative; overflow: hidden; }
.sk-pagehead::after {
	content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .55;
	background-image: linear-gradient(rgba(138,100,64,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(138,100,64,.12) 1px, transparent 1px);
	background-size: 120px 160px; -webkit-mask-image: linear-gradient(90deg, #000, transparent 70%); mask-image: linear-gradient(90deg, #000, transparent 70%);
}
.sk-pagehead__inner {
	position: relative; z-index: 1; max-width: var(--wp--style--global--wide-size); margin: 0 auto;
	padding: var(--wp--preset--spacing--70) var(--sk-gutter) var(--wp--preset--spacing--70);
	display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--wp--preset--spacing--60); align-items: center;
}
.sk-pagehead--image .sk-pagehead__inner { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
@media (max-width: 839px) { .sk-pagehead--image .sk-pagehead__inner { grid-template-columns: 1fr; } }
.sk-pagehead__title { font-size: var(--wp--preset--font-size--xxxl); margin: 0; line-height: 1.2; }
.sk-pagehead__lead { font-size: var(--wp--preset--font-size--lg); color: var(--sk-muted); margin: 1.25rem 0 0; max-width: 34em; }
.sk-pagehead__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 999px 999px var(--sk-r-lg) var(--sk-r-lg); display: block; }
@media (max-width: 839px) { .sk-pagehead__media img { aspect-ratio: 16 / 10; border-radius: var(--sk-r-lg); } }
.sk-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; margin: 0 0 20px; padding: 0; font-size: var(--wp--preset--font-size--sm); color: var(--sk-muted); }
.sk-breadcrumb li + li::before { content: "/"; margin-inline-end: 4px; color: var(--sk-line); }
.sk-breadcrumb a { color: var(--sk-muted); text-decoration: none; }
.sk-breadcrumb a:hover { color: var(--sk-ink); text-decoration: underline; }

.sk-legal h2 { font-size: var(--wp--preset--font-size--xl); margin-top: 2.5em; }

/* ==========================================================================
   10. フッター §6-15
   ========================================================================== */
.sk-footer { background: var(--sk-navy-deep); color: #E8EEF6; font-size: var(--wp--preset--font-size--sm); line-height: 1.8; }
.sk-footer a { color: #fff; }
.sk-footer__inner {
	max-width: var(--wp--style--global--wide-size); margin: 0 auto; padding: var(--wp--preset--spacing--80) var(--sk-gutter) var(--wp--preset--spacing--60);
	display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 48px 40px; align-items: start;
}
@media (max-width: 1023px) { .sk-footer__inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 599px) { .sk-footer__inner { grid-template-columns: 1fr; column-gap: 32px; } }
.sk-footer__brand p { margin: 0 0 12px; color: var(--sk-on-navy-muted); }
.sk-footer__brand p + p { margin-top: 6px; }
.sk-footer__company { font-weight: 700; color: #fff !important; font-size: 1rem; }
.sk-footer__brand .sk-footer__company { margin-top: 8px; }
.sk-footer__logo img { width: 80px; height: auto; margin-bottom: 12px; }
.sk-footer__heading { margin: 0 0 14px; font-weight: 700; color: #fff; font-size: .9375rem; line-height: 1.5; }
.sk-footer address { font-style: normal; color: var(--sk-on-navy-muted); line-height: 1.9; }
.sk-footer address a { display: inline-block; margin-top: 10px; }
.sk-footer__list { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 2px; }
.sk-footer__list a { display: inline-flex; min-height: 36px; align-items: center; text-decoration: none; color: #E8EEF6; }
.sk-footer__list a:hover { color: #fff; text-decoration: underline; }
.sk-footer__maps { display: flex; flex-wrap: wrap; gap: 10px; margin: 20px 0 0; }
.sk-footer__maps a { background: transparent; color: #fff; border-color: rgba(255,255,255,.25); min-height: 40px; padding: 0 16px; font-size: var(--wp--preset--font-size--xs); }
.sk-footer__maps a:hover { border-color: #fff; }
.sk-footer__bottom {
	max-width: var(--wp--style--global--wide-size); margin: 0 auto; padding: 20px var(--sk-gutter) 32px; border-top: 1px solid rgba(255,255,255,.12);
	display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px;
}
.sk-footer .sk-lang-list a { color: #E8EEF6; min-height: 36px; padding: 0 10px; font-size: var(--wp--preset--font-size--sm); }
.sk-footer .sk-lang-list a[aria-current="true"] { color: #fff; box-shadow: inset 0 -2px 0 var(--sk-maple); border-radius: 0; }
.sk-footer__copy { margin: 0; color: var(--sk-on-navy-muted); font-size: var(--wp--preset--font-size--xs); font-family: var(--sk-font-display); }
.sk-social { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 16px 0 0; padding: 0; }
.sk-social__link {
	width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
	background: rgba(255,255,255,.08); color: #fff; border: 1px solid rgba(255,255,255,.18); cursor: pointer; transition: background-color var(--sk-fast);
}
.sk-social__link:hover { background: rgba(255,255,255,.2); color: #fff; }

/* ==========================================================================
   11. 404・スクロール演出
   ========================================================================== */
.sk-404 { text-align: center; display: grid; justify-items: center; gap: 8px; }
.sk-404__bear { color: var(--sk-navy); }
.sk-404 h1 { margin: 0; }


/* ==========================================================================
   12. 動き（ふわっと）と仕上げ（2026-10-09 修正指示。DESIGN.md §4-4）
   ========================================================================== */
:root {
	--sk-float: cubic-bezier(.16, 1, .3, 1);   /* 出だしが速く、最後にふわりと止まる */
	--sk-hover: .45s;
	--sk-gap-section: clamp(2.5rem, 2rem + 1.5vw, 3.5rem);  /* セクション内のまとまり同士の間隔 */
}

/* --- スクロールで浮き上がって現れる（対象は site.js が自動で付ける） --- */
.sk-motion .sk-reveal {
	opacity: 0; transform: translate3d(0, 32px, 0);
	transition: opacity 1s var(--sk-float), transform 1.1s var(--sk-float);
	transition-delay: var(--sk-delay, 0s);
}
.sk-motion .sk-reveal.is-in { opacity: 1; transform: none; }
.sk-motion .sk-reveal--img { transform: translate3d(0, 32px, 0) scale(.98); }
.sk-motion .sk-reveal--img.is-in { transform: none; }

/* --- マウスオーバー：ゆっくり浮く --- */
.sk-btn, .wp-block-button__link, .sk-channel, .sk-card, .sk-social__link, .sk-maps a, .sk-footer__maps a, .sk-chip span,
.sk-nav__list a, .sk-lang summary, .sk-dock__fab, .sk-copy, .sk-header__menu, .sk-sheet__close, .sk-lang__menu a, .sk-menu__list a,
.sk-footer__list a, .sk-breadcrumb a, .sk-gallery .wp-block-image img {
	transition:
		transform var(--sk-hover) var(--sk-float), box-shadow var(--sk-hover) var(--sk-float),
		background-color var(--sk-hover) var(--sk-float), border-color var(--sk-hover) var(--sk-float), color var(--sk-hover) var(--sk-float),
		opacity var(--sk-hover) var(--sk-float);
}
@media (hover: hover) {
	.sk-btn:hover, .wp-block-button__link:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(27,35,51,.16); }
	.is-style-ghost .wp-block-button__link:hover { transform: none; box-shadow: none; }
	.is-style-ghost .wp-block-button__link:hover::after { transform: translateX(6px); }
	.sk-channel:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(27,35,51,.12); }
	.sk-channel:hover > .sk-icon:last-of-type { transform: translateX(4px); }
	.sk-card:has(a:hover), .sk-course:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(27,35,51,.10); }
	.sk-social__link:hover, .sk-maps a:hover, .sk-footer__maps a:hover, .sk-copy:hover { transform: translateY(-3px); }
	.sk-chip:hover span { transform: translateY(-2px); border-color: var(--sk-navy); }
	.sk-nav__list a:hover, .sk-lang summary:hover { transform: translateY(-2px); }
	.sk-dock__fab:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(20,36,59,.30); }
	.sk-header__menu:hover, .sk-sheet__close:hover { transform: rotate(90deg); }
	.sk-gallery .wp-block-image { overflow: hidden; border-radius: var(--sk-r-md); }
	.sk-gallery .wp-block-image:hover img { transform: scale(1.05); }
}
.sk-btn:active, .wp-block-button__link:active { transform: translateY(0); transition-duration: .1s; }

/* --- 連絡ドックの白熊（絵文字） --- */
.sk-emoji { display: inline-flex; align-items: center; justify-content: center; line-height: 1; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
.sk-dock__fab .sk-emoji { width: 44px; height: 44px; border-radius: 50%; background: #fff; }
.sk-sheet__bear .sk-emoji { width: 56px; height: 56px; border-radius: 50%; background: var(--sk-washi); }

/* --- アコーディオン（FAQ）：開閉は site.js が高さをなめらかに動かす --- */
.sk-faq .wp-block-details summary:hover { color: var(--sk-navy); }

/* --- 言語切替：ふわっと開閉（site.js がクラスを付け外し） --- */
.sk-lang summary .fa-globe { transition: transform .6s var(--sk-float); }
.sk-lang[open] summary .fa-globe { transform: rotate(180deg); }

/* --- ダイアログ（メニュー・連絡シート）を閉じるときもふわっと。閉じる動きは開く動き（[open]）より優先させる --- */
.sk-sheet[open].is-closing { animation: sk-sink .35s var(--sk-float) forwards; }
.sk-menu[open].is-closing { animation: sk-slide-out .35s var(--sk-float) forwards; }
.sk-sheet::backdrop, .sk-menu::backdrop { transition: opacity .35s; }
.sk-sheet.is-closing::backdrop, .sk-menu.is-closing::backdrop { opacity: 0; }
@keyframes sk-sink { to { transform: translateY(24px); opacity: 0; } }
@keyframes sk-slide-out { to { transform: translateX(32px); opacity: 0; } }

/* --- お問い合わせフォームの整列 --- */
.sk-form__field > label + input, .sk-form__field > label + select, .sk-form__field > label + textarea { margin-top: 2px; }
.sk-form select {
	appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer;
	background-image: linear-gradient(45deg, transparent 50%, var(--sk-muted) 50%), linear-gradient(135deg, var(--sk-muted) 50%, transparent 50%);
	background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px; background-repeat: no-repeat;
}
.sk-form > .sk-form__hint:last-child { text-align: center; }
.sk-aside__title { font-size: var(--wp--preset--font-size--xl) !important; margin: 0 0 4px !important; }
.sk-aside h3 { font-size: var(--wp--preset--font-size--lg); margin-top: 16px !important; }

/* --- 余白：まとまり同士の間隔をそろえる --- */
.sk-section.is-layout-constrained > * + * { margin-block-start: var(--sk-gap-section); }
.sk-section.is-layout-constrained > .sk-heading + * { margin-block-start: 0; }
.sk-section .wp-block-group > .wp-block-buttons, .sk-split .wp-block-buttons { margin-top: 2rem; }
.sk-section > .wp-block-buttons.alignwide { margin-top: var(--wp--preset--spacing--60); }
.sk-split > .wp-block-group > * + * { margin-block-start: 1.1rem; }
.sk-split > .wp-block-group > .sk-eyebrow + h2, .sk-split > .wp-block-group > .sk-eyebrow + .wp-block-heading { margin-block-start: .5rem; }
.sk-heading .sk-lead { margin-block-start: 1rem; }
.sk-note { margin-top: var(--wp--preset--spacing--50) !important; }
.sk-cta__grid .wp-block-buttons { margin-top: 2rem; }
.sk-faq + .wp-block-buttons { margin-top: var(--wp--preset--spacing--50); }
.sk-legal > .wp-block-post-content > p + p { margin-top: 1.1em; }
.sk-dl + .sk-social, .sk-section .sk-social { margin-top: var(--wp--preset--spacing--60); }
.sk-section .sk-social .sk-social__link { background: var(--sk-navy); border-color: var(--sk-navy); }
.sk-card > * + * { margin-block-start: .75rem; }
@media (max-width: 599px) {
	.sk-hero__tags { margin-top: 1.5rem !important; }
	.sk-card { padding: 22px; }
}

/* --- 改行位置：単語や住所の途中で改行しない --- */
.sk-nb { display: inline-block; max-width: 100%; }
:lang(ja) :is(h1, h2, h3, h4, p, li, dd, dt, address, summary, figcaption, .sk-lead) { word-break: auto-phrase; }
:lang(ja), :lang(zh-Hans), :lang(zh-Hant) { line-break: strict; }
:is(h1, h2, h3) { text-wrap: balance; }
:is(.sk-lead, .sk-pagehead__lead, .sk-hero__lead, .sk-sheet__lead) { text-wrap: balance; }
:is(p, li, dd) { text-wrap: pretty; }
/* 本文の導入（下層ページ冒頭）：カードと同じ左端にそろえ、読みやすい行長に */
.sk-intro > * { max-width: 46em; }
.sk-intro > .sk-table, .sk-intro > .wp-block-table { max-width: none; }
.sk-intro > * + * { margin-block-start: 1.1em; }

@media (prefers-reduced-motion: reduce) {
	.sk-motion .sk-reveal { opacity: 1; transform: none; }
}

/* --- 全幅のまとまりどうしを隙間なくつなぐ（ブロック間の既定の余白 16px で地色が白い線のように見えるため） --- */
.sk-main > *, .sk-main > .wp-block-post-content > .alignfull:not(.sk-hero) { margin-block: 0 !important; }
.sk-main > .wp-block-post-content > .sk-hero { margin-top: calc(-1 * var(--sk-header-h)) !important; margin-bottom: 0 !important; }

/* --- フッター SNS などアイコンだけのリンクに下線を出さない --- */
.sk-social__link, .sk-social__link:hover, .sk-header__logo, .sk-footer__logo { text-decoration: none; }

/* --- フォーム：横並びの欄は「ラベル・入力欄・補足・エラー」の段を共有してそろえる（ラベルが2行になっても入力欄の位置がずれない） --- */
@supports (grid-template-rows: subgrid) {
	.sk-form__row { row-gap: 0; }
	.sk-form__row > .sk-form__field { grid-row: span 4; grid-template-rows: subgrid; row-gap: 8px; align-content: normal; }
	.sk-form__row > .sk-form__field > label { align-self: end; }
	.sk-form__row > .sk-form__field + .sk-form__field { margin-top: 0; }
	@media (max-width: 599px) {
		.sk-form__row > .sk-form__field + .sk-form__field { margin-top: 24px; }
	}
}
