/* =====================================================
   WORSO Theme — Foundation Stylesheet
   2026-05-09 main.css から分割: 変数 / リセット / ヘッダー / フッター / ボタン / グローバル
   ベースカラー: Lime Green (参考: Genspark サンプル準拠)
   ===================================================== */

:root {
	/* =====================================================
	 * Green scale — 明→暗 の 15 段階
	 * 用途別に役割を固定し、同じ用途には必ず同じトーンを使う。
	 * ===================================================== */
	--worso-green-50:   #f4faf3;   /* ほぼ白（hero subtle bg） */
	--worso-green-75:   #edf6ec;   /* off-white（media features gradient start） */
	--worso-green-80:   #f1f7f0;   /* off-white 2（column bg） */
	--worso-green-100:  #e5f2e3;   /* 淡 section bg（coverage/resources/social） */
	--worso-green-150:  #d8ecd4;   /* カード淡グラデ上 */
	--worso-green-200:  #c3e0bd;   /* カード淡グラデ下 */
	--worso-green-300:  #b8d9b0;   /* 標準 border（淡緑罫線） */
	--worso-green-350:  #a8d0a0;   /* カード border */
	--worso-green-400:  #2dac2e;   /* 明アクセント = ロゴ W エンブレム 暗部 */
	--worso-green-450:  #66ff33;   /* 電光ライム = ロゴ W エンブレム 明部 */
	--worso-green-500:  #127c09;   /* ★ PRIMARY BRAND = ロゴ文字色 */
	--worso-green-600:  #0e6307;   /* ホバー（PRIMARY の -20%） */
	--worso-green-650:  #0c5c07;   /* 濃緑テキスト（白背景上） */
	--worso-green-700:  #0a4e05;   /* 深緑（CTA グラデ上） */
	--worso-green-750:  #083e04;   /* 深緑（CTA グラデ下） */
	--worso-green-800:  #062e03;   /* 最深緑テキスト */
	--worso-green-850:  #042003;   /* ダーク緑（バッジ／数字深） */
	--worso-green-900:  #021802;   /* 最暗緑（最強調） */
	--worso-green-forest: #127c09; /* フォレスト緑（一部 fallback 用） */

	/* =====================================================
	 * Legacy aliases（既存 class 互換のため削除しない）
	 *
	 * 【配色ポリシー】
	 * - --worso-lime:   中間緑（ボタン bg 用）。黒文字と 5.68:1 で AA 合格。
	 * - --worso-lime-dk: ロゴ文字色そのもの。枠線・濃色テキスト専用（白背景で 6.4:1）。
	 * - --worso-lime-lt: 電光ライム。ホバー／強調の瞬間のみ使用。
	 *
	 * ※ 深緑（#127c09）を直接 bg に使うと黒文字が読めないため、
	 *   bg は必ず --worso-lime（#2dac2e）、text は --worso-lime-dk に分ける。
	 * ===================================================== */
	--worso-lime:        var(--worso-green-400);  /* #2dac2e — ボタン bg / 背景アクセント */
	--worso-lime-lt:     var(--worso-green-450);  /* #66ff33 — ホバー強調（電光） */
	--worso-lime-dk:     var(--worso-green-500);  /* #127c09 — 枠線・アイコン・濃色テキスト（ロゴ文字色） */
	--worso-lime-bg:     var(--worso-green-100);
	--worso-lime-bdr:    var(--worso-green-300);
	--worso-lime-muted:  #2dac2e; /* 明アクセント（旧 fallback 名の互換。logo W 暗部と同値） */
	--worso-accent:      var(--worso-lime-dk); /* ロゴ緑（#127c09）に統一。旧 #127c09 forest は廃止。 */
	--worso-g5:          var(--worso-green-650);
	--worso-g6:          var(--worso-green-800);

	/* === Ink / neutral === */
	--worso-ink:       #1e2130;   /* body text */
	--worso-ink-dk:    #10131e;   /* headings */
	--worso-ink-lt:    #9CA3AF;   /* 薄墨 caption / footer sub */
	--worso-ink-muted: #6B7280;   /* 中墨 body sub text */
	--worso-bg-soft:   #F8FAFC;   /* 淡背景 section bg */
	--worso-slate:     var(--worso-ink-muted); /* alias */
	--worso-mute:      #3c4250;   /* secondary button text */
	--worso-border:    #dde0e6;
	--worso-line:      #cdd3dc;   /* 罫線/入力枠 */
	--worso-line-dk:   #b8c0cc;   /* 強調罫線（入力ホバー等） */

	/* Back-compat for existing section styles */
	--worso-navy:      var(--worso-ink-dk);
	--worso-navy-dark: var(--worso-ink-dk);
	--worso-black:     var(--worso-ink);
	--worso-red:       #DC2626;
	--worso-red-soft:  #E26B5D;     /* 注意マーカー（warning checklist） */

	/* セマンティック フォーム エラー（CF7 / 必須マーカー） */
	--worso-error-bg:    #FFF0F0;
	--worso-error-bg-2:  #FFF8FA;
	--worso-error-bdr:   #EE5599;
	--worso-error-text:  #CC2244;
	--worso-error-deep:  #992222;

	/* H1: ヒーロー背景グラデーション（page-*.php / archive-*.php 共通） */
	--worso-hero-overlay: linear-gradient(135deg, rgba(16,19,30,0.82) 0%, rgba(16,19,30,0.68) 50%, rgba(10,78,5,0.78) 100%);

	/* H2: カード共通ホバーシャドウ（services / case-studies / news / media-features） */
	--worso-card-shadow-hover: 0 16px 32px rgba(45, 172, 46, 0.16);

	/* H3: タッチターゲット最小サイズ（WCAG 2.5.5 Level AAA / iOS HIG） */
	--worso-tap-min: 48px;

	/* セマンティック警告 / アンバー系（警告 notice 帯のみに使用。ブランドアクセントではない） */
	--worso-amber-bg:     #FFFBE8;  /* 警告 notice 帯背景 */
	--worso-amber-bdr:    #F5D96B;  /* 警告 notice 帯罫線 */

	/* セカンダリ アクセント（ペルソナカード等で使用） */
	--worso-blue:      #1A6EB5;
	--worso-blue-bg:   #E8F4FF;
	--worso-blue-bdr:  #B8D8F0;

	/* セマンティック badge カラー（archive 業種タクソノミー）
	 * ブランド緑とは別系統。視認性・伝達性を優先したパステル系。
	 */
	--worso-badge-export-bg:     #dbeafe;
	--worso-badge-export-text:   #1e40af;
	--worso-badge-import-bg:     #ccfbf1;
	--worso-badge-import-text:   #115e59;
	--worso-badge-training-bg:   #fef3c7;
	--worso-badge-training-text: #92400e;
	--worso-badge-reg-bg:        #ede9fe;
	--worso-badge-reg-text:      #5b21b6;
	--worso-badge-seminar-bg:    #fee2e2;
	--worso-badge-seminar-text:  #991b1b;

	/* ダーク lime（バッジ／ナンバリング用）— green-scale へのエイリアス */
	--worso-lime-deep-1: var(--worso-green-900);
	--worso-lime-deep-2: var(--worso-green-850);

	/* Dark gradient endpoints（next-step / quote / philosophy で再利用） */
	--worso-ink-dk-teal: #1f2a2b;

	--worso-bg:        #F8FAFC;
	--worso-white:     #FFFFFF;

	/* RGBA helpers — 透過白／影／罫線（footer 等の dark 背景上で使用） */
	--worso-white-94:  rgba(255, 255, 255, 0.94);
	--worso-white-75:  rgba(255, 255, 255, 0.75);
	--worso-white-60:  rgba(255, 255, 255, 0.60);
	--worso-white-50:  rgba(255, 255, 255, 0.50);
	--worso-white-15:  rgba(255, 255, 255, 0.15);
	--worso-white-10:  rgba(255, 255, 255, 0.10);
	--worso-shadow-md: 0 18px 40px rgba(16, 19, 30, 0.12);
	--worso-shadow-sm: 0 1px 2px rgba(16, 19, 30, 0.04);

	--worso-container:    1280px;
	--worso-gutter:       24px;
	--worso-section-y:    96px;   /* 標準セクション縦余白 */
	--worso-section-y-sm: 72px;   /* 控えめセクション（軽量・帯状セクション用） */
	--worso-radius-sm:    8px;
	--worso-radius:      16px;
	--worso-radius-lg:   20px;
	--worso-radius-pill: 9999px;

	/* === Spacing scale ===
	 * 散在する padding / margin / gap の規則的な値を 7 段階に集約。
	 * 8の倍数を基本に + 4px / 12px / 20px の奇数値を採用。
	 * 直書き値の段階的置換に使用。
	 */
	--worso-sp-1:  4px;   /* hairline gap, icon padding */
	--worso-sp-2:  8px;   /* tight gap, badge padding */
	--worso-sp-3:  12px;  /* small gap, form row */
	--worso-sp-4:  16px;  /* base gap, card inner */
	--worso-sp-5:  20px;  /* medium gap */
	--worso-sp-6:  24px;  /* large gap, container gutter */
	--worso-sp-7:  32px;  /* card padding, section inner */
	--worso-sp-8:  40px;  /* large card padding */
	--worso-sp-9:  48px;  /* between blocks */
	--worso-sp-10: 64px;  /* large block separator */
	--worso-sp-11: 96px;  /* section vertical (alias of --worso-section-y) */

	/* === Type scale ===
	 * 30+ 種類に散在していたフォントサイズを 11 段階に集約。
	 * 既存の 8/9/10 → 2xs、12.5 → xs、13.5/14.5 → sm/base、17 → lg、19 → xl、22 → 2xl、26 → 3xl 等にマッピング。
	 */
	--worso-fs-2xs:   11px;  /* tiny meta / footer fine print */
	--worso-fs-xs:    12px;  /* meta, badge, caption */
	--worso-fs-sm:    13px;  /* small body, eyebrow */
	--worso-fs-base:  14px;  /* body */
	--worso-fs-md:    15px;  /* body large, list */
	--worso-fs-lg:    16px;  /* button, lead */
	--worso-fs-xl:    18px;  /* sub heading */
	--worso-fs-2xl:   20px;  /* card title */
	--worso-fs-3xl:   24px;  /* h3 */
	--worso-fs-4xl:   28px;  /* h2 small */
	--worso-fs-5xl:   32px;  /* h2 / hero sub */
	--worso-fs-6xl:   40px;  /* hero */
	--worso-fs-display: 56px;
	--worso-fs-display-lg: 72px;

	/* === Line height === */
	--worso-lh-tight: 1.3;   /* headings */
	--worso-lh-snug:  1.5;   /* sub heading / button */
	--worso-lh-base:  1.7;   /* body */
	--worso-lh-loose: 1.9;   /* lead text */
}

/* =====================================================
   Japanese-friendly text wrapping (全ページ共通)
   - keep-all: 単語/フレーズの不自然な分割を抑止
   - overflow-wrap: anywhere で長すぎる語のはみ出しを防止
   - line-break: strict で日本語の禁則処理を厳格化
   ===================================================== */
:where(body, .worso-section, .worso-page__content) {
	word-break: normal;
	overflow-wrap: anywhere;
	line-break: strict;
}
:where(h1, h2, h3, h4, h5, h6,
	.worso-section__title, .worso-section__eyebrow,
	.worso-page__hero-title, .worso-page__sec-title,
	.worso-cases__card-title, .worso-faq__q-text,
	.worso-media__card-title, .worso-page__leader-name,
	.worso-btn) {
	word-break: keep-all;
	overflow-wrap: anywhere;
	line-break: strict;
}

/* Reset light */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* ===== Global focus ring (a11y) ===== */
:where(a, button, input, select, textarea, [role="button"], [role="menuitem"], [tabindex]):focus {
	outline: none;
}
:where(a, button, input, select, textarea, [role="button"], [role="menuitem"], [tabindex]):focus-visible {
	outline: 2px solid var(--worso-lime-dk);
	outline-offset: 2px;
	border-radius: 4px;
}
.worso-btn:focus-visible {
	outline-offset: 3px;
}
/* Focus ring on dark backgrounds (hero, drawer etc.) */
.worso-page__hero :focus-visible,
.worso-hero :focus-visible,
.worso-footer :focus-visible {
	outline-color: var(--worso-lime);
	outline-offset: 3px;
}
body {
	margin: 0;
	font-family: 'Noto Sans JP', Inter, 'Hiragino Sans', -apple-system, system-ui, sans-serif;
	font-size: var(--worso-fs-lg);
	line-height: 1.8;
	color: var(--worso-ink);
	background: var(--worso-white);
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--worso-ink-dk); text-decoration: none; }
a:hover { opacity: .85; }

/* Container */
.worso-container {
	max-width: var(--worso-container);
	margin: 0 auto;
	padding: 0 var(--worso-gutter);
}
/* Wider gutter on desktop for modern airy feel (Stripe/Linear-style) */
@media (min-width: 1024px) {
	.worso-container { padding-left: 32px; padding-right: 32px; }
}
@media (max-width: 640px) {
	.worso-container { padding-left: 20px; padding-right: 20px; }
}

/* Section base */
.worso-section {
	padding: var(--worso-section-y) 0;
}
.worso-section__title {
	font-size: var(--worso-fs-display);
	font-weight: 800;
	margin: 0 0 32px;
	text-align: center;
	color: var(--worso-ink-dk);
	letter-spacing: -0.01em;
}

/* Section eyebrow — dash + label (参考サイト準拠) */
.worso-section__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: var(--worso-sp-3);
	font-size: var(--worso-fs-sm);
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--worso-lime-dk);
	margin-bottom: 16px;
}
.worso-section__eyebrow::before {
	content: "";
	display: inline-block;
	width: 28px;
	height: 2px;
	background: var(--worso-lime);
}

/* ===== x-cloak (hide Alpine elements until ready) ===== */
[x-cloak] { display: none !important; }

/* ===== Skip link (accessibility) ===== */
.worso-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--worso-ink-dk);
	color: var(--worso-white);
	padding: var(--worso-sp-3) var(--worso-sp-4);
	z-index: 200;
	border-radius: 0 0 8px 0;
}
.worso-skip-link:focus { left: 0; }

/* ===== Header ===== */
.worso-header {
	position: sticky; top: 0; z-index: 100;
	background-color: var(--worso-white-94);
	background-image:
		radial-gradient(circle at 12% 50%, rgba(18, 124, 9, 0.10) 0%, transparent 32%),
		radial-gradient(circle at 88% 50%, rgba(18, 124, 9, 0.08) 0%, transparent 30%),
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><circle cx='2' cy='2' r='1' fill='%2310131e' fill-opacity='0.05'/></svg>");
	background-repeat: no-repeat, no-repeat, repeat;
	background-size: auto, auto, 40px 40px;
	backdrop-filter: saturate(1.1) blur(8px);
	-webkit-backdrop-filter: saturate(1.1) blur(8px);
	border-bottom: 1px solid var(--worso-border);
}
.worso-header__inner {
	height: 76px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--worso-sp-6);
}
.worso-header__logo {
	display: inline-flex;
	align-items: center;
	flex-direction: column;
	text-decoration: none;
	line-height: 1.05;
	color: var(--worso-ink-dk);
}
/* Custom logo image: ヘッダー内ではみ出さないよう max-height で制限 */
.worso-header__logo .custom-logo-link {
	display: inline-flex;
	align-items: center;
	line-height: 0;
}
.worso-header__logo .custom-logo {
	display: block;
	height: auto;
	max-height: 32px;
	width: auto;
	max-width: 160px;
	object-fit: contain;
}
.worso-header__logo-mark { font-size: var(--worso-fs-xl); font-weight: 800; letter-spacing: .02em; }
.worso-header__logo-sub { font-size: 10px; color: var(--worso-ink-lt); letter-spacing: .02em; margin-top: 1px; }

.worso-header__nav { flex: 1; display: flex; justify-content: center; }
.worso-header__actions { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; flex-shrink: 0; }
.worso-header__actions > * { flex-shrink: 0; }
.worso-btn.worso-header__cta {
	padding: 8px 20px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.75;
	gap: 6px;
	border-width: 1px;
}
.worso-header__cta-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.worso-btn.worso-header__cta--dl {
	padding: 8px 18px;
	font-weight: 600;
	background: var(--worso-white);
	color: #3C4250;
	border-color: var(--worso-border);
}
.worso-btn.worso-header__cta--dl:hover {
	border-color: var(--worso-lime-dk);
	color: var(--worso-lime-dk);
}

/* ===== Primary Menu (desktop, hover dropdowns) ===== */
.worso-menu {
	list-style: none;
	display: flex;
	gap: var(--worso-sp-1);
	margin: 0;
	padding: 0;
	align-items: center;
}
.worso-menu > li { position: relative; }
.worso-menu > li > a {
	display: inline-flex;
	align-items: center;
	gap: var(--worso-sp-1);
	padding: 10px 14px;
	font-size: var(--worso-fs-base);
	font-weight: 600;
	color: var(--worso-ink-dk);
	text-decoration: none;
	border-radius: 8px;
	white-space: nowrap;
	transition: color .15s ease, background .15s ease;
}
.worso-menu > li > a:hover,
.worso-menu > li.current-menu-item > a,
.worso-menu > li.current-menu-parent > a,
.worso-menu > li.current-menu-ancestor > a { color: var(--worso-lime-dk); background: var(--worso-lime-bg); }

.worso-menu .menu-item-has-children > a::after {
	content: "▾";
	font-size: var(--worso-fs-2xs);
	opacity: .6;
	margin-left: 2px;
}

.worso-menu .sub-menu {
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	min-width: 220px;
	background: var(--worso-white);
	border: 1px solid var(--worso-border);
	border-radius: 12px;
	box-shadow: var(--worso-shadow-md);
	list-style: none;
	margin: 0;
	padding: var(--worso-sp-2);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s;
	z-index: 120;
}
.worso-menu > li:hover > .sub-menu,
.worso-menu > li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.worso-menu .sub-menu li a {
	display: block;
	padding: 10px 12px;
	font-size: var(--worso-fs-sm);
	color: var(--worso-ink-dk);
	text-decoration: none;
	border-radius: 8px;
	line-height: 1.4;
}
.worso-menu .sub-menu li a:hover { background: var(--worso-lime-bg); color: var(--worso-lime-dk); }

/* ===== Language switcher ===== */
.worso-lang { position: relative; flex-shrink: 0; }
.worso-lang__toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: var(--worso-sp-2) var(--worso-sp-3);
	min-height: var(--worso-tap-min);
	font-size: var(--worso-fs-sm);
	font-weight: 600;
	background: transparent;
	border: 1px solid var(--worso-border);
	border-radius: 999px;
	color: var(--worso-ink-dk);
	cursor: pointer;
	line-height: 1;
	white-space: nowrap;
	flex-shrink: 0;
}
.worso-lang__toggle:hover { border-color: var(--worso-lime-dk); color: var(--worso-lime-dk); }
.worso-lang__current { display: inline-flex; align-items: center; letter-spacing: .02em; }
.worso-lang__chev { flex-shrink: 0; opacity: .55; transition: transform .2s ease; }
.worso-lang__toggle[aria-expanded="true"] .worso-lang__chev { transform: rotate(180deg); }
.worso-lang__flag-wrap {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	line-height: 0;
}
.worso-lang__flag-wrap--emoji {
	font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", sans-serif;
	font-size: 16px;
	line-height: 1;
	font-style: normal;
	letter-spacing: 0;
}
.worso-flag { display: block; border-radius: 50%; overflow: hidden; }
.worso-lang__menu {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	min-width: 140px;
	background: var(--worso-white);
	border: 1px solid var(--worso-border);
	border-radius: 12px;
	box-shadow: var(--worso-shadow-md);
	list-style: none;
	margin: 0;
	padding: 6px;
	z-index: 120;
}
.worso-lang__menu a {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: var(--worso-sp-2) var(--worso-sp-3);
	min-height: var(--worso-tap-min);
	font-size: var(--worso-fs-sm);
	color: var(--worso-ink-dk);
	text-decoration: none;
	border-radius: 8px;
	white-space: nowrap;
}
.worso-lang__menu a:hover { background: var(--worso-lime-bg); color: var(--worso-lime-dk); }
.worso-lang__menu a.is-current { color: var(--worso-lime-dk); font-weight: 700; }
.worso-lang__menu-label { flex: 1; }

/* ===== Mobile hamburger ===== */
.worso-header__toggle {
	display: none;
	width: var(--worso-tap-min);
	height: var(--worso-tap-min);
	min-width: var(--worso-tap-min);
	min-height: var(--worso-tap-min);
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 1px solid var(--worso-border);
	border-radius: 10px;
	cursor: pointer;
	padding: 0;
}
.worso-header__toggle-bar,
.worso-header__toggle-bar::before,
.worso-header__toggle-bar::after {
	display: block;
	width: 18px; height: 2px;
	background: var(--worso-ink-dk);
	border-radius: 2px;
	transition: transform .2s ease, top .2s ease;
	position: relative;
}
.worso-header__toggle-bar::before,
.worso-header__toggle-bar::after {
	content: "";
	position: absolute;
	left: 0;
}
.worso-header__toggle-bar::before { top: -6px; }
.worso-header__toggle-bar::after  { top: 6px; }
.worso-header__toggle-bar.is-open { background: transparent; }
.worso-header__toggle-bar.is-open::before { top: 0; transform: rotate(45deg); }
.worso-header__toggle-bar.is-open::after  { top: 0; transform: rotate(-45deg); }

/* ===== Mobile drawer =====
 * z-index: 99 (= header z:100 - 1) で sticky header の直下に重なる。
 * inset: 76px はヘッダー実高（worso-header__inner の height）と同期しておくこと。
 * 注意: 親に backdrop-filter / transform 等を持つ要素があると containing block が
 * 変わり viewport-fixed が崩れるため、本ドロワーは <header> の外側に配置している
 * （header.php の .worso-header-wrap 直下）。
 */
.worso-drawer {
	position: fixed;
	inset: 76px 0 0 0;
	background: var(--worso-white);
	z-index: 99;
	overflow-y: auto;
	border-top: 1px solid var(--worso-border);
}
@media (max-width: 640px) {
	.worso-drawer { inset: 64px 0 0 0; }
}
.worso-drawer__lang {
	display: flex;
	flex-wrap: wrap;
	gap: var(--worso-sp-2);
	margin: 0 0 16px;
	padding: var(--worso-sp-3) 0;
	border-bottom: 1px solid var(--worso-border);
}
.worso-drawer__lang-item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--worso-sp-2);
	min-width: 72px;
	padding: 8px 14px;
	border: 1px solid var(--worso-border);
	border-radius: 999px;
	color: var(--worso-ink-dk);
	font-size: var(--worso-fs-sm);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.worso-drawer__lang-item.is-current {
	background: var(--worso-lime-dk);
	border-color: var(--worso-lime-dk);
	color: #fff;
}
.worso-drawer__actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: 16px;
}
.worso-drawer__inner {
	padding: 24px var(--worso-gutter);
	max-width: var(--worso-container);
	margin: 0 auto;
}
.worso-drawer__menu {
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
}
.worso-drawer__menu a {
	display: block;
	padding: 14px 12px;
	font-size: var(--worso-fs-md);
	font-weight: 600;
	color: var(--worso-ink-dk);
	text-decoration: none;
	border-bottom: 1px solid var(--worso-border);
}
.worso-drawer__menu .sub-menu {
	list-style: none;
	margin: 0;
	padding: 0 0 0 16px;
	background: var(--worso-bg-soft);
}
.worso-drawer__menu .sub-menu a {
	font-size: var(--worso-fs-base);
	font-weight: 500;
	color: var(--worso-ink-lt);
	padding: 10px 12px;
}
.worso-drawer__cta { width: 100%; justify-content: center; margin-top: 12px; }

/* ===== Buttons (pill shape per reference design) ===== */
.worso-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--worso-sp-2);
	padding: 14px 28px;
	border-radius: var(--worso-radius-pill);
	font-weight: 700;
	font-size: var(--worso-fs-base);
	transition: all .2s ease;
	white-space: nowrap;
	border: 1.5px solid transparent;
	line-height: 1;
}

.worso-btn--primary {
	background: var(--worso-lime);
	color: var(--worso-ink-dk);
}
.worso-btn--primary:hover {
	background: var(--worso-lime-lt);
	transform: translateY(-1px);
	box-shadow: 0 8px 20px rgba(18, 124, 9, 0.35);
	opacity: 1;
}

.worso-btn--secondary {
	background: var(--worso-white);
	color: var(--worso-ink-dk);
	border-color: var(--worso-border);
}
.worso-btn--secondary:hover {
	border-color: var(--worso-lime-dk);
	color: var(--worso-lime-dk);
	transform: translateY(-1px);
	opacity: 1;
}

/* Ghost retained as alias for back-compat; on white it's identical to secondary */
.worso-btn--ghost {
	background: transparent;
	color: var(--worso-ink-dk);
	border-color: var(--worso-border);
}
.worso-btn--ghost:hover {
	border-color: var(--worso-lime-dk);
	color: var(--worso-lime-dk);
	transform: translateY(-1px);
	opacity: 1;
}

/* ===== Footer ===== */
.worso-footer {
	background: var(--worso-ink-dk);
	color: var(--worso-white);
	padding: 72px 0 24px;
	margin-top: 0;
}
.worso-footer__inner { position: relative; }

.worso-footer__top {
	display: grid;
	grid-template-columns: 1.3fr 2.7fr;
	gap: var(--worso-sp-10);
	padding-bottom: 48px;
	border-bottom: 1px solid var(--worso-white-10);
}
.worso-footer__brand { display: flex; flex-direction: column; gap: 18px; }
.worso-footer__logo {
	display: inline-flex;
	flex-direction: column;
	text-decoration: none;
	color: var(--worso-white);
	line-height: 1.1;
}
.worso-footer__logo strong { font-size: var(--worso-fs-2xl); font-weight: 800; letter-spacing: .02em; color: var(--worso-white); }
.worso-footer__tagline { font-size: var(--worso-fs-2xs); color: var(--worso-white-60); letter-spacing: .02em; margin-top: 4px; }
.worso-footer__lead {
	font-size: var(--worso-fs-sm);
	line-height: 1.7;
	color: var(--worso-white-75);
	margin: 0;
	max-width: 32ch;
}
.worso-footer__sns {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 10px;
}
.worso-footer__sns a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px; height: 36px;
	border: 1px solid var(--worso-white-15);
	border-radius: 50%;
	color: var(--worso-white);
	transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.worso-footer__sns a:hover {
	background: var(--worso-lime);
	border-color: var(--worso-lime);
	color: var(--worso-ink-dk);
}

.worso-footer__cols {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--worso-sp-7);
}
.worso-footer__heading {
	color: var(--worso-white);
	font-size: var(--worso-fs-sm);
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	margin: 0 0 18px;
}
.worso-footer__menu {
	list-style: none;
	margin: 0;
	padding: 0;
}
.worso-footer__menu li { margin: 0 0 10px; }
.worso-footer__menu a {
	font-size: var(--worso-fs-sm);
	color: var(--worso-white-75);
	text-decoration: none;
	transition: color .15s ease;
}
.worso-footer__menu a:hover { color: var(--worso-lime); }

.worso-footer__address {
	font-style: normal;
	font-size: var(--worso-fs-sm);
	line-height: 1.7;
	color: var(--worso-white-75);
	margin: 0 0 16px;
}
.worso-footer__address a { color: var(--worso-lime); text-decoration: none; }
.worso-footer__address a:hover { text-decoration: underline; }
.worso-footer__cta { width: 100%; justify-content: center; }

.worso-footer__bottom {
	padding-top: 24px;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: var(--worso-sp-4);
}
.worso-footer__copy {
	margin: 0;
	font-size: var(--worso-fs-xs);
	color: var(--worso-white-50);
}
.worso-footer__legal {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: var(--worso-sp-5);
}
.worso-footer__legal a {
	font-size: var(--worso-fs-xs);
	color: var(--worso-white-60);
	text-decoration: none;
}
.worso-footer__legal a:hover { color: var(--worso-lime); }

/* ===== Mobile (global) ===== */
@media (max-width: 1024px) {
	.worso-header__nav { display: none; }
	.worso-header__toggle { display: inline-flex; }
	.worso-header__cta { display: none; }
	.worso-lang { display: none; }
	.worso-footer__top { grid-template-columns: 1fr; gap: 40px; }
	.worso-footer__cols { grid-template-columns: repeat(2, 1fr); gap: 28px; }
}
@media (max-width: 640px) {
	.worso-header__inner { height: 64px; }
	.worso-header__logo .custom-logo { max-height: 26px; max-width: 130px; }
	.worso-footer__bottom { flex-direction: column; align-items: flex-start; }
}

/* Utility */
.sr-only {
	position: absolute;
	width: 1px; height: 1px;
	padding: 0; margin: -1px; overflow: hidden;
	clip: rect(0, 0, 0, 0); border: 0;
}

/* ==========================================================================
   UI 改善パッチ (2026-05-09) — H2-H7 統合
   ========================================================================== */

/* H2: カード共通ホバー（services / case-studies / news / media-features を統一） */
.worso-services__card,
.worso-cs__card,
.worso-cs__archive-card,
.worso-news-column__card,
.worso-news__card,
.worso-archive__card,
.worso-downloads__card,
.worso-media__card:not(.worso-media__card--empty) {
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.worso-services__card:hover,
.worso-cs__card:hover,
.worso-cs__archive-card:hover,
.worso-news-column__card:hover,
.worso-news__card:hover,
.worso-archive__card:hover,
.worso-downloads__card:hover,
.worso-media__card:not(.worso-media__card--empty):hover {
	transform: translateY(-4px);
	box-shadow: var(--worso-card-shadow-hover);
}

/* H3: タッチターゲット最小 48px（モバイルのみ強制、デスクトップは既存サイズ維持） */
@media (max-width: 640px) {
	.worso-btn,
	.worso-header__cta,
	.worso-drawer__cta,
	.worso-fcta__btn,
	.worso-faq__item summary,
	.worso-archive__pagination a,
	.worso-archive__pagination .page-numbers {
		min-height: var(--worso-tap-min);
	}
	.worso-btn { padding: 14px 28px; }
	.worso-hero__cta,
	.worso-resources__cta { padding: 16px 32px; font-weight: 700; }
}

/* H6: Contact Form 7 バリデーションスタイル */
.wpcf7-form .wpcf7-not-valid {
	border-color: var(--worso-error-bdr) !important;
	background-color: var(--worso-error-bg-2);
	box-shadow: 0 0 0 3px rgba(238, 85, 153, 0.12);
}
.wpcf7-form .wpcf7-not-valid-tip {
	display: inline-block;
	margin-top: 6px;
	color: var(--worso-error-text);
	font-size: 13px;
	font-weight: 600;
}
.wpcf7-form .wpcf7-not-valid-tip::before {
	content: "⚠ ";
	margin-right: 4px;
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
	border: 2px solid var(--worso-error-bdr);
	background: var(--worso-error-bg);
	color: var(--worso-error-deep);
	padding: 14px 18px;
	border-radius: 8px;
	font-weight: 600;
}
.wpcf7 form.sent .wpcf7-response-output {
	border: 2px solid var(--worso-lime-dk);
	background: var(--worso-green-100);
	color: var(--worso-green-800);
	padding: 14px 18px;
	border-radius: 8px;
	font-weight: 600;
}
.wpcf7-form input:focus-visible,
.wpcf7-form textarea:focus-visible,
.wpcf7-form select:focus-visible {
	outline: 2px solid var(--worso-lime-dk);
	outline-offset: 1px;
	border-color: var(--worso-lime-dk);
}
/* 必須マーク (CF7 ショートコード [your-name*] の wrap に付く想定の補助) */
.wpcf7-form .wpcf7-form-control-wrap[data-name*="*"]::after,
.wpcf7-form-required-mark {
	content: "必須";
	display: inline-block;
	margin-left: 6px;
	padding: 2px 6px;
	font-size: 11px;
	font-weight: 700;
	color: var(--worso-error-text);
	background: var(--worso-error-bg);
	border-radius: 3px;
}

/* H7: FAQ アコーディオン操作性 */
.worso-faq__item summary,
details.worso-faq__item > summary {
	min-height: var(--worso-tap-min);
	padding: 14px 48px 14px 16px;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
	-webkit-appearance: none;
	list-style: none;
	position: relative;
	transition: background-color 0.15s ease;
}
.worso-faq__item summary::-webkit-details-marker { display: none; }
.worso-faq__item summary:hover {
	background-color: var(--worso-green-50);
}
.worso-faq__item summary:focus-visible {
	outline: 3px solid var(--worso-lime-dk);
	outline-offset: -2px;
	border-radius: 4px;
}
.worso-faq__item summary::after {
	content: "";
	position: absolute;
	right: 18px;
	top: 50%;
	width: 12px;
	height: 12px;
	border-right: 2px solid var(--worso-lime-dk);
	border-bottom: 2px solid var(--worso-lime-dk);
	transform: translateY(-70%) rotate(45deg);
	transition: transform 0.2s ease;
}
.worso-faq__item[open] > summary::after {
	transform: translateY(-30%) rotate(-135deg);
}

/* H4: ドロワー × ボタン + ヘッダー */
.worso-drawer__header {
	display: flex;
	justify-content: flex-end;
	padding: 12px var(--worso-gutter) 0;
	max-width: var(--worso-container);
	margin: 0 auto;
}
.worso-drawer__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--worso-tap-min);
	height: var(--worso-tap-min);
	padding: 0;
	border: 1px solid var(--worso-border);
	border-radius: 999px;
	background: transparent;
	color: var(--worso-ink-dk);
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.worso-drawer__close:hover {
	background: var(--worso-green-50);
	border-color: var(--worso-lime-dk);
	color: var(--worso-lime-dk);
}
.worso-drawer__close:focus-visible {
	outline: 3px solid var(--worso-lime-dk);
	outline-offset: 2px;
}

/* H5: ドロワー展開中の本文スクロール抑止（focus trap 補助） */
body.worso-no-scroll {
	overflow: hidden;
}

