:root {
  --primary: #1F2A24;
  --secondary: #6B4226;
  /* preview の theme.accent と一致（デザインスタイル優先・無ければ accent/secondary） */
  --accent: #C4A86C;
  /* 段F57①：地色パレット。sectionPartsCss 等の背景/文字/カード/罫線がこれを参照（濃地スタイルで反転）。 */
  --ground-base: #F7F4EE; --ground-alt: #EFEAE0; --ground-dark: #201B15; --ground-text: #1F1B16; --ground-body: #5C5348; --ground-muted: #8A8072; --ground-card: #FFFFFF; --ground-border: #E3DDD0;
  --bg: var(--ground-base);
  --bg-alt: var(--ground-alt);
  --text: var(--ground-text);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
/* 段F65/F96-fix2：サイト背景画像モード（活性時のみ）。LP コンテナ(.has-site-bg)背景に画像＋ground base/alt の半透明オーバーレイ（card/text/border は不透明のまま）。preview と同一の共通 siteBgImageCss/siteBgOverlayCss。 */

/* 段F44②：横スクロール根絶の安全網。メディアは親幅を超えない（比率維持）。具体クラス(.hero-media 等)は詳細度で優先＝従来不変。compare 表の意図的 overflow-x は .cmp-table-wrap で別途スクロール。 */
img, video { max-width: 100%; height: auto; }
/* 段F44③：本文 font-size を clamp 化（上限16px=ブラウザ既定＝デスクトップ不変・SPのみ最小15px）。 */
body { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; background: var(--bg); color: var(--text); line-height: 1.7; font-size: clamp(15px, 4vw, 16px); }
h1, h2, h3, .site-name { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
/* ナビのアンカー遷移時、sticky ヘッダーに隠れないようオフセット */
.section, .hero { scroll-margin-top: 80px; }
/* スクロール連動の出現アニメ（preview の AnimatedSection と同パラメータ＝MOTION_PROFILES.standard.reveal）。
   F50-①：opacity フェード＋小さめ translateY(14px)。透明化(opacity:0)は html.js が付いた時（JS有効）のみ適用し、
   JS無効/IO非対応/prefers-reduced-motion では全要素を可視のまま出す（初期隠しは JS 有効時限定＝「見出しが沈む」旧懸念を回避）。 */
.reveal { transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
html.js .reveal { opacity: 0; transform: translateY(14px); }
html.js .reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { html.js .reveal { opacity: 1; transform: none; transition: none; } }
/* グリッド内カードの段階フェード（preview の per-card stagger 100ms と一致）。
   親セクション(.reveal)が is-visible になった時に子カードが 100ms 刻みで順に出る。子は IO 対象外＝親の可視化だけで駆動（自己完結）。 */
html.js .reveal-kids > * { opacity: 0; transform: translateY(14px); transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
html.js .reveal.is-visible .reveal-kids > *, html.js .reveal-kids.is-visible > * { opacity: 1; transform: none; }
html.js .reveal-kids > *:nth-child(2) { transition-delay: 0.1s; }
html.js .reveal-kids > *:nth-child(3) { transition-delay: 0.2s; }
html.js .reveal-kids > *:nth-child(4) { transition-delay: 0.3s; }
html.js .reveal-kids > *:nth-child(5) { transition-delay: 0.4s; }
html.js .reveal-kids > *:nth-child(6) { transition-delay: 0.5s; }
html.js .reveal-kids > *:nth-child(7) { transition-delay: 0.6s; }
html.js .reveal-kids > *:nth-child(8) { transition-delay: 0.7s; }
html.js .reveal-kids > *:nth-child(9) { transition-delay: 0.8s; }
html.js .reveal-kids > *:nth-child(10) { transition-delay: 0.9s; }
html.js .reveal-kids > *:nth-child(11) { transition-delay: 1s; }
html.js .reveal-kids > *:nth-child(12) { transition-delay: 1.1s; }
@media (prefers-reduced-motion: reduce) { html.js .reveal-kids > * { opacity: 1; transform: none; transition: none; transition-delay: 0s; } }
/* 段F47-P1a：header/footer 背景を preview（近黒＋blur）に一致（旧 var(--primary) はテーマ色で乖離＝D1/D2）。値は lib/siteChrome。 */
header { background: rgba(245,242,234,0.95); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid rgba(26,26,26,0.08); color: #1a1a1a; padding: 16px 20px; position: sticky; top: 0; z-index: 100; }
.header-inner { max-width: 1100px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.site-name { font-weight: 700; font-size: 1.1rem; }
/* 段F103：ヘッダーのブランド表記は常にリンク（既定=トップ／任意URL）。色・装飾はブランド表記のまま継承（見た目不変）。 */
.site-brand-link { color: inherit; text-decoration: none; display: inline-flex; align-items: center; min-width: 0; }
.site-brand-link:hover { opacity: 0.85; }
/* 段F102：ヘッダーロゴ（usage="logo" がある時だけ注入＝byte 不変）。preview と同一の共通 headerLogoCss。 */
.site-name.has-logo { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: min(60vw, 460px); color: #1a1a1a; }
.site-logo { height: 34px; width: auto; max-width: 220px; object-fit: contain; display: block; flex: 0 0 auto; }
.site-name.has-logo .site-tagline { font-weight: 400; opacity: 0.85; font-size: clamp(12px, 3vw, 15px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
/* 社名併記（logoWithName・opt-in）：34px ロゴと視覚的に揃える＝中央そろえ・折り返さず 375 では省略。 */
.site-name.has-logo .site-logo-name { font-weight: 700; font-size: clamp(14px, 3.4vw, 18px); line-height: 34px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
@media (max-width: 768px) { .site-logo { height: 26px; max-width: 130px; } .site-name.has-logo { max-width: 60vw; } .site-name.has-logo .site-logo-name { line-height: 26px; } }
nav a { color: rgba(26,26,26,0.82); text-decoration: none; margin-left: 24px; font-size: 0.9rem; display: inline-block; max-width: 160px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; }
nav a:hover { color: var(--accent); } /* 段F47-P1a：D3＝preview の hover(theme.accent)に一致（旧 #fff） */
/* 段F68追補：ヘッダーCTA「無料相談」＝preview と同一要素・行動色(cta)で描画（装飾色 accent とは独立）。nav を右寄せし CTA と右側でグループ化（preview の brand左/nav+cta右 と一致＝preview==export）。 */
.header-inner nav { margin-left: auto; }
.header-cta { flex-shrink: 0; margin-left: 16px; background: #c3a550; color: #1A1A1A; padding: 10px clamp(14px, 4vw, 24px); border-radius: 4px; font-size: 13px; font-weight: 700; text-decoration: none; white-space: nowrap; display: inline-block; }
.page-nav { max-width: 1100px; margin: 10px auto 0; display: flex; flex-wrap: wrap; gap: 18px; border-top: 1px solid rgba(26,26,26,0.16); padding-top: 10px; }
.page-nav a { color: rgba(26,26,26,0.82); text-decoration: none; margin-left: 0; font-size: 0.9rem; font-weight: 600; }
.page-nav a.active { color: #1a1a1a; border-bottom: 2px solid #1a1a1a; }
/* 段F57④：immersive hero の背景を preview(HeroImmersive の theme.heroStyle) に一致（旧 primary22/secondary44 の明グラデ乖離を解消）。暗地＝白文字。 */
.hero { position: relative; overflow: hidden; background: linear-gradient(135deg, #1a1208 0%, #2d1f0a 40%, #1C3A36 100%); padding: clamp(56px, 8vw, 120px) clamp(20px, 5vw, 40px) clamp(48px, 7vw, 80px); text-align: center; }
/* 段G5：改行＝禁則＋語中割れ抑制（生成 
 は <br> で温存）。preview HERO_BREAK と同値。 */
/* 段F57④：暗地の hero＝白文字（preview HeroImmersive h1:#FFFFFF / body:rgba(255,255,255,.95) と一致）。 */
.hero h1 { font-size: clamp(1.6rem, 5vw, 5rem); font-weight: 800; letter-spacing: -0.02em; line-height: 1.2; color: #fff; margin: 16px 0; line-break: strict; overflow-wrap: break-word; word-break: keep-all; text-wrap: balance; text-shadow: 0 2px 12px rgba(0,0,0,0.5); }
/* 段F59：本文は語中割れ(anywhere)をやめ 禁則(line-break:strict)＋text-wrap:pretty で「。」等の行頭禁則を守る（preview BODY_BREAK と同値）。 */
.hero .body { color: rgba(255,255,255,0.95); text-shadow: 0 1px 8px rgba(0,0,0,0.45); line-break: strict; overflow-wrap: normal; word-break: normal; text-wrap: pretty; }
.hero-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
/* Ken Burns: 画像ヒーローのみ控えめにズーム（動画には当てない） */
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.08); } }
img.hero-media { animation: kenburns 14s ease-in-out infinite alternate; will-change: transform; }
@media (prefers-reduced-motion: reduce) { img.hero-media { animation: none; } }
/* 段G5：左右薄グラデ→縦グラデ（全幅で効く暗幕）。preview のオーバーレイと同一値＝preview==export。 */
/* 段F40：暗幕を控えめに強化（0.35→0.45 / 0.6→0.65）。明るい画像でも文字が沈まないように。 */
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.65) 100%); z-index: 1; }
.hero-content { position: relative; z-index: 2; width: 100%; }
.hero-has-media h1, .hero-has-media .body, .hero-has-media .eyebrow { color: #fff; }
/* 段F56①：モバイルの hero を svh 基準で適正化（大きすぎる動画を1画面に収める）。高さは min(100svh,720px)・内容は縦中央・メディアは中央フレーミング。 */
@media (max-width: 768px) { .hero { min-height: min(100svh, 720px); display: flex; flex-direction: column; justify-content: center; } .hero-media { object-position: center; } }
/* 段G5/F40：メディア時の可読性強化（preview と同値）。段F40：body/eyebrow/stats にも text-shadow を付与。 */
.hero-has-media h1 { text-shadow: 0 2px 12px rgba(0,0,0,0.6); }
.hero-has-media .body { color: rgba(255,255,255,0.95); text-shadow: 0 1px 8px rgba(0,0,0,0.55); }
.hero-has-media .eyebrow { text-shadow: 0 1px 8px rgba(0,0,0,0.55); }
/* ヒーロー実績数字（データ駆動。stats があるときだけ出力）。
   段F53：見た目は lib/heroStats の単一ソース＝preview の StatItem/コンテナと同値（実測乖離の解消）。
   チップは常に暗（媒体有無で分岐しない＝preview と一致）。数字色は var(--accent)（preview=theme.accent）。 */
.hero-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; max-width: 980px; margin: 80px auto 0; border-radius: 12px; overflow: hidden; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.16); box-shadow: 0 12px 40px rgba(0,0,0,0.35); }
.hero-stats .hero-stat { padding: clamp(14px, 3.4vw, 32px) clamp(16px, 4vw, 24px); text-align: center; background: rgba(0,0,0,0.42); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.hero-stat-val { font-size: clamp(0.95rem, 4.2vw, 3.5rem); font-weight: 800; color: var(--accent); font-family: 'DM Sans', 'Inter', system-ui, -apple-system, sans-serif; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; letter-spacing: -0.01em; line-height: 1; margin-bottom: 8px; white-space: nowrap; }
/* 段F94：長い値（is-long）は段階縮小＋折返しで見切れ回避（短い値は is-long 非付与＝上の nowrap のまま＝従来不変）。 */
.hero-stat-val.is-long { font-size: clamp(0.8rem, 3vw, 1.5rem); line-height: 1.25; letter-spacing: normal; white-space: normal; overflow-wrap: anywhere; }
/* 段F94：ラベルも長文折返し許容（overflow-wrap:anywhere は既存 .stats-val と同じ流儀。短いラベルは box 寸法不変＝視覚不変）。 */
.hero-stat-label { font-size: 13px; color: rgba(255,255,255,0.6); letter-spacing: 0.05em; overflow-wrap: anywhere; }
/* 段F67②：モバイル FV 圧縮＝stats を上に詰める。段F70-b：チップ padding は chipPadding の clamp 単一値に移管（≤560 の padding 上書きは廃止＝preview inline と一致）。 */
@media (max-width: 560px) { .hero-stats { margin-top: 28px; box-shadow: 0 8px 24px rgba(0,0,0,0.35); } }
.case-card { border-radius: 12px; overflow: hidden; background: var(--ground-card); border: 1px solid rgba(0,0,0,0.06); }
.case-media { aspect-ratio: 4 / 3; background: #eee; }
.case-card .case-media img, .case-card .case-media video { width: 100%; height: 100%; object-fit: cover; display: block; }
/* 段F47-P1b：caseStudy grid（既定）＝preview の濃地 spotlight＋ドットnav（静的 CSS :has()+radio）。D4/D5/D6。 */
.cs-grid-sec { padding: clamp(48px, 12vw, 125px) 0; background: #F5F2EA; color: #1a1a1a; overflow: hidden; scroll-margin-top: 80px; }
.cs-grid-inner { max-width: 1200px; margin: 0 auto; padding: 0 clamp(16px, 5vw, 40px); }
.cs-grid-head { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: flex-end; margin-bottom: 48px; }
.cs-grid-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: 0.2em; color: #C4A86C; margin-bottom: 12px; text-transform: uppercase; }
.cs-grid-h2 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 800; color: #1a1a1a; line-height: 1.3; white-space: pre-line; margin: 0; }
.cs-grid-dots { display: flex; gap: 8px; align-items: center; }
.cs-grid-radio { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.cs-grid-dot { width: 8px; height: 8px; border-radius: 4px; background: rgba(26,26,26,0.28); cursor: pointer; transition: width 0.3s, background 0.3s; display: inline-block; }
.cs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.cs-grid-card { border-radius: 16px; overflow: hidden; opacity: 0.5; transform: scale(0.97); transition: opacity 0.4s, transform 0.4s; }
.cs-grid-media { height: 240px; position: relative; display: flex; align-items: flex-end; padding: 24px; overflow: hidden; }
.cs-grid-media img, .cs-grid-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cs-grid-scrim { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,0.5) 100%); }
.cs-grid-tag { position: absolute; top: 16px; left: 16px; z-index: 2; background: #C4A86C; color: #000; font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 100px; }
.cs-grid-num { color: rgba(255,255,255,0.6); font-size: clamp(40px, 10vw, 80px); font-weight: 900; position: absolute; right: 16px; bottom: -10px; line-height: 1; z-index: 2; text-shadow: 0 2px 12px rgba(0,0,0,0.6); }
.cs-grid-text { background: #FFFFFF; padding: 24px; }
.cs-grid-text h3 { font-size: 17px; font-weight: 700; color: #1a1a1a; margin-bottom: 12px; }
.cs-grid-meta { display: flex; gap: 16px; }
.cs-grid-meta span { font-size: 13px; color: #57534d; }
/* 段F74：説明・顧客の声（任意）。cs-grid-text は濃地(#1a1a1a)＝淡色＋2行 clamp（カード等高維持）。 */
.cs-grid-voice { margin-top: 10px; font-size: 13px; color: #4a4640; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* 段F74②：実際のサイトへの小リンク（accent＝装飾色・行動色CTAと役割分離）。空URLは非表示。 */
.cs-grid-visit { display: inline-flex; align-items: center; gap: 4px; margin-top: 12px; color: #C4A86C; font-size: 13px; font-weight: 700; text-decoration: none; }
.cs-grid-visit:hover { text-decoration: underline; }
.case-text { padding: 16px 18px; }
/* 段F54：事例タグ地色は preview の theme.accent に一致（旧 var(--secondary) は暗色で乖離）。 */
.case-text .case-tag { display: inline-block; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 100px; margin-bottom: 8px; }
.case-text h3 { font-size: 16px; font-weight: 700; margin-bottom: 8px; }
.case-meta { display: flex; gap: 16px; font-size: 13px; opacity: 0.6; }
/* caseStudy variant="split": 1件ずつ全幅・左右交互（preview と同一数値） */
.cs-split-section { padding: 100px 0; background: var(--bg); scroll-margin-top: 80px; overflow: hidden; }
.cs-split-inner { max-width: 1100px; margin: 0 auto; padding: 0 40px; }
.cs-split-head { margin-bottom: 56px; }
.cs-split-head .eyebrow { color: var(--accent); margin-bottom: 12px; }
.cs-split-head h2 { color: var(--ground-text); margin-bottom: 0; }
.cs-split-row { display: flex; gap: 44px; align-items: center; margin-bottom: 72px; }
.cs-split-row:last-child { margin-bottom: 0; }
.cs-split-row.rev { flex-direction: row-reverse; }
.cs-split-col { flex: 1 1 50%; min-width: 0; }
.cs-split-media { position: relative; aspect-ratio: 3 / 2; border-radius: 10px; overflow: hidden; }
.cs-split-media.is-empty { background: linear-gradient(135deg, #C4A86C22 0%, #C4A86C0a 100%); }
.cs-split-media img, .cs-split-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cs-split-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: clamp(48px, 7vw, 88px); font-weight: 800; font-family: 'DM Sans', monospace; color: var(--accent); opacity: 0.3; }
.cs-split-num { font-size: 13px; font-weight: 800; letter-spacing: 0.1em; color: var(--accent); font-family: 'DM Sans', monospace; margin-bottom: 12px; }
.cs-split-text .case-tag { display: inline-block; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 100px; margin-bottom: 12px; }
.cs-split-text h3 { font-size: 22px; font-weight: 700; color: var(--ground-text); line-height: 1.4; margin-bottom: 12px; }
.cs-split-text .case-meta { display: flex; gap: 20px; font-size: 14px; color: var(--ground-body); opacity: 1; }
/* 段F74：説明・顧客の声（任意）。split は面積があるので clamp なし・ground 連動色（濃地 luxury でも可読）。 */
.cs-split-voice { margin-top: 14px; font-size: 15px; line-height: 1.8; color: var(--ground-body); }
/* 段F74②：実際のサイトへの小リンク（accent＝装飾色・行動色CTAと役割分離）。空URLは非表示。 */
.cs-split-visit { display: inline-flex; align-items: center; gap: 4px; margin-top: 14px; color: var(--accent); font-size: 14px; font-weight: 700; text-decoration: none; }
.cs-split-visit:hover { text-decoration: underline; }
/* 段F55①：iOS で cs-split 画像が消える不具合。縦積み(column)時、flex 交差軸(width)が align-items:center で 0 に潰れ
   aspect-ratio→高さ0 になるため、hero-split-media と同型に width:100% を明示（実機再現あり）。 */
@media (max-width: 768px) { .cs-split-row, .cs-split-row.rev { flex-direction: column; gap: 20px; margin-bottom: 56px; } .cs-split-media { width: 100%; } }
.section { padding: 100px 40px; }
/* 段Tier1-D(C)：汎用 .section 経由の dense セクション(problem/process/faq/contact/privacy)だけ上下 padding を密に上書き。
   id 詳細度で .section(標準100) に勝つ。専用 *-sec は各クラスが sectionPadY を直読み＝ここは対象外。preview の #id>section 上書きと同判断。 */
#sec-problem{padding-top:85px;padding-bottom:85px}
#sec-process{padding-top:85px;padding-bottom:85px}
#sec-faq{padding-top:85px;padding-bottom:85px}
#sec-contact{padding-top:85px;padding-bottom:85px}
.section-alt { background: var(--ground-alt); }
/* 段F49①：汎用セクション(problem/solution 等)の items カード（preview GenericSection と同値）。 */
/* 段F56②：課題カード(gen-card)の造形強化＝lib/genCard 単一ソース（白カード＋影＋accent縦ライン＋番号）。preview と同一 CSS。 */
.gen-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin-top: 36px; }
.gen-card { position: relative; background: var(--ground-card); border-radius: 14px; padding: 26px 24px 26px 28px; box-shadow: var(--ground-shadow-md, 0 6px 24px rgba(0,0,0,0.07)); border: 1px solid var(--ground-border); border-left: 3px solid #C4A86C; }
.gen-card-num { display: block; font-size: 13px; font-weight: 800; letter-spacing: 0.12em; color: #C4A86C; font-family: 'DM Sans', monospace; margin-bottom: 10px; }
.gen-card h3 { font-size: 1.05rem; font-weight: 700; color: var(--ground-text); margin-bottom: 8px; line-height: 1.4; }
.gen-card p { font-size: 14px; color: var(--ground-body); line-height: 1.8; margin: 0; }
.section-inner { max-width: 1200px; margin: 0 auto; }
/* 段F54：eyebrow は preview の theme.accent に一致（旧 var(--secondary) は暗色で金アクセントと乖離＝まだら）。 */
.eyebrow { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.2em; color: var(--accent); margin-bottom: 8px; }
/* 段F61④：Q&A型見出し（features/process/faq の任意 variant）。preview と同一の共通 questionHeadingCss。未使用時は無害。 */
.is-question { display: inline-flex; align-items: baseline; gap: 6px; padding: 6px 16px; border-radius: 100px; background: #C4A86C14; border: 1px solid #C4A86C33; color: #C4A86C; text-transform: none; }
.is-question::before { content: "Q."; font-weight: 900; font-size: 1.05em; letter-spacing: 0; }
/* 段F41：基底 h2 色を preview（各セクションの #1a1a1a 直書き）と一致させる。旧 var(--primary) は主色が明るい案件で明背景に沈むため。暗背景/固有色の h2（.cs-carousel-h2/.final-cta h2/.parts-h2/.cs-split-head h2/.offer-h2）は各クラスがより高い詳細度で上書き済み＝不変。hero h1(.hero h1) は対象外。 */
h2 { font-size: clamp(2rem, 3.4vw, 3.3rem); font-weight: 800; letter-spacing: -0.01em; line-height: 1.3; color: var(--ground-text); margin-bottom: 24px; }
/* 段F64②：全セクション見出し(h1/h2)の文節改行（word-break: auto-phrase）。preview と同一の共通 headingPhraseBreakCss。 */
h1, h2, h3 { word-break: keep-all; overflow-wrap: break-word; }
.body { color: var(--ground-body); margin-bottom: 32px; }
/* 段F54：主CTA は preview の hero ボタン（background:theme.accent / color:#000）に一致（旧 primary 地＋白文字は乖離）。 */
.btn-primary { display: inline-block; background: var(--accent); color: #000; padding: 14px 32px; border-radius: 6px; text-decoration: none; font-weight: 600; margin-top: 16px; transition: transform 0.2s, box-shadow 0.2s; }
/* F50-②/F54：hover は preview 同様「微小移動＋影」のみ（地色は変えない＝accent のまま）。 */
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 28px #C4A86C30; }
/* 段F46②：immersive hero の第2ボタン（preview HeroImmersive secondaryCta と同一の見た目・ナビ先頭へアンカースクロール）。 */
.btn-hero-secondary { display: inline-block; background: transparent; color: rgba(255,255,255,0.9); border: 1px solid rgba(255,255,255,0.3); padding: 16px 32px; border-radius: 4px; text-decoration: none; font-size: 16px; font-weight: 500; margin-top: 16px; margin-left: 12px; backdrop-filter: blur(8px); }
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 32px; }
.card { background: var(--ground-card); border: 1px solid #eee; border-radius: 12px; padding: 28px; box-shadow: 0 2px 12px rgba(0,0,0,0.06); transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s; }
/* F50-②：カード hover＝浮き＋影（preview の FeaturesSection カードと同一挙動＝preview==export）。 */
.card:hover { transform: translateY(-6px); box-shadow: 0 20px 48px #C4A86C20; border-color: #C4A86C40; }
/* F50-②：prefers-reduced-motion では hover の移動を無効化（色/影の変化のみ）。 */
@media (prefers-reduced-motion: reduce) { .card, .btn-primary, .final-cta-btn { transition: none; } .card:hover, .btn-primary:hover, .final-cta-btn:hover { transform: none; } }
.card-icon { font-size: 2rem; margin-bottom: 12px; }
/* 段F54：カード番号/罫は preview の theme.accent に一致（旧 var(--secondary) は暗色で乖離）。 */
.card-num { font-size: 0.9rem; font-weight: 800; letter-spacing: 0.12em; color: var(--accent); margin-bottom: 16px; }
.card-num-line { display: block; width: 32px; height: 2px; background: var(--accent); opacity: 0.5; margin-top: 8px; }
/* F50-④：カード見出し(h3)を階層トークンに統一（従来 preview 20px / export≈17px の乖離を解消）。 */
.card h3 { font-size: clamp(1.15rem, 1.6vw, 1.25rem); font-weight: 700; letter-spacing: -0.005em; line-height: 1.5; margin-bottom: 8px; color: var(--ground-text); }
/* 段F47-P1c：D7＝preview の styled アコーディオン（"Q./A."接頭・accent枠/影・回転+）に一致。開閉は native <details>。 */
.faq-item { background: var(--ground-card); border: 1px solid #eee; border-radius: 12px; margin-bottom: 8px; overflow: hidden; transition: border-color 0.3s, box-shadow 0.3s; }
.faq-item[open] { border-color: #C4A86C40; box-shadow: 0 8px 32px #C4A86C15; }
.faq-item summary { list-style: none; cursor: pointer; padding: 24px 28px; display: flex; justify-content: space-between; align-items: center; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-q { font-size: 16px; font-weight: 600; color: var(--ground-text); }
.faq-icon { color: #C4A86C; font-size: 20px; font-weight: 300; flex-shrink: 0; margin-left: 16px; transition: transform 0.3s; }
.faq-item[open] .faq-icon { transform: rotate(45deg); }
.faq-a { padding: 0 28px 24px; font-size: 15px; color: var(--ground-body); line-height: 1.8; border-top: 1px solid #C4A86C20; }
.faq-a p { padding-top: 16px; }
/* 流れ（process）: preview の ProcessSection と同じ番号付きステップ */
.process .process-head { text-align: center; margin-bottom: 64px; }
.process-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 32px; }
.process-step { text-align: center; }
.process-num { width: 80px; height: 80px; border-radius: 50%; background: #C4A86C15; border: 2px solid #C4A86C30; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; font-size: 28px; font-weight: 900; color: var(--accent); font-family: 'DM Sans', monospace; }
.process-step h3 { font-size: clamp(16px, 3.5vw, 18px); font-weight: 700; color: var(--ground-text); margin-bottom: 10px; }
.process-step p { font-size: 14px; color: var(--ground-body); line-height: 1.8; }
/* 最終CTA（finalCta）: preview の FinalCtaSection と同じダーク背景＋2ボタン＋注記 */
.final-cta { position: relative; overflow: hidden; padding: 120px 40px; background: linear-gradient(135deg, #1a1208 0%, #2d1f0a 40%, #1C3A36 100%); }
.final-cta-overlay { position: absolute; inset: 0; background-image: linear-gradient(#C4A86C06 1px, transparent 1px), linear-gradient(90deg, #C4A86C06 1px, transparent 1px); background-size: 60px 60px; }
.final-cta-inner { max-width: 800px; margin: 0 auto; text-align: center; position: relative; z-index: 10; }
.final-cta .eyebrow { color: var(--accent); margin-bottom: 16px; }
.final-cta h2 { font-size: clamp(2rem, 4vw, 3.5rem); font-weight: 800; color: #fff; margin-bottom: 24px; }
.final-cta-body { font-size: 17px; color: rgba(255,255,255,0.7); line-height: 1.9; margin-bottom: 48px; white-space: pre-line; }
.final-cta-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }
.final-cta-btn { display: inline-block; background: var(--accent); color: #000; padding: 20px 56px; border-radius: 4px; font-size: 18px; font-weight: 700; text-decoration: none; letter-spacing: 0.05em; box-shadow: 0 8px 40px #C4A86C50; transition: transform 0.2s, box-shadow 0.2s; }
/* F50-②：最終CTA hover＝微小移動＋影強調（preview の finalCta ボタンと両側一致）。 */
.final-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 14px 48px #C4A86C70; }
.final-cta-btn-secondary { display: inline-block; background: transparent; color: rgba(255,255,255,0.8); border: 1px solid rgba(255,255,255,0.3); padding: 20px 40px; border-radius: 4px; font-size: 18px; }
.final-cta-note { margin-top: 32px; font-size: 13px; color: rgba(255,255,255,0.4); }
/* 段F61②：3ゾーンフッター（サイト名/説明・ナビ再掲・主CTA/連絡導線＋SNS）。preview と同一の共通 footerCss。地色 var(--ground-dark)。 */
.site-footer { background: #F5F2EA; color: rgba(26,26,26,0.72); padding: 56px clamp(20px, 5vw, 48px) 36px; }
.site-footer-inner { max-width: 1160px; margin: 0 auto; display: grid; grid-template-columns: 1.5fr 1fr 1.1fr; gap: 40px; }
.footer-zone { min-width: 0; }
.footer-brand-name { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 1.2rem; font-weight: 800; color: #1a1a1a; margin: 0 0 12px; letter-spacing: 0.01em; }
.footer-desc { margin: 0; font-size: 13px; line-height: 1.85; color: rgba(26,26,26,0.66); white-space: pre-line; }
.footer-zone-title { font-size: 11px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: #C4A86C; margin: 0 0 14px; }
.footer-nav { display: flex; flex-direction: column; gap: 10px; }
.footer-nav a { color: rgba(26,26,26,0.72); text-decoration: none; font-size: 14px; font-weight: 600; transition: color .15s; cursor: pointer; width: fit-content; }
.footer-nav a:hover { color: #C4A86C; }
.footer-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.footer-actions .cta { padding: 12px 26px; font-size: 15px; }
.footer-contact { color: rgba(26,26,26,0.72); text-decoration: none; font-size: 14px; font-weight: 600; border-bottom: 1px solid #C4A86C66; padding-bottom: 2px; transition: color .15s, border-color .15s; }
.footer-contact:hover { color: #C4A86C; border-color: #C4A86C; }
.footer-social { display: flex; gap: 14px; margin-top: 4px; }
.footer-social a { color: rgba(26,26,26,0.78); display: inline-flex; transition: color .15s; }
.footer-social a:hover { color: #C4A86C; }
.footer-bottom { max-width: 1160px; margin: 36px auto 0; padding-top: 22px; border-top: 1px solid rgba(26,26,26,0.12); font-size: 12px; color: rgba(26,26,26,0.62); display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; justify-content: space-between; }
.footer-copy { margin: 0; }
.footer-legal { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.footer-legal a { color: rgba(26,26,26,0.62); text-decoration: none; font-size: 12px; transition: color .15s; cursor: pointer; }
.footer-legal a:hover { color: #C4A86C; }
@media (max-width: 768px) { .site-footer-inner { grid-template-columns: 1fr; gap: 30px; } .site-footer { padding: 44px 20px 28px; } }
/* 段F62-A①：追従CTA（モバイル下部固定バー・≤768）。preview と同一の共通 stickyCtaCss。 */
/* 段F68追補：主追従ボタン(is-primary)は行動色(cta)＝装飾色 accent から独立（resolveSiteCta・未設定時 accent フォールバック）。 */
.sticky-cta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: none; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: var(--ground-card); border-top: 1px solid var(--ground-border); box-shadow: 0 -6px 22px rgba(0,0,0,0.14); transform: translateY(0); transition: transform .28s cubic-bezier(.16,1,.3,1); }
@media (max-width: 768px) { .sticky-cta { display: flex; } }
.sticky-cta.is-hidden { transform: translateY(130%); }
.sticky-cta-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 50px; padding: 0 16px; border-radius: 12px; font-size: 15px; font-weight: 800; text-decoration: none; white-space: nowrap; box-sizing: border-box; }
.sticky-cta-btn.is-primary { flex: 1 1 auto; background: #c3a550; color: #1A1A1A; box-shadow: 0 6px 18px #c3a55055; }
.sticky-cta-btn.is-line { flex: 0 0 auto; background: #06C755; color: #fff; }
.sticky-cta-btn.is-tel { flex: 0 0 auto; background: var(--ground-alt); color: var(--ground-text); border: 1px solid var(--ground-border); }
@media (prefers-reduced-motion: reduce) { .sticky-cta { transition: none; } }
/* 段F62-A②③：contact の LINE/電話 併設ボタン行。preview と同一の共通 contactLeadCss。 */
.lead-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 20px; }
.lead-btn { display: inline-flex; align-items: center; gap: 8px; min-height: 50px; padding: 0 24px; border-radius: 10px; font-size: 15px; font-weight: 800; text-decoration: none; box-sizing: border-box; }
.lead-btn.is-line { background: #06C755; color: #fff; }
.lead-btn.is-tel { background: var(--ground-alt); color: var(--ground-text); border: 1px solid var(--ground-border); }
/* 段contact-form S1：hearing-form variant（当該 variant が在る時だけ注入＝OFF/未設定は byte 不変）。preview==export の共通 contactFormCss。thanks.html も styles.css 経由で参照。段S3：ground を渡し暗地サイトは暗地トークン追従（ライトは byte 不変）。 */

/* 段contact-form：.aws-form スコープ（LP 既存CSSと非衝突・接頭辞 aws/fld/opt/input）。色はローカル変数の右辺のみテーマ写像。 */
.aws-form {
  --fc-band: #F5F2EA;
  --fc-ink: #16294A;
  --fc-ink-soft: #2E4470;
  --fc-accent: #C4A86C;
  --fc-accent-dark: color-mix(in srgb, #C4A86C 78%, #000);
  --fc-cta: #c3a550;
  --fc-cta-dark: color-mix(in srgb, #c3a550 78%, #000);
  --fc-paper: #ffffff;
  --fc-field: color-mix(in srgb, #C4A86C 5%, #ffffff);
  --fc-line: color-mix(in srgb, #C4A86C 16%, #ffffff);
  --fc-muted: #5C6B85;
  box-sizing: border-box;
  padding: 56px 20px 72px;
  background: var(--fc-band);
  font-family: 'Shippori Mincho', 'Noto Serif JP', serif;
  color: var(--fc-ink);
  line-height: 1.7;
  -webkit-text-size-adjust: 100%;
}
.aws-form *, .aws-form *::before, .aws-form *::after { box-sizing: border-box; }
.aws-form__inner { max-width: 720px; margin: 0 auto; }
/* 段contact-form S4：フォームの見出しは <header class="aws-form__head"> だが、export の**素のタグ規則** header{position:sticky;top:0;z-index:100;background;padding;border-bottom;backdrop-filter}（サイトナビ用）がタグ名で漏れて掛かり、フォームヘッダーまで画面上部に固定＋ナビ地/枠が乗っていた。ここで漏れ分を明示リセット（固定解除＋ナビ装飾の混入除去）＝ヘッダーは通常フローでスクロール・帯上に意図どおり表示。preview==export／thanks も同クラスで是正。 */
.aws-form__head { margin: 0 0 28px; color: #16294A; text-align: center; position: static; top: auto; z-index: auto; background: transparent; padding: 0; border-bottom: 0; backdrop-filter: none; -webkit-backdrop-filter: none; }
.aws-form__eyebrow { display: inline-block; margin: 0 0 14px; padding: 5px 14px; border: 1px solid rgba(22,41,74,.35); border-radius: 999px; font-size: 12px; font-weight: 500; letter-spacing: .08em; color: #16294A; }
/* 段contact-form：帯上の見出しは白（グローバル h2 の色指定に勝つよう明示）。 */
.aws-form__ttl { margin: 0 0 14px; font-size: 28px; font-weight: 900; line-height: 1.45; letter-spacing: .01em; color: #16294A; }
.aws-form__lead { margin: 0 0 22px; font-size: 14px; line-height: 1.9; color: rgba(22,41,74,.86); }
.aws-form__facts { display: flex; justify-content: center; gap: 10px; margin: 0; padding: 0; list-style: none; }
.aws-form__facts li { flex: 1 1 0; padding: 10px 4px; border-radius: 6px; background: rgba(22,41,74,.06); font-size: 15px; font-weight: 700; color: #16294A; }
.aws-form__facts span { display: block; font-size: 11px; font-weight: 400; letter-spacing: .06em; color: rgba(22,41,74,.75); }
.aws-form__body { padding: 8px 24px 24px; border-radius: 10px 10px 0 0; background: var(--fc-paper); }
.aws-form__foot { padding: 0 24px 28px; border-radius: 0 0 10px 10px; background: var(--fc-paper); }
.aws-form .fld { margin: 0; padding: 22px 0; border: 0; border-bottom: 1px solid var(--fc-line); }
.aws-form .fld:last-of-type { border-bottom: 0; }
.aws-form .fld__head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; padding: 0; }
.aws-form .fld__label { margin: 0; padding: 0; font-size: 15px; font-weight: 700; color: var(--fc-ink); }
.aws-form .fld__sub { font-size: 12px; color: var(--fc-muted); }
.aws-form .fld__body { margin: 0; }
.aws-form .fld__note { margin: 8px 0 0; font-size: 12px; line-height: 1.75; color: var(--fc-muted); }
.aws-form .fld__note strong { color: var(--fc-ink); }
/* 段contact-form S3-fix②／段form-cta-color：チップ（必須/任意）は装飾色 accent 系（--fc-accent）に追従＝役割分離（行動色=CVボタン(.submit) のみ／装飾色=チップ・入力・枠等それ以外）。必須=accentベタ地+白／任意=outline（accent枠+accent文字）＝強弱で区別。1px 枠で寸法一致。 */
.aws-form .chip { padding: 2px 8px; border: 1px solid var(--fc-accent); border-radius: 3px; background: transparent; font-size: 11px; font-weight: 600; letter-spacing: .04em; color: var(--fc-accent); }
.aws-form .chip--req { background: var(--fc-accent); border-color: var(--fc-accent); color: #fff; font-weight: 700; }
.aws-form .input { display: block; width: 100%; padding: 13px 14px; border: 1px solid var(--fc-line); border-radius: 6px; background: var(--fc-field); font-family: inherit; font-size: 16px; line-height: 1.6; color: var(--fc-ink); transition: border-color .15s, background-color .15s, box-shadow .15s; }
.aws-form .input::placeholder { color: color-mix(in srgb, var(--fc-ink) 42%, #fff); }
.aws-form .input:hover { border-color: color-mix(in srgb, #C4A86C 32%, #fff); }
.aws-form .input:focus { outline: none; border-color: var(--fc-ink-soft); background: #fff; box-shadow: 0 0 0 3px color-mix(in srgb, #C4A86C 18%, transparent); }
.aws-form .input:focus-visible { outline: 2px solid var(--fc-ink-soft); outline-offset: 1px; }
.aws-form .input--area { resize: vertical; min-height: 96px; }
.aws-form .input.is-error { border-color: var(--fc-accent); background: color-mix(in srgb, #C4A86C 8%, #fff); }
.aws-form .fld__error { display: none; margin: 7px 0 0; font-size: 13px; font-weight: 500; color: var(--fc-accent-dark); }
.aws-form .fld__error.is-shown { display: block; }
.aws-form .reveal { margin-top: 10px; }
.aws-form .opts { display: grid; grid-template-columns: 1fr; gap: 8px; }
.aws-form .opts--row { grid-template-columns: repeat(2, 1fr); }
.aws-form .opt { position: relative; display: flex; align-items: center; gap: 10px; min-width: 0; padding: 13px 14px; border: 1px solid var(--fc-line); border-radius: 6px; background: var(--fc-field); font-size: 14px; line-height: 1.5; cursor: pointer; transition: border-color .15s, background-color .15s; }
.aws-form .opt:hover { border-color: color-mix(in srgb, #C4A86C 32%, #fff); background: color-mix(in srgb, #C4A86C 9%, #fff); }
.aws-form .opt input { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--fc-accent); cursor: pointer; }
.aws-form .opt__txt { flex: 1; min-width: 0; }
.aws-form .opt:has(input:checked) { border-color: var(--fc-accent); background: color-mix(in srgb, #C4A86C 10%, #fff); font-weight: 500; }
.aws-form .opt:has(input:focus-visible) { outline: 2px solid var(--fc-ink-soft); outline-offset: 2px; }
.aws-form .opts.is-error .opt { border-color: var(--fc-accent); }
.aws-form__policy { margin: 18px 0 0; font-size: 12px; line-height: 1.8; color: var(--fc-muted); text-align: center; }
.aws-form__policy a { color: var(--fc-ink-soft); }
.aws-form__alert { margin: 16px 0 0; padding: 12px 14px; border-radius: 6px; background: color-mix(in srgb, #C4A86C 8%, #fff); border: 1px solid color-mix(in srgb, #C4A86C 30%, #fff); font-size: 13px; font-weight: 500; color: var(--fc-accent-dark); text-align: center; }
.aws-form .submit { display: block; width: 100%; margin: 16px 0 0; padding: 18px 16px; border: 0; border-radius: 8px; background: var(--fc-cta); box-shadow: 0 4px 0 var(--fc-cta-dark); font-family: inherit; color: #1A1A1A; cursor: pointer; transition: transform .12s, box-shadow .12s, background-color .15s; }
.aws-form .submit:hover { background: color-mix(in srgb, #c3a550 88%, #fff); }
.aws-form .submit:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--fc-cta-dark); }
.aws-form .submit:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.aws-form .submit__main { display: block; font-size: 19px; font-weight: 900; letter-spacing: .02em; }
.aws-form .submit__sub { display: block; margin-top: 3px; font-size: 11px; font-weight: 400; opacity: .8; }
.aws-form .submit.is-sending { background: var(--fc-muted); box-shadow: 0 4px 0 color-mix(in srgb, var(--fc-muted) 70%, #000); pointer-events: none; }
/* 段contact-form S3-fix3：LINE/電話 導線を送信ボタン下（カード内）に統合。フォーム=主／LINE・電話=従（一回り控えめ）。
   区切り線は --fc-line（暗地/ライト追従）・区切り文言は --fc-muted。lead-row/.lead-btn は共通 contactLeadCss を流用（造形はそのまま・寸法だけ控えめに）。 */
.aws-form__alt { margin: 18px 0 0; padding-top: 18px; border-top: 1px solid var(--fc-line); text-align: center; }
.aws-form__alt-note { margin: 0 0 12px; font-size: 13px; color: var(--fc-muted); }
.aws-form__alt .lead-row { margin-top: 0; }
.aws-form__alt .lead-btn { min-height: 46px; padding: 0 20px; font-size: 14px; }
/* 受付番号（thanks）。破線囲み・強調は accent。 */
.aws-form .thx { max-width: 620px; margin: 0 auto; padding: 8px 24px 32px; border-radius: 10px; background: var(--fc-paper); }
.aws-form .thx__ttl { margin: 0 0 16px; padding-top: 28px; font-size: 24px; font-weight: 900; color: var(--fc-ink); }
.aws-form .thx__lead { margin: 0 0 24px; font-size: 15px; line-height: 1.9; color: var(--fc-ink); }
.aws-form .thx__ticket { margin: 0 0 24px; padding: 16px; border: 2px dashed var(--fc-line); border-radius: 8px; text-align: center; }
.aws-form .thx__ticket span { display: block; margin-bottom: 4px; font-size: 12px; letter-spacing: .06em; color: var(--fc-muted); }
.aws-form .thx__ticket strong { font-size: 22px; font-weight: 900; letter-spacing: .06em; color: var(--fc-accent); }
.aws-form .thx__steps { margin: 0 0 28px; padding: 0 0 0 1.2em; font-size: 14px; line-height: 2; color: var(--fc-ink); }
.aws-form .thx__back { display: inline-block; font-size: 14px; color: var(--fc-ink-soft); }
@media (min-width: 750px) {
  .aws-form { padding: 80px 24px 96px; }
  .aws-form__ttl { font-size: 36px; }
  .aws-form__lead { font-size: 15px; }
  .aws-form__body { padding: 12px 44px 32px; }
  .aws-form__foot { padding: 0 44px 40px; }
  .aws-form .fld { display: grid; grid-template-columns: 200px 1fr; gap: 24px; align-items: start; }
  .aws-form .fld--wide { grid-template-columns: 1fr; gap: 0; }
  .aws-form .fld__head { margin: 10px 0 0; align-content: start; }
  .aws-form .fld--wide .fld__head { margin: 0 0 10px; }
  /* 段contact-form S3-fix③：選択肢の折り返し解消。720px 上限＋200px ラベル併置では 4 列が狭く、日本語ラベル（例「できるだけ早く」）が細列で細切れ折り返しになる。2 列（timing は 2×2・自然に 1〜2 行）に。minmax(0,1fr) で min-width:auto のはみ出しも防止。 */
  .aws-form .opts--row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .aws-form .opt { font-size: 13.5px; padding: 12px; }
  .aws-form .thx { padding: 8px 44px 40px; }
  .aws-form .thx__ttl { font-size: 30px; }
}
@media (prefers-reduced-motion: reduce) { .aws-form * { transition: none !important; } }
@media (max-width: 768px) {
  /* 段F62-C⑦：モバイルヘッダー再設計。中央2段構え(flex-direction:column)を廃止し「社名 左・ナビ 右」の1行に。
     社名は 0.85rem・1行 ellipsis で左寄せ、ナビは右で横スクロール可（溢れても2段に折り返さない）＝高さを大幅圧縮。 */
  header { padding: 8px 14px; }
  .header-inner { flex-direction: row; align-items: center; gap: 10px; }
  .site-name { font-size: 0.85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 48vw; min-width: 0; flex-shrink: 1; }
  nav { flex: 1 1 auto; min-width: 0; display: flex; flex-wrap: nowrap; justify-content: flex-end; gap: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  /* 実効タップ領域を確保しつつ横は詰める（縦 12px×2＋行高≒42）。max-width で長い項目も潰さず省略。 */
  nav a { margin: 0; padding: 12px 8px; font-size: 0.8rem; max-width: 110px; flex: 0 0 auto; }
  .page-nav a { padding: 14px 0; }
  .faq-item summary { padding: 18px 20px; } .faq-a { padding: 0 20px 18px; }
}
/* 段F44①：SP(≤560px)ティア。768 の下に重ねる（768ルールは不変）。全グリッド1列・左右パディング最小・scroll indicator 非表示。 */
@media (max-width: 560px) {
  .section { padding-left: 16px; padding-right: 16px; }
  .hero { padding-left: 16px; padding-right: 16px; }
  .grid-3, .process-grid { grid-template-columns: 1fr; }
  .hero-scroll { display: none; }
  /* 段F67②：FV圧縮。stats は縦積みにせず横一列を維持（段F70-b：列は heroStats の chipMinWidth=96 auto-fit で 3列＝preview==export・ここでの ≤560 上書きは廃止）。 */
  .hero h1 { margin: 10px 0; }
  .hero .body { margin-bottom: 20px; }
}
/* hero 代替variant（split/centered/statement）。preview と同一の共通CSS（両側一致の単一の真実）。 */

.hero-alt { background: #FFFFFF; color: #1a1a1a; position: relative; overflow: hidden; }
/* 段F63②：eyebrow を金ピル造形に統一（immersive の hero-badge と同水準・accent 連動）。plain 白裸テキストを撤廃。 */
.hero-alt .hero-eyebrow { display: inline-flex; align-items: center; gap: 7px; padding: 7px 16px; border-radius: 100px; background: #C4A86C14; border: 1px solid #C4A86C33; color: #C4A86C; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 18px; }
.hero-alt h1 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-weight: 800; line-height: 1.2; color: #1a1a1a; white-space: pre-line; margin: 0 0 20px; }
.hero-alt .hero-body { font-size: clamp(1rem, 1.4vw, 1.15rem); line-height: 1.9; color: #555; white-space: pre-line; margin: 0 0 32px; }
/* 段F63②：CTA 造形は共有 .cta.is-primary（F56③ グラデ/矢印/シマー/adaptive text）に一任＝immersive と同一水準。ここでは地色上書きをしない（間隔のみ）。 */
.hero-alt .hero-cta { margin-top: 4px; }
/* 段F63②：第2ボタン（navItems 連動・F46② 同仕様）。地色連動＝light は accent 枠／media(暗幕) は白 ghost（immersive の .btn-hero-secondary と同水準）。 */
.hero-alt .hero-cta-secondary { display: inline-flex; align-items: center; gap: 6px; margin: 4px 0 0 12px; padding: 15px 30px; border-radius: 6px; font-size: 16px; font-weight: 700; letter-spacing: 0.02em; text-decoration: none; color: #C4A86C; background: transparent; border: 1px solid #C4A86C55; cursor: pointer; transition: background .2s, border-color .2s; }
.hero-alt .hero-cta-secondary:hover { background: #C4A86C0d; border-color: #C4A86C; }
.hero-alt.has-media .hero-cta-secondary { color: #fff; border-color: rgba(255,255,255,0.45); }
.hero-alt.has-media .hero-cta-secondary:hover { background: rgba(255,255,255,0.08); }
@media (prefers-reduced-motion: reduce) { .hero-alt .hero-cta-secondary { transition: none; } }
/* 段F63②：stats を chip 化（immersive HERO_STATS と同水準＝accent 値・チップ地・拡大）。値は全 variant で accent（金→白を撤廃）。 */
.hero-alt .hero-stats { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 40px; }
.hero-alt .hero-stat { padding: 16px 22px; border-radius: 14px; background: #C4A86C0d; border: 1px solid #C4A86C1f; }
.hero-alt .hero-stat-val { font-family: 'DM Sans', 'Inter', system-ui, -apple-system, sans-serif; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; font-size: clamp(1.9rem, 3.4vw, 2.8rem); font-weight: 900; color: #C4A86C; line-height: 1; letter-spacing: -0.01em; white-space: nowrap; } /* 段F70②：数字と単位を泣き別れさせない（全 hero variant 統一） */
/* 段F94：長い値（is-long）は段階縮小＋折返しで見切れ回避（短い値は is-long 非付与＝上の nowrap のまま＝従来不変・全 alt variant 統一）。 */
.hero-alt .hero-stat-val.is-long { font-size: clamp(0.85rem, 2.6vw, 1.5rem); line-height: 1.25; letter-spacing: normal; white-space: normal; overflow-wrap: anywhere; }
.hero-alt .hero-stat-label { font-size: 13px; color: #777; margin-top: 6px; overflow-wrap: anywhere; }
/* 段G16：背景画像（centered/statement で immersive 同等＝背景画像＋暗幕＋白文字）。画像が無い時は has-media を付けない＝上の白地値のまま（回帰ゼロ）。OVERLAY は immersive と同一リテラル＝両側一致。 */
.hero-alt-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
/* 段F40：暗幕を控えめに強化（0.35→0.45 / 0.6→0.65）＋body/eyebrow/stats に text-shadow（明るい画像でも可読）。 */
.hero-alt-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.65) 100%); z-index: 1; }
.hero-alt.has-media h1 { color: #fff; text-shadow: 0 2px 12px rgba(0,0,0,0.6); }
.hero-alt.has-media .hero-body { color: rgba(255,255,255,0.95); text-shadow: 0 1px 8px rgba(0,0,0,0.55); }
/* 段F63②：メディア上でも eyebrow は半透明ピル（白裸テキストにしない）・stats は暗チップに accent の値（金→白を撤廃）。 */
.hero-alt.has-media .hero-eyebrow { background: rgba(255,255,255,0.16); border-color: rgba(255,255,255,0.4); color: #fff; }
.hero-alt.has-media .hero-stat { background: rgba(0,0,0,0.3); border-color: rgba(255,255,255,0.18); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.hero-alt.has-media .hero-stat-val { color: #C4A86C; }
.hero-alt.has-media .hero-stat-label { color: rgba(255,255,255,0.85); text-shadow: 0 1px 6px rgba(0,0,0,0.5); }
.hero-alt.has-media.hero-centered::before { display: none; } /* 画像時は薄方眼グリッドを消す（暗幕下で不要） */
/* split */
.hero-split .hero-split-inner { max-width: 1200px; margin: 0 auto; padding: 96px 40px; display: flex; gap: 56px; align-items: center; }
.hero-split-text { flex: 1 1 50%; min-width: 0; }
.hero-split-text h1 { font-size: clamp(2rem, 3.6vw, 3.4rem); }
.hero-split-media { flex: 1 1 50%; min-width: 0; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; position: relative; background: linear-gradient(135deg, #C4A86C22 0%, #C4A86C0a 100%); }
.hero-split-media img, .hero-split-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 768px) { .hero-split .hero-split-inner { flex-direction: column; gap: 32px; padding: 64px 24px; } .hero-split-media { width: 100%; } }
/* centered */
.hero-centered { text-align: center; }
.hero-centered::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(#C4A86C06 1px, transparent 1px), linear-gradient(90deg, #C4A86C06 1px, transparent 1px); background-size: 64px 64px; }
.hero-centered .hero-centered-inner { position: relative; z-index: 2; max-width: 820px; margin: 0 auto; padding: 120px 40px; }
.hero-centered h1 { font-size: clamp(2.2rem, 4.6vw, 4rem); }
.hero-centered .hero-body { margin-left: auto; margin-right: auto; max-width: 600px; }
.hero-centered .hero-stats { justify-content: center; }
@media (max-width: 768px) { .hero-centered .hero-centered-inner { padding: 84px 24px; } }
/* statement */
.hero-statement .hero-statement-inner { position: relative; z-index: 2; max-width: 1000px; margin: 0 auto; padding: 120px 40px; }
.hero-statement .hero-accent-bar { width: 64px; height: 4px; background: #C4A86C; border-radius: 4px; margin-bottom: 28px; }
.hero-statement h1 { font-size: clamp(2.4rem, 5.6vw, 4.6rem); letter-spacing: -0.01em; }
@media (max-width: 768px) { .hero-statement .hero-statement-inner { padding: 84px 24px; } }
/* 段F44①⑧：SP(≤560px)ティア。hero-alt 各variant の左右パディング最小化＋stats を縦積み（768ルールは不変・下に重ねる）。 */
@media (max-width: 560px) {
  .hero-split .hero-split-inner { padding-left: 16px; padding-right: 16px; }
  .hero-centered .hero-centered-inner { padding-left: 16px; padding-right: 16px; }
  .hero-statement .hero-statement-inner { padding-left: 16px; padding-right: 16px; }
  .hero-alt .hero-stats { flex-direction: column; gap: 16px; }
}

/* testimonials（お客様の声）/ company（会社情報）。preview と同一の共通CSS。 */

/* PR表記（広告表示）バナー：ページ冒頭の控えめな帯（accent の薄い背景・小さめ・全幅）。視認できるが目立ち過ぎない。 */
.pr-banner { width: 100%; background: #C4A86C16; border-bottom: 1px solid #C4A86C40; color: var(--ground-body); font-size: 12px; line-height: 1.6; letter-spacing: 0.02em; text-align: center; padding: 9px 16px; }
.pr-banner b { color: #C4A86C; font-weight: 700; }
.parts-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: #C4A86C; margin: 0 0 10px; }
.parts-h2 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 800; color: var(--ground-text); line-height: 1.3; margin: 0; white-space: pre-line; }
/* testimonials（お客様の声）: カードグリッド */
.ts-sec { padding: 100px 40px; background: var(--ground-alt); }
.ts-inner { max-width: 1100px; margin: 0 auto; }
.ts-head { text-align: center; margin-bottom: 36px; }
.ts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.ts-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 14px; padding: 28px; box-shadow: var(--ground-shadow-md, none); }
.ts-rating { color: #C4A86C; font-size: 13px; letter-spacing: 2px; margin-bottom: 10px; }
.ts-quote { font-size: 15px; line-height: 1.9; color: var(--ground-body); margin: 0 0 16px; white-space: pre-line; }
.ts-name { font-size: 14px; font-weight: 700; color: var(--ground-text); }
.ts-role { font-size: 12px; color: var(--ground-muted); margin-top: 2px; }
@media (max-width: 768px) { .ts-sec { padding: 72px 20px; } }
/* team（社員紹介）: 顔写真カードグリッド。写真は usage="member-N"、無ければ頭文字プレースホルダ（偽の顔は出さない） */
.team-sec { padding: 100px 40px; background: var(--ground-base); }
.team-inner { max-width: 1100px; margin: 0 auto; }
.team-head { text-align: center; margin-bottom: 36px; }
.team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; }
.team-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 14px; padding: 28px 24px; text-align: center; box-shadow: var(--ground-shadow-md, none); }
.team-avatar { width: 96px; height: 96px; border-radius: 50%; overflow: hidden; margin: 0 auto 16px; background: #C4A86C1a; display: flex; align-items: center; justify-content: center; }
.team-avatar img { width: 100%; height: 100%; object-fit: cover; }
.team-avatar-ph { font-size: 36px; font-weight: 800; color: #C4A86C; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; line-height: 1; }
.team-name { font-size: 16px; font-weight: 700; color: var(--ground-text); }
.team-role { font-size: 12px; color: #C4A86C; font-weight: 600; margin-top: 4px; }
.team-comment { font-size: 13px; line-height: 1.8; color: var(--ground-body); margin: 12px 0 0; white-space: pre-line; }
@media (max-width: 768px) { .team-sec { padding: 72px 20px; } }
/* company（会社情報）: 表形式（ラベル/値） */
.co-sec { padding: 85px 40px; background: var(--ground-base); }
.co-inner { max-width: 820px; margin: 0 auto; }
.co-head { text-align: center; margin-bottom: 30px; }
.co-table { border-top: 1px solid var(--ground-border); }
.co-row { display: flex; gap: 24px; padding: 18px 8px; border-bottom: 1px solid var(--ground-border); }
.co-label { flex: 0 0 150px; font-size: 14px; font-weight: 700; color: #C4A86C; }
.co-value { flex: 1; min-width: 0; font-size: 15px; color: var(--ground-body); line-height: 1.7; white-space: pre-line; }
@media (max-width: 768px) { .co-sec { padding: 72px 20px; } .co-row { flex-direction: column; gap: 4px; } .co-label { flex-basis: auto; } }
/* pricing（料金）: カード型 */
.pr-sec { padding: 100px 40px; background: var(--ground-alt); }
.pr-inner { max-width: 1100px; margin: 0 auto; }
.pr-head { text-align: center; margin-bottom: 36px; }
.pr-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
/* 段F45③：カードを等高（グリッド行内で高さ揃え）。 */
.pr-card { position: relative; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 14px; padding: 32px 28px; display: flex; flex-direction: column; height: 100%; box-shadow: var(--ground-shadow-md, none); }
/* 段F60②：推しプラン（featured）＝accent 枠＋影＋わずかに拡大で主従を付ける。バッジは任意文言。 */
.pr-card.is-featured { border: 2px solid #C4A86C; box-shadow: 0 16px 48px #C4A86C25, var(--ground-feat-glow, 0 0 0 0 transparent); transform: scale(1.03); z-index: 1; }
.pr-badge { position: absolute; top: 0; right: 20px; transform: translateY(-50%); background: #C4A86C; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: 0.03em; padding: 5px 14px; border-radius: 100px; box-shadow: 0 4px 12px #C4A86C40; }
/* 段F60②：料金内訳を✓チェックリストに格上げ（existing description のまま・多行時のみ）。 */
.pr-feats { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pr-feats li { position: relative; padding-left: 26px; font-size: 14px; color: var(--ground-body); line-height: 1.7; white-space: pre-line; }
.pr-feats li::before { content: "\2713"; position: absolute; left: 0; top: 0; color: #C4A86C; font-weight: 900; }
.pr-name { font-size: 16px; font-weight: 700; color: var(--ground-text); margin: 0 0 12px; }
/* 段F45③：金額と付記を分離。金額(1行目)は大きく nowrap／付記(2行目以降)は小さくサブ行＝価格行の崩れ解消。 */
.pr-price { line-height: 1.2; margin: 0 0 12px; }
.pr-price-amount { display: block; font-family: 'DM Sans', 'Inter', system-ui, -apple-system, sans-serif; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; font-size: clamp(1.5rem, 2.4vw, 2rem); font-weight: 800; color: #C4A86C; letter-spacing: -0.01em; overflow-wrap: anywhere; word-break: auto-phrase; }
.pr-price-amount.is-long { font-size: clamp(1.05rem, 2.2vw, 1.4rem); line-height: 1.35; }
.pr-price-note { display: block; font-size: 12px; font-weight: 600; color: var(--ground-muted); margin-top: 4px; white-space: pre-line; }
.pr-desc { font-size: 14px; color: var(--ground-body); line-height: 1.8; margin: 0; white-space: pre-line; }
.pr-notes { max-width: 1100px; margin: 28px auto 0; font-size: 13px; color: var(--ground-muted); line-height: 1.8; white-space: pre-line; text-align: center; }
@media (max-width: 768px) { .pr-sec { padding: 72px 20px; } }
/* stats（数字で見る）: 大数字インフォグラフィック。value を大きく accent で・label を小さく。アイコンなし。 */
.stats-sec { padding: 125px 40px; background: #C4A86C0d; }
.stats-inner { max-width: 1100px; margin: 0 auto; }
.stats-head { text-align: center; margin-bottom: 36px; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 28px; }
.stats-item { text-align: center; }
.stats-val { font-family: 'DM Sans', 'Inter', system-ui, -apple-system, sans-serif; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; font-size: clamp(2.6rem, 6vw, 4.4rem); font-weight: 900; color: #C4A86C; line-height: 1; letter-spacing: -0.02em; overflow-wrap: anywhere; }
.stats-val .stats-unit { font-size: 0.42em; font-weight: 800; margin-left: 2px; }
/* 段F39：長い/レンジ/非数字始まりの stats 値は縮小＋折り返しで崩れ回避（短い数値は is-long 非付与＝従来のまま）。 */
.stats-val.is-long { font-size: clamp(1.05rem, 3vw, 1.7rem); line-height: 1.35; letter-spacing: normal; }
.stats-val.is-long .stats-unit { font-size: 0.88em; margin-left: 3px; }
/* 段F39：オプトイン本文（section.showBody=true 時に見出し直下へ）。色はセクションのテキスト色を継承（明/暗背景に追従）。 */
.section-body { font-size: 16px; line-height: 1.9; margin: 14px auto 0; max-width: 760px; white-space: pre-line; opacity: 0.82; }
.stats-label { font-size: 14px; color: var(--ground-body); font-weight: 700; margin-top: 12px; }
@media (max-width: 768px) { .stats-sec { padding: 72px 20px; } }
/* offer（限定オファー）: 希少性の視覚強調。通常価格は打ち消し・限定価格を大きく・枠/期限はバッジ（accent連動）。 */
.offer-sec { padding: 125px 40px; background: #C4A86C0d; }
.offer-inner { max-width: 760px; margin: 0 auto; }
.offer-card { background: var(--ground-card); border: 2px solid #C4A86C; border-radius: 16px; padding: 40px 32px; text-align: center; box-shadow: var(--ground-shadow-lg, 0 12px 40px rgba(0,0,0,0.08)); }
.offer-badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-bottom: 16px; }
.offer-badge { display: inline-block; background: #C4A86C; color: #fff; font-size: 13px; font-weight: 800; padding: 6px 16px; border-radius: 100px; letter-spacing: 0.03em; }
.offer-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: #C4A86C; margin: 0 0 10px; }
.offer-h2 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.6rem, 2.6vw, 2.2rem); font-weight: 800; color: var(--ground-text); line-height: 1.3; margin: 0 0 24px; white-space: pre-line; }
.offer-name { font-size: 16px; font-weight: 700; color: var(--ground-text); margin: 0 0 12px; }
.offer-prices { display: flex; align-items: baseline; justify-content: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.offer-normal { font-size: 18px; color: var(--ground-muted); text-decoration: line-through; }
.offer-price { font-size: clamp(2.2rem, 5vw, 3.4rem); font-weight: 900; color: #C4A86C; line-height: 1; }
/* 段F94：長い価格（is-long）は段階縮小＋折返しで見切れ回避（短い価格は非付与＝従来不変。pr-price-amount と同流儀）。 */
.offer-price.is-long { font-size: clamp(1.2rem, 3vw, 1.8rem); line-height: 1.35; overflow-wrap: anywhere; }
.offer-unit { font-size: 15px; color: var(--ground-body); font-weight: 700; }
.offer-items { list-style: none; padding: 0; margin: 24px auto 0; max-width: 480px; text-align: left; }
.offer-items li { font-size: 15px; color: var(--ground-body); line-height: 1.9; padding-left: 26px; position: relative; }
.offer-items li::before { content: "✓"; position: absolute; left: 0; color: #C4A86C; font-weight: 900; }
.offer-cta { display: inline-block; margin-top: 28px; background: #C4A86C; color: #fff; font-size: 16px; font-weight: 700; padding: 16px 40px; border-radius: 8px; text-decoration: none; }
@media (max-width: 768px) { .offer-sec { padding: 72px 20px; } .offer-card { padding: 32px 22px; } }
/* 段F36：価格アンカリング priceAnchor（single_direct で反復）。割引率(赤)→通常価格(打消)→割引価格→クーポン併用価格(最大強調・赤)→badges→CTA→但し書き。 */
.pa-sec { padding: 125px 40px; background: #C4A86C0a; }
.pa-inner { max-width: 620px; margin: 0 auto; }
.pa-card { background: var(--ground-card); border: 2px solid #C4A86C; border-radius: 16px; padding: 32px 28px; text-align: center; box-shadow: var(--ground-shadow-lg, 0 12px 40px rgba(0,0,0,0.08)); }
.pa-discount { display: inline-block; background: #DC2626; color: #fff; font-size: 18px; font-weight: 900; padding: 6px 20px; border-radius: 100px; letter-spacing: 0.03em; margin-bottom: 14px; }
.pa-normal { font-size: 18px; color: var(--ground-muted); text-decoration: line-through; margin-bottom: 2px; }
.pa-offer { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 800; color: var(--ground-body); line-height: 1.1; }
.pa-coupon { margin-top: 12px; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.pa-coupon-label { display: inline-block; background: #DC2626; color: #fff; font-size: 12px; font-weight: 800; padding: 3px 12px; border-radius: 6px; }
.pa-coupon-price { font-size: clamp(2.4rem, 6vw, 3.8rem); font-weight: 900; color: #DC2626; line-height: 1; }
.pa-unit { font-size: 15px; color: var(--ground-body); font-weight: 700; margin-left: 4px; }
.pa-badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 18px; }
.pa-badge { display: inline-block; background: #C4A86C14; color: #C4A86C; font-size: 12px; font-weight: 800; padding: 5px 14px; border-radius: 100px; }
.pa-cta { display: inline-block; margin-top: 24px; background: #C4A86C; color: #fff; font-size: 16px; font-weight: 700; padding: 16px 44px; border-radius: 8px; text-decoration: none; }
.pa-terms { font-size: 11px; color: var(--ground-muted); margin-top: 14px; line-height: 1.6; }
@media (max-width: 768px) { .pa-sec { padding: 56px 18px; } .pa-card { padding: 26px 18px; } }
/* 段F36：期限カウントダウン 追従バー（fixed/daily=時間・quota=静的）。画面下部に固定。 */
/* 段F44⑥：固定バーは iOS ホームインジケータ分だけ下に余白（safe-area）。本文がバーに隠れない body 側 padding-bottom は countdown 有効時のみ export で付与。 */
.cd-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; background: #DC2626; color: #fff; padding: 12px 20px; padding-bottom: calc(12px + env(safe-area-inset-bottom)); font-weight: 800; box-shadow: 0 -4px 20px rgba(0,0,0,0.15); }
.cd-label { font-size: 14px; }
.cd-time { font-size: 20px; font-variant-numeric: tabular-nums; letter-spacing: 0.04em; }
.cd-quota { font-size: 16px; }
@media (max-width: 768px) { .cd-bar { padding: 10px 14px; gap: 10px; } .cd-time { font-size: 17px; } }
/* 段G3：AI診断ブロック（.diag-*）。デザイントークン参照・F44基準（タップ44px/≤560で1カラム/はみ出しゼロ）を最初から満たす。preview/export 共有。 */
.diag-sec { padding: 125px 40px; background: #C4A86C0d; }
.diag-inner { max-width: 720px; margin: 0 auto; text-align: center; }
.diag-flow { margin-top: 32px; }
.diag-q { font-size: clamp(1.05rem, 2.4vw, 1.35rem); font-weight: 800; color: var(--ground-text); margin: 0 0 20px; line-height: 1.5; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
/* 段F61①：チャット風UI。質問＝bot 吹き出し／選んだ回答＝user 吹き出しが積み上がる。 */
.diag-chat { display: flex; flex-direction: column; gap: 12px; max-width: 560px; margin: 0 auto 22px; text-align: left; }
.diag-bubble { max-width: 88%; padding: 13px 17px; border-radius: 16px; font-size: 15px; font-weight: 700; line-height: 1.6; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; white-space: pre-line; animation: diag-pop .32s cubic-bezier(.16,1,.3,1) both; }
.diag-bubble.is-bot { align-self: flex-start; background: var(--ground-card); border: 1px solid #C4A86C2e; color: var(--ground-text); border-bottom-left-radius: 5px; }
.diag-bubble.is-user { align-self: flex-end; background: #C4A86C; color: #fff; border-bottom-right-radius: 5px; }
@keyframes diag-pop { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.diag-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; max-width: 560px; margin: 0 auto; }
.diag-opt { display: block; width: 100%; min-height: 56px; padding: 15px 18px; background: var(--ground-card); border: 2px solid #C4A86C33; border-radius: 12px; font-size: 15px; font-weight: 700; color: var(--ground-text); font-family: 'Shippori Mincho', 'Noto Serif JP', serif; cursor: pointer; transition: border-color .15s, background .15s, transform .1s; }
.diag-opt:hover { border-color: #C4A86C; background: #C4A86C0a; }
.diag-opt:active { transform: scale(0.98); }
.diag-analyzing { padding: 28px 0; }
/* 段F61①：スキャン風プログレス（タイピング演出に視覚を追加）。reduced-motion では静止バーに退避。 */
.diag-scan { position: relative; height: 6px; max-width: 320px; margin: 0 auto 18px; border-radius: 100px; background: #C4A86C1f; overflow: hidden; }
.diag-scan::after { content: ""; position: absolute; top: 0; bottom: 0; left: -42%; width: 42%; border-radius: 100px; background: linear-gradient(90deg, transparent, #C4A86C, transparent); animation: diag-scan-move 1.15s ease-in-out infinite; }
@keyframes diag-scan-move { to { left: 100%; } }
.diag-spinner { width: 48px; height: 48px; margin: 0 auto 20px; border: 4px solid #C4A86C22; border-top-color: #C4A86C; border-radius: 50%; animation: diag-spin 0.8s linear infinite; }
@keyframes diag-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .diag-spinner { animation: none; } .diag-bubble { animation: none; } .diag-scan::after { animation: none; left: 0; width: 100%; opacity: 0.35; } }
.diag-aline { font-size: 15px; color: var(--ground-body); min-height: 1.5em; font-family: 'DM Sans', monospace; letter-spacing: 0.02em; }
/* 段F61①：結果カードを pr-card 級に格上げ（おすすめバッジ）。 */
.diag-result-card { position: relative; background: var(--ground-card); border: 2px solid #C4A86C; border-radius: 16px; padding: 32px 28px; box-shadow: var(--ground-shadow-lg, 0 16px 48px #C4A86C20); }
.diag-badge { display: inline-block; background: #C4A86C; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; padding: 5px 14px; border-radius: 100px; margin-bottom: 14px; box-shadow: 0 4px 12px #C4A86C40; }
.diag-result-eyebrow { font-size: 12px; font-weight: 800; letter-spacing: 0.2em; text-transform: uppercase; color: #C4A86C; margin: 0 0 12px; }
.diag-plan-name { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.5rem, 4vw, 2.2rem); font-weight: 900; color: var(--ground-text); line-height: 1.2; }
.diag-plan-price { font-size: clamp(1.2rem, 3vw, 1.6rem); font-weight: 800; color: #C4A86C; margin-top: 8px; }
.diag-plan-desc { font-size: 15px; color: var(--ground-body); line-height: 1.9; margin: 14px 0 0; white-space: pre-line; }
.diag-reason { font-size: 14px; color: var(--ground-body); line-height: 1.8; margin: 16px 0 0; padding: 14px 16px; background: #C4A86C0d; border-radius: 10px; text-align: left; white-space: pre-line; }
.diag-cta { display: inline-block; margin-top: 24px; background: #C4A86C; color: #fff; font-size: 16px; font-weight: 700; padding: 15px 44px; min-height: 44px; box-sizing: border-box; border-radius: 8px; text-decoration: none; }
.diag-restart { display: inline-block; margin-top: 16px; background: none; border: none; color: #C4A86C; font-size: 13px; font-weight: 700; cursor: pointer; padding: 10px; text-decoration: underline; }
@media (max-width: 768px) { .diag-sec { padding: 72px 20px; } }
@media (max-width: 560px) { .diag-sec { padding: 56px 16px; } .diag-opts { grid-template-columns: 1fr; } .diag-result-card { padding: 24px 18px; } }
/* access（アクセス/地図）: 地図iframe＋住所＋アクセス方法 */
.ac-sec { padding: 85px 40px; background: var(--ground-base); }
.ac-inner { max-width: 900px; margin: 0 auto; }
.ac-head { text-align: center; margin-bottom: 30px; }
/* 段Tier1-D(D)/Tier1-D-fix：地図の額装。内側マット(地色連動 var(--ground-card)＋10px)で枠に収め、暗地では var(--ground-map-filter) で彩度/明度を落として馴染ませる（invert 不使用＝ラベル可読）。iframe 操作性は不変。
   ★fix：iframe は置換要素のため inset だけでは intrinsic サイズ(≈300×150)のまま伸長しない。10px マットを差し引いた明示サイズ(width/height=calc(100% - 20px))で内側を常に満たす（D 前の width/height:100% と同じ「明示サイズで fill」を額装 inset 込みで踏襲）。 */
.ac-map { position: relative; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden; border: 1px solid var(--ground-border); background: var(--ground-card); }
.ac-map iframe { position: absolute; top: 10px; left: 10px; width: calc(100% - 20px); height: calc(100% - 20px); border: 0; border-radius: 8px; filter: var(--ground-map-filter, none); }
.ac-address { margin-top: 20px; font-size: 16px; font-weight: 700; color: var(--ground-text); }
.ac-directions { margin-top: 8px; font-size: 14px; color: var(--ground-body); line-height: 1.8; white-space: pre-line; }
@media (max-width: 768px) { .ac-sec { padding: 72px 20px; } .ac-map { aspect-ratio: 4 / 3; } }
/* hours（営業時間）: 段F62-B⑤ pr-card 級カード＋定休日ハイライト（JS不要・データ駆動） */
.hours-sec { padding: 100px 40px; background: var(--ground-base); }
.hours-inner { max-width: 640px; margin: 0 auto; }
.hours-head { text-align: center; margin-bottom: 30px; }
.hours-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; box-shadow: var(--ground-shadow-lg, 0 12px 40px rgba(0,0,0,0.06)); padding: 8px 24px; }
.hours-table { width: 100%; border-collapse: collapse; }
.hours-table tr { border-bottom: 1px solid var(--ground-border); }
.hours-table tr:last-child { border-bottom: none; }
.hours-table tr.is-closed { background: #C4A86C08; }
.hours-day { padding: 16px 8px; font-size: 15px; font-weight: 700; color: var(--ground-text); white-space: nowrap; }
.hours-table tr.is-closed .hours-day { color: var(--ground-muted); }
.hours-time { padding: 16px 8px; font-size: 15px; font-weight: 600; color: var(--ground-body); text-align: right; }
.hours-closed-badge { display: inline-block; background: #C4A86C1a; color: #C4A86C; font-size: 12px; font-weight: 800; letter-spacing: 0.04em; padding: 3px 12px; border-radius: 100px; }
.hours-note { padding: 0 8px 14px; font-size: 13px; color: #C4A86C; text-align: right; }
@media (max-width: 768px) { .hours-sec { padding: 72px 20px; } .hours-card { padding: 4px 16px; } }
/* 段F62-B⑥：News/お知らせ（日付＋タイトルのリスト・リンクなし静的・データ駆動） */
.news-sec { padding: 85px 40px; background: var(--ground-alt); }
.news-inner { max-width: 760px; margin: 0 auto; }
.news-head { text-align: center; margin-bottom: 36px; }
.news-list { display: flex; flex-direction: column; }
.news-item { display: flex; gap: 22px; padding: 20px 4px; border-bottom: 1px solid var(--ground-border); align-items: baseline; }
.news-item:first-child { border-top: 1px solid var(--ground-border); }
.news-date { flex: 0 0 auto; min-width: 104px; font-size: 13px; font-weight: 800; color: #C4A86C; font-family: 'DM Sans', monospace; letter-spacing: 0.02em; }
.news-body-wrap { min-width: 0; }
.news-title { font-size: 15px; font-weight: 700; color: var(--ground-text); line-height: 1.6; }
.news-desc { font-size: 14px; color: var(--ground-body); line-height: 1.8; margin-top: 6px; white-space: pre-line; }
@media (max-width: 768px) { .news-sec { padding: 72px 20px; } }
@media (max-width: 560px) { .news-item { flex-direction: column; gap: 4px; padding: 16px 2px; } .news-date { min-width: 0; } }
/* menu（メニュー表）: カテゴリ＋品目行（名前 … 価格／説明） */
.menu-sec { padding: 100px 40px; background: var(--ground-alt); }
.menu-inner { max-width: 820px; margin: 0 auto; }
.menu-head { text-align: center; margin-bottom: 36px; }
.menu-cat { margin-bottom: 36px; }
.menu-cat-title { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 18px; font-weight: 800; color: #C4A86C; margin: 0 0 16px; padding-bottom: 8px; border-bottom: 2px solid #C4A86C; }
.menu-item { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 12px 0; border-bottom: 1px dashed var(--ground-border); }
.menu-item-name { font-size: 16px; font-weight: 700; color: var(--ground-text); }
.menu-item-desc { font-size: 13px; color: var(--ground-muted); margin: 4px 0 0; line-height: 1.7; }
.menu-item-price { font-size: 16px; font-weight: 700; color: #C4A86C; white-space: nowrap; }
/* 段F95②：料理写真つき品目行（サムネイル＋本文＋価格）。写真なし行(.menu-item)は上のまま＝byte 不変。混在レイアウト対応。 */
.menu-item.has-thumb { align-items: center; }
.menu-item-thumb { width: 72px; height: 72px; flex: 0 0 72px; object-fit: cover; border-radius: 8px; background: var(--ground-alt); }
.menu-item-main { flex: 1 1 auto; min-width: 0; }
/* 段F95①：ダイジェスト→専用ページの「全て見る」CTA。 */
.menu-more { text-align: center; margin-top: 28px; }
.menu-see-all { display: inline-flex; align-items: center; gap: 6px; }
@media (max-width: 480px) { .menu-item-thumb { width: 56px; height: 56px; flex-basis: 56px; } }
@media (max-width: 768px) { .menu-sec { padding: 72px 20px; } }
/* gallery（写真集）: 画像グリッド（caption 任意） */
.gallery-sec { padding: 100px 40px; background: var(--ground-base); }
.gallery-inner { max-width: 1100px; margin: 0 auto; }
.gallery-head { text-align: center; margin-bottom: 36px; }
.gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.gallery-item { position: relative; border-radius: 12px; overflow: hidden; background: #f3f3f3; border: 1px solid var(--ground-border); }
.gallery-item img { display: block; width: 100%; height: 220px; object-fit: cover; }
.gallery-ph { display: flex; align-items: center; justify-content: center; height: 220px; color: #C4A86C; font-size: 13px; font-weight: 700; background: #C4A86C10; }
.gallery-cap { padding: 10px 12px; font-size: 13px; color: var(--ground-body); line-height: 1.6; }
@media (max-width: 768px) { .gallery-sec { padding: 72px 20px; } .gallery-item img, .gallery-ph { height: 180px; } }
/* 段F44①：SP(≤560px)ティア。parts 系グリッドを1列化＋左右パディング16px（768ルールは不変・下に重ねる）。compare(.cmp-*)は @container 対応済みのため対象外。 */
@media (max-width: 560px) {
  .ts-grid, .team-grid, .pr-grid, .stats-grid, .gallery-grid { grid-template-columns: 1fr; }
  .ts-sec, .team-sec, .co-sec, .pr-sec, .stats-sec, .offer-sec, .pa-sec, .ac-sec, .hours-sec, .menu-sec, .gallery-sec { padding-left: 16px; padding-right: 16px; }
}
/* comparison（比較ランキング）: 縦カード */
.cmp-sec { padding: 100px 40px; background: var(--ground-alt); }
/* 段G14：ヒーロー直下の各社ロゴ帯（左方向 無限スクロール・CSS-only・JS不要・listing 限定）。set×2 で translateX(-50%) シームレス。 */
.cmp-logobar { overflow: hidden; background: var(--ground-alt); padding: 14px 0; border-top: 1px solid var(--ground-border); border-bottom: 1px solid var(--ground-border); }
.cmp-logobar-track { display: flex; width: max-content; align-items: center; animation: cmp-logobar-scroll 20s linear infinite; will-change: transform; }
/* 段F-logospeed：流速の X側選択。base(20s=normal)は不変・fast/slow は data-speed で animation-duration を上書き（CSS-only）。 */
.cmp-logobar[data-speed="fast"] .cmp-logobar-track { animation-duration: 12s; }
.cmp-logobar[data-speed="slow"] .cmp-logobar-track { animation-duration: 32s; }
.cmp-logobar:hover .cmp-logobar-track { animation-play-state: paused; }
/* 段G14b：間隔は item の margin-right で取る（flex gap だと set×2 の境界が半端になり -50% がズレる＝変な位置から動く。cs-marquee と同方式）。 */
.cmp-logobar-item { flex: 0 0 auto; height: 64px; width: 140px; margin-right: 40px; display: flex; align-items: center; justify-content: center; border-radius: 6px; overflow: hidden; }
.cmp-logobar-item img { max-width: 100%; max-height: 100%; object-fit: contain; }
.cmp-logobar-ph { font-size: 26px; font-weight: 800; }
@keyframes cmp-logobar-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .cmp-logobar-track { animation: none; overflow-x: auto; width: 100%; flex-wrap: wrap; gap: 16px; padding: 0 16px; } .cmp-logobar-item { margin-right: 0; } }
/* 段F1-4：compare 全体のクエリ容器。@container がコンテナ幅で効く＝preview の PC/Tab/SP トグル（コンテナ幅絞り）でも実機でも一致。 */
.cmp-inner { max-width: 880px; margin: 0 auto; container-type: inline-size; container-name: cmp; }
.cmp-head { text-align: center; margin-bottom: 36px; }
.cmp-list { display: flex; flex-direction: column; gap: 20px; }
.cmp-card { position: relative; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 28px 28px 24px; box-shadow: var(--ground-shadow-sm, 0 2px 14px rgba(0,0,0,0.04)); }
/* 順位強調：1位はカードを強調（枠＝accent・影強め）。2/3位はバッジ色の濃淡で段階（金銀銅っぽく・派手にしない）。 */
.cmp-card-top { border: 2px solid #C4A86C; box-shadow: 0 6px 24px #C4A86C26; }
.cmp-rank { position: absolute; top: -14px; left: 24px; min-width: 52px; height: 32px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: center; background: #C4A86C; color: #fff; font-weight: 800; font-size: 14px; border-radius: 16px; box-shadow: 0 2px 8px rgba(0,0,0,0.12); }
.cmp-rank-1 { background: #C4A86C; height: 36px; min-width: 60px; font-size: 16px; }
.cmp-rank-2 { background: #C4A86CCC; }
.cmp-rank-3 { background: #C4A86C99; }
/* 星評価（rating→★）：薄い空行＋濃い塗り行を重ね、塗りを width(%) でクリップ＝半星も正確。静的・accent 連動。 */
.cmp-stars { display: inline-flex; align-items: center; vertical-align: middle; }
.cmp-stars-row { position: relative; display: inline-block; line-height: 0; white-space: nowrap; }
/* 空（base 層）＝中立の淡色。塗り（fill 層）＝SVG の金グラデ（fill="url(#cmpGoldStar)"）＝色固定・パレット非連動。 */
.cmp-stars-base { color: #E8DFD0; display: inline-block; }
.cmp-stars-fill { position: absolute; top: 0; left: 0; overflow: hidden; display: inline-block; }
.cmp-stars-fill svg, .cmp-stars-base svg { display: inline-block; }
.cmp-stars-num { margin-left: 6px; font-size: 13px; font-weight: 800; color: #C8881C; }
.cmp-top { display: flex; align-items: center; gap: 16px; margin-bottom: 14px; }
.cmp-logo { width: 120px; height: 56px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: var(--ground-alt); border: 1px solid var(--ground-border); border-radius: 8px; overflow: hidden; }
.cmp-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
/* 段G9：ロゴ未設定（生成前/失敗）のフォールバックを「ブランド色バッジ」化＝社名頭文字を accent 淡塗り＋accent 文字で
   意図的な見た目に（実画像 .cmp-detail-logo>img は別経路＝object-fit:contain のまま非干渉）。色は accent 変数＝業種非依存。 */
.cmp-logo-ph { font-weight: 800; color: #C4A86C; font-size: 22px; line-height: 1; background: #C4A86C14; }
.cmp-detail-logo.cmp-logo-ph { font-size: 36px; letter-spacing: 0.02em; border-color: #C4A86C40; }
.cmp-name { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 20px; font-weight: 800; color: var(--ground-text); line-height: 1.3; margin: 0; }
.cmp-metrics { display: flex; flex-wrap: wrap; gap: 10px 20px; margin-top: 6px; }
.cmp-metric { font-size: 14px; color: var(--ground-body); }
.cmp-metric b { color: #C4A86C; font-size: 17px; font-weight: 800; }
.cmp-point { font-size: 15px; color: var(--ground-body); line-height: 1.8; margin: 0 0 14px; font-weight: 600; }
/* 段G10：各軸の「ラベル＋値」スペック。長い軸名(nowrap)が横並びで値の幅を奪い縦細切れになっていたため、
   ラベル上／値下の縦積みにして値にセル全幅を与える（細切れ解消）。列は少し広げて2列を維持。preview/export 共有CSS。 */
.cmp-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px 18px; margin: 0 0 18px; padding: 0; list-style: none; }
.cmp-feature { font-size: 13px; color: var(--ground-body); display: flex; flex-direction: column; gap: 2px; border-bottom: 1px dashed var(--ground-border); padding: 6px 0; min-width: 0; }
.cmp-feature .cmp-flabel { color: #C4A86C; font-weight: 700; }
.cmp-feature > span:last-child { overflow-wrap: break-word; }
/* 段G10b-1：カード CTA を横幅フルボタン化（inline-flex→flex・width:100%・中央寄せ）。文字幅依存をやめ最下部の太い導線に。 */
.cmp-cta { display: flex; width: 100%; align-items: center; justify-content: center; gap: 6px; background: #C4A86C; color: #fff; text-decoration: none; font-weight: 700; font-size: 15px; padding: 14px 28px; border-radius: 10px; }
.cmp-cta:hover { opacity: 0.92; }
@media (max-width: 768px) { .cmp-sec { padding: 72px 20px; } .cmp-top { flex-direction: column; align-items: flex-start; } .cmp-logo { width: 100px; height: 48px; } }
/* comparison table（比較表＝各社×観点マトリクス） */
.cmp-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cmp-table { width: 100%; border-collapse: collapse; min-width: 640px; background: var(--ground-card); }
.cmp-table th, .cmp-table td { padding: 12px 14px; text-align: center; border-bottom: 1px solid var(--ground-border); font-size: 14px; vertical-align: middle; color: var(--ground-text); font-weight: 600; line-break: strict; overflow-wrap: break-word; word-break: keep-all; }
/* F-pricing-br：料金セルは自動折返しを止め、ユーザー入力の改行(<br>)位置だけで改行＝表記の乱れ解消。長値は .cmp-table-wrap の横スクロールで吸収。 */
.cmp-table td[data-tab="pricing"] { white-space: nowrap; }
.cmp-table thead th { background: #C4A86C; color: #fff; font-weight: 700; }
.cmp-table tbody tr:nth-child(even) { background: var(--ground-alt); }
.cmp-table .cmp-t-rank { font-weight: 800; color: #C4A86C; white-space: nowrap; }
.cmp-table .cmp-t-name { font-weight: 700; color: var(--ground-text); white-space: nowrap; }
.cmp-table .cmp-t-logo { width: 88px; height: 36px; object-fit: contain; display: block; margin: 0 auto; }
.cmp-table .cmp-t-cta { display: inline-block; background: #C4A86C; color: #fff; text-decoration: none; font-weight: 700; font-size: 13px; padding: 7px 14px; border-radius: 8px; white-space: nowrap; }
.cmp-table .cmp-t-empty { color: var(--ground-muted); }
/* listing 併載表のカード枠（detailカードと同じ枠に収めて“浮き”を解消・listing 限定で付与＝seo table 単独は不変）。 */
.cmp-table-card { position: relative; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 24px; box-shadow: var(--ground-shadow-sm, 0 2px 14px rgba(0,0,0,0.04)); margin-bottom: 28px; }
.cmp-table-label { font-size: 13px; font-weight: 700; letter-spacing: 0.08em; color: #C4A86C; margin: 0 0 14px; }
/* 段G10a：比較表タブ（列切替・CSS-only・radio＋:checked＋兄弟結合子~）。radio/タブ/テーブルは .cmp-tab-block 直下の兄弟。preview/export 共有CSS。 */
.cmp-ctab-radio { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.cmp-ctab-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--ground-border); margin-bottom: 14px; }
.cmp-ctab-tab { padding: 10px 20px; font-size: 14px; font-weight: 600; color: var(--ground-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; user-select: none; white-space: nowrap; }
/* アクティブタブ（同 index の radio:checked）。 */
.cmp-ctab-radio:nth-of-type(1):checked ~ .cmp-ctab-tabs .cmp-ctab-tab:nth-of-type(1),
.cmp-ctab-radio:nth-of-type(2):checked ~ .cmp-ctab-tabs .cmp-ctab-tab:nth-of-type(2),
.cmp-ctab-radio:nth-of-type(3):checked ~ .cmp-ctab-tabs .cmp-ctab-tab:nth-of-type(3) { color: #C4A86C; border-bottom-color: #C4A86C; }
/* 非アクティブタブの列を非表示（th/td 個別 display:none＝列が畳まれる）。1=総合/2=料金/3=口コミ。 */
.cmp-ctab-radio:nth-of-type(1):checked ~ .cmp-table-wrap [data-tab="pricing"],
.cmp-ctab-radio:nth-of-type(1):checked ~ .cmp-table-wrap [data-tab="review"] { display: none; }
.cmp-ctab-radio:nth-of-type(2):checked ~ .cmp-table-wrap [data-tab="score"],
.cmp-ctab-radio:nth-of-type(2):checked ~ .cmp-table-wrap [data-tab="review"] { display: none; }
.cmp-ctab-radio:nth-of-type(3):checked ~ .cmp-table-wrap [data-tab="score"],
.cmp-ctab-radio:nth-of-type(3):checked ~ .cmp-table-wrap [data-tab="pricing"] { display: none; }
.cmp-ctab-radio:focus-visible ~ .cmp-ctab-tabs .cmp-ctab-tab { outline: 2px solid #C4A86C; outline-offset: 2px; }
.cmp-t-max { font-size: 11px; font-weight: 700; color: var(--ground-muted); margin-left: 1px; }
.cmp-t-revcount { font-size: 11px; color: var(--ground-muted); margin-top: 2px; }
/* 段G15：口コミ単一列の各行＝デモグラ小ラベル＋本文。列分割をやめ歯抜けを解消（preview/export 共有CSS）。 */
.cmp-t-revline { margin: 0 0 6px; }
.cmp-t-revline:last-child { margin-bottom: 0; }
.cmp-t-revattr { display: inline-block; font-size: 10px; font-weight: 700; color: #C4A86C; background: #C4A86C14; border-radius: 4px; padding: 1px 6px; margin-right: 6px; }
@container cmp (max-width: 640px) { .cmp-ctab-tabs { overflow-x: auto; white-space: nowrap; } }
/* 段2a：各社レーダー（6軸・listing 限定で出力）。中央寄せ・レスポンシブ。preview/export 共有CSS。 */
.cmp-radar { text-align: center; margin: 14px auto 4px; max-width: 340px; }
.cmp-radar-svg { width: 100%; max-width: 100%; height: auto; }
/* 段G10b-2：カード上部3カラム＝左 キャッチ＋POINT / 中 大レーダー / 右 絞り込み条件。SCORE は3colの外（下段全幅）。
   罫線で区切る理想系（左1fr・中320px・右160px）。border/textSub は中立グレー literal＝業種非依存。preview/export 共有CSS。 */
/* 段G11：カード上部2カラム＝左 キャッチ＋POINT / 右 大レーダー。右の絞り込み条件は廃止し radar を主役に拡大。 */
.cmp-card-2col { display: grid; grid-template-columns: 1fr minmax(360px, 520px); gap: 0; border-top: 1px solid var(--ground-border); border-bottom: 1px solid var(--ground-border); margin: 14px 0; }
.cmp-c3-left { padding: 16px 16px; border-right: 1px solid var(--ground-border); min-width: 0; }
.cmp-c3-mid { padding: 14px 12px; display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 0; }
/* 段G11/G17：2カラム中はレーダーを主役に拡大（G17: 440→520）。.cmp-radar 本体は SVG が幅にフィット。 */
/* F-radar-width：c3-mid は align-items:center で縮小フィット＝width 無しだと中身(SVG width=200)に縮む。
   width:100% で列幅まで広げる（max-width:520 でキャップ）＝ラベル可読化。基底 .cmp-radar/SVG 属性は不変。 */
.cmp-c3-mid .cmp-radar { max-width: 520px; width: 100%; margin: 0 auto; }
/* 段G10b-2：総合スコア（ヘッダー右端）。 */
.cmp-overall { text-align: right; flex-shrink: 0; }
.cmp-overall-num { font-size: 26px; font-weight: 800; color: #C4A86C; }
.cmp-overall-unit { font-size: 12px; color: var(--ground-muted); }
.cmp-overall-label { font-size: 11px; color: var(--ground-muted); margin-top: 2px; }
/* 段2b：各社バナー画像（comp-banner-N・listing 限定）。preview/export 共有CSS。 */
.cmp-banner { margin: -32px -32px 18px; border-radius: 16px 16px 0 0; overflow: hidden; }
.cmp-banner img { width: 100%; height: auto; display: block; max-height: 160px; object-fit: cover; }
/* 段2e/F1-4：scores 各軸の数値列（「N/5＋軸名」・listing 限定）。RAM パターン（auto-fit＋minmax(min(100%,..)))で
   狭幅は自動1列・広幅は2列＝@media非依存でコンテナ幅に追従（長い軸名でも縦リズムを保つ）。 */
.cmp-scorenum { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); gap: 10px 16px; margin: 4px 0 16px; }
.cmp-score-head { grid-column: 1 / -1; font-size: 13px; font-weight: 700; letter-spacing: 0.04em; color: #C4A86C; margin: 0 0 2px; }
.cmp-scorenum-row { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.cmp-scorenum-val { font-size: 20px; font-weight: 900; line-height: 1; letter-spacing: -0.02em; color: var(--ground-text); font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-scorenum-max { font-size: 12px; font-weight: 700; color: var(--ground-muted); margin-left: 1px; }
.cmp-scorenum-label { font-size: 13px; color: var(--ground-body); }
/* 段2b/G1：points 強み箇条（listing 限定）＋POINT見出し（SCORE/VOICE と同体裁・ブロックで余白を持つ）。 */
.cmp-points-block { margin: 14px 0; }
.cmp-point-head { font-size: 13px; font-weight: 700; letter-spacing: 0.04em; color: #C4A86C; margin: 0 0 8px; }
.cmp-points { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cmp-point-item { position: relative; padding-left: 22px; font-size: 13.5px; line-height: 1.7; color: var(--ground-body); }
.cmp-point-item::before { content: "✓"; position: absolute; left: 0; top: 0; color: #C4A86C; font-weight: 800; }
/* 段3d：診断UI＝条件で絞り込む（CSS-only・OR マルチ選択・:has()＋:nth-of-type・JS非依存・listing 限定）。preview/export 共有CSS。 */
/* 段F15：一流比較サイト水準の整列トグル（CSS-only・HTML/DOM順不変＝:has()/nth-of-type/~ の絞り込み機構は下部で温存）。 */
.cmp-filter { margin: 40px auto 12px; max-width: 860px; text-align: left; }
.cmp-filter-head { font-size: clamp(1.15rem, 2vw, 1.5rem); font-weight: 800; color: var(--ground-text); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 2px solid var(--ground-border); font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-filter-cond-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
/* 条件＝Grid 整列のトグルセル（左寄せ・□チェックボックス付き）。 */
.cmp-filter-conds { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px; margin-bottom: 20px; }
.cmp-filter-cond { position: relative; display: flex; align-items: center; gap: 10px; text-align: left; font-size: 14px; font-weight: 700; color: var(--ground-body); background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 10px; padding: 12px 14px; cursor: pointer; user-select: none; transition: border-color .15s, background .15s, box-shadow .15s; }
.cmp-filter-cond:hover { border-color: #C4A86C; box-shadow: 0 1px 8px rgba(0,0,0,0.06); }
/* □チェックボックス（未選択）。選択時は下部の active ルールで ✓ 化＋塗り。 */
.cmp-filter-cond::before { content: ""; flex: 0 0 auto; width: 18px; height: 18px; border: 2px solid var(--ground-border); border-radius: 5px; background: var(--ground-card); box-sizing: border-box; font-size: 13px; font-weight: 900; line-height: 15px; text-align: center; color: transparent; }
/* 残った社チップも Grid 整列。 */
.cmp-filter-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.cmp-filter-item { display: block; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 10px; padding: 10px 14px; font-weight: 700; color: var(--ground-body); box-shadow: 0 1px 6px rgba(0,0,0,0.03); text-align: center; }
/* いずれかの条件が選択されたら一旦全隠し（:has 非対応環境では無効＝全表示のまま安全劣化）。 */
.cmp-filter:has(.cmp-filter-cond-input:checked) .cmp-filter-item { display: none; }
/* チェックした条件 n に該当する社（.cmp-fhas-{n-1}）を高詳細度で再表示（OR）。最大10条件。 */
.cmp-filter-cond-input:nth-of-type(1):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-0,
.cmp-filter-cond-input:nth-of-type(2):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-1,
.cmp-filter-cond-input:nth-of-type(3):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-2,
.cmp-filter-cond-input:nth-of-type(4):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-3,
.cmp-filter-cond-input:nth-of-type(5):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-4,
.cmp-filter-cond-input:nth-of-type(6):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-5,
.cmp-filter-cond-input:nth-of-type(7):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-6,
.cmp-filter-cond-input:nth-of-type(8):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-7,
.cmp-filter-cond-input:nth-of-type(9):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-8,
.cmp-filter-cond-input:nth-of-type(10):checked ~ .cmp-filter-results .cmp-filter-item.cmp-fhas-9 { display: block; }
/* チェックした条件チップをアクティブ配色に。 */
.cmp-filter-cond-input:nth-of-type(1):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(1),
.cmp-filter-cond-input:nth-of-type(2):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(2),
.cmp-filter-cond-input:nth-of-type(3):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(3),
.cmp-filter-cond-input:nth-of-type(4):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(4),
.cmp-filter-cond-input:nth-of-type(5):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(5),
.cmp-filter-cond-input:nth-of-type(6):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(6),
.cmp-filter-cond-input:nth-of-type(7):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(7),
.cmp-filter-cond-input:nth-of-type(8):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(8),
.cmp-filter-cond-input:nth-of-type(9):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(9),
.cmp-filter-cond-input:nth-of-type(10):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(10) { background: #C4A86C; color: #fff; border-color: #C4A86C; }
/* 段F15：選択された条件の □→✓ 化＋白ボックス（選択状態を一目で・既存の nth-of-type 機構を流用）。 */
.cmp-filter-cond-input:nth-of-type(1):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(1)::before,
.cmp-filter-cond-input:nth-of-type(2):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(2)::before,
.cmp-filter-cond-input:nth-of-type(3):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(3)::before,
.cmp-filter-cond-input:nth-of-type(4):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(4)::before,
.cmp-filter-cond-input:nth-of-type(5):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(5)::before,
.cmp-filter-cond-input:nth-of-type(6):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(6)::before,
.cmp-filter-cond-input:nth-of-type(7):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(7)::before,
.cmp-filter-cond-input:nth-of-type(8):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(8)::before,
.cmp-filter-cond-input:nth-of-type(9):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(9)::before,
.cmp-filter-cond-input:nth-of-type(10):checked ~ .cmp-filter-conds .cmp-filter-cond:nth-of-type(10)::before { content: "✓"; background: var(--ground-card); border-color: #fff; color: #C4A86C; }
/* 段F16：2次元カテゴリ絞り込み表（CSS-only・1D-OR・:has(#id) で DOM入れ子でも動作＝別名前空間・段F11/F15 と非干渉）。preview/export 共有。 */
.cmp-catf { margin: 40px auto 12px; max-width: 860px; text-align: left; }
.cmp-catf-head { font-size: clamp(1.15rem, 2vw, 1.5rem); font-weight: 800; color: var(--ground-text); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 2px solid var(--ground-border); font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-cat-table { display: flex; flex-direction: column; gap: 8px; margin-bottom: 20px; }
.cmp-cat-row { display: grid; grid-template-columns: minmax(90px, 140px) 1fr; gap: 12px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--ground-border); }
.cmp-cat-label { font-weight: 800; color: var(--ground-text); font-size: 13px; padding-top: 4px; }
.cmp-cat-opts { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 6px; }
.cmp-catf-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.cmp-catf-cond { position: relative; display: flex; align-items: center; gap: 8px; text-align: left; font-size: 13px; font-weight: 700; color: var(--ground-body); background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 8px; padding: 9px 12px; cursor: pointer; user-select: none; transition: border-color .15s, background .15s, box-shadow .15s; }
.cmp-catf-cond:hover { border-color: #C4A86C; box-shadow: 0 1px 8px rgba(0,0,0,0.06); }
.cmp-catf-cond::before { content: ""; flex: 0 0 auto; width: 16px; height: 16px; border: 2px solid var(--ground-border); border-radius: 4px; background: var(--ground-card); box-sizing: border-box; font-size: 12px; font-weight: 900; line-height: 13px; text-align: center; color: transparent; }
.cmp-catf-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.cmp-catf-item { display: block; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 10px; padding: 10px 14px; font-weight: 700; color: var(--ground-body); box-shadow: 0 1px 6px rgba(0,0,0,0.03); text-align: center; }
/* いずれか選択で全隠し → 選択された選択肢 id に該当する社(.cmp-cathas-{id})だけ :has(#id) で再表示（OR・入れ子でも動作）。 */
.cmp-catf:has(.cmp-catf-input:checked) .cmp-catf-item { display: none; }
.cmp-catf:has(#cmp-catf-c0:checked) .cmp-catf-item.cmp-cathas-0,
.cmp-catf:has(#cmp-catf-c1:checked) .cmp-catf-item.cmp-cathas-1,
.cmp-catf:has(#cmp-catf-c2:checked) .cmp-catf-item.cmp-cathas-2,
.cmp-catf:has(#cmp-catf-c3:checked) .cmp-catf-item.cmp-cathas-3,
.cmp-catf:has(#cmp-catf-c4:checked) .cmp-catf-item.cmp-cathas-4,
.cmp-catf:has(#cmp-catf-c5:checked) .cmp-catf-item.cmp-cathas-5,
.cmp-catf:has(#cmp-catf-c6:checked) .cmp-catf-item.cmp-cathas-6,
.cmp-catf:has(#cmp-catf-c7:checked) .cmp-catf-item.cmp-cathas-7,
.cmp-catf:has(#cmp-catf-c8:checked) .cmp-catf-item.cmp-cathas-8,
.cmp-catf:has(#cmp-catf-c9:checked) .cmp-catf-item.cmp-cathas-9,
.cmp-catf:has(#cmp-catf-c10:checked) .cmp-catf-item.cmp-cathas-10,
.cmp-catf:has(#cmp-catf-c11:checked) .cmp-catf-item.cmp-cathas-11,
.cmp-catf:has(#cmp-catf-c12:checked) .cmp-catf-item.cmp-cathas-12,
.cmp-catf:has(#cmp-catf-c13:checked) .cmp-catf-item.cmp-cathas-13,
.cmp-catf:has(#cmp-catf-c14:checked) .cmp-catf-item.cmp-cathas-14,
.cmp-catf:has(#cmp-catf-c15:checked) .cmp-catf-item.cmp-cathas-15 { display: block; }
/* 選択トグルのアクティブ表示（□→✓・アクセント塗り。label 内包 input を :has で参照＝入れ子でも一発）。 */
.cmp-catf-cond:has(.cmp-catf-input:checked) { background: #C4A86C; color: #fff; border-color: #C4A86C; }
.cmp-catf-cond:has(.cmp-catf-input:checked)::before { content: "✓"; background: var(--ground-card); border-color: #fff; color: #C4A86C; }
/* 段F17c：統合フィルタ .cmp-fp（scores＋attributes を1パネル・多次元AND×OR＝CMP_FILTER_JS 制御・html.js 限定表示）。F15 整列トグル意匠を流用。preview/export 共有CSS。 */
.cmp-fp { margin: 40px auto 12px; max-width: 860px; text-align: left; }
.cmp-fp-head { font-size: clamp(1.15rem, 2vw, 1.5rem); font-weight: 800; color: var(--ground-text); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 2px solid var(--ground-border); font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
/* アクティブ条件チップ（JS が生成＝× で個別解除）。未生成（空）は畳む。 */
.cmp-fp-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.cmp-fp-chips:empty { display: none; }
.cmp-fp-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: #fff; background: #C4A86C; border: none; border-radius: 999px; padding: 6px 12px; cursor: pointer; }
.cmp-fp-chip:hover { opacity: .9; }
/* 条件行＝カテゴリ/軸ラベル＋トグル群（Grid 整列・F16 の 2カラム行を流用）。 */
.cmp-fp-body { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
/* 段F21：カテゴリ行の区切り・余白を整理（gap/padding を広げメリハリ・最終行は境界線なし）。 */
.cmp-fp-row { display: grid; grid-template-columns: minmax(96px, 150px) 1fr; gap: 16px; align-items: start; padding: 12px 0; border-bottom: 1px solid var(--ground-border); }
.cmp-fp-row:last-child { border-bottom: none; }
.cmp-fp-label { font-weight: 800; color: var(--ground-text); font-size: 13px; padding-top: 6px; }
/* 段F21：選択肢を内容幅チップ化（grid 固定幅→flex-wrap＝間延び・空白セル解消）。 */
.cmp-fp-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.cmp-fp-cond-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
/* 段F21：長ラベルの自然折り返し（全文可読優先・ellipsis 不使用）＋親はみ出し防止。border/padding/radius/hover/checked は維持。 */
.cmp-fp-cond { position: relative; display: inline-flex; align-items: center; gap: 8px; text-align: left; line-height: 1.35; word-break: normal; overflow-wrap: anywhere; max-width: 100%; font-size: 13px; font-weight: 700; color: var(--ground-body); background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 8px; padding: 9px 12px; cursor: pointer; user-select: none; transition: border-color .15s, background .15s, box-shadow .15s; }
.cmp-fp-cond:hover { border-color: #C4A86C; box-shadow: 0 1px 8px rgba(0,0,0,0.06); }
.cmp-fp-cond::before { content: ""; flex: 0 0 auto; width: 16px; height: 16px; border: 2px solid var(--ground-border); border-radius: 4px; background: var(--ground-card); box-sizing: border-box; font-size: 12px; font-weight: 900; line-height: 13px; text-align: center; color: transparent; }
/* 選択トグルのアクティブ表示（□→✓・アクセント塗り・:has で label 内包 input を参照＝html.js 前提＝モダンブラウザ）。 */
.cmp-fp-cond:has(.cmp-fp-cond-input:checked) { background: #C4A86C; color: #fff; border-color: #C4A86C; }
.cmp-fp-cond:has(.cmp-fp-cond-input:checked)::before { content: "✓"; background: var(--ground-card); border-color: #fff; color: #C4A86C; }
/* 件数＋すべて解除バー（JS が count/empty を制御）。 */
.cmp-fp-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; min-height: 20px; }
.cmp-fp-count { font-size: 13px; font-weight: 700; color: var(--ground-body); }
.cmp-fp-clear { font-size: 13px; font-weight: 700; color: #C4A86C; background: none; border: none; cursor: pointer; padding: 0; }
.cmp-fp-clear:hover { text-decoration: underline; }
/* 残った社カード（JS が該当外を display:none）。 */
.cmp-fp-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
/* 段F21：結果カードはリンク化済(F20)＝クリック可能を hover で示唆（下線は消す）。 */
.cmp-fp-item { display: block; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 10px; padding: 10px 14px; font-weight: 700; color: var(--ground-body); text-decoration: none; box-shadow: 0 1px 6px rgba(0,0,0,0.03); text-align: center; transition: border-color .15s, box-shadow .15s; }
.cmp-fp-item:hover { border-color: #C4A86C; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
.cmp-fp-name { display: block; }
/* 0件時のみ JS が hidden を外す（見た目のみ定義・[hidden] を著者側で再明示＝UA より優先されても隠す）。 */
.cmp-fp-empty { margin-top: 10px; padding: 14px; text-align: center; font-weight: 700; color: var(--ground-muted); background: var(--ground-alt); border: 1px dashed var(--ground-border); border-radius: 10px; }
.cmp-fp-empty[hidden] { display: none; }
/* 段F21：小画面はカテゴリ行を縦積み（ラベル上・選択肢下）＝狭幅の窮屈さ解消。gate(display) には触れない。 */
@media (max-width: 520px) {
  .cmp-fp-row { grid-template-columns: 1fr; gap: 8px; }
  .cmp-fp-label { padding-top: 0; }
}
/* 段F17c：no-JS gate（進行的強化）。既定は隠し → JS無効(html:not(.js))＝従来CSS-only(1D-OR)の .cmp-filter/.cmp-catf を表示（no-JS フォールバック温存）、JS有効(html.js)＝多次元AND×OR の .cmp-fp を表示。
   .cmp-fp は .cmp-filter/.cmp-catf の上位集合（buildFacets＝category∪score）＝どちらかが出る時は必ず出るので、JS有効時は CSS-only を隠して .cmp-fp に一本化しても機能欠落なし。既存 :has/nth-of-type 機構は不変・gate 追加のみ。 */
.cmp-filter, .cmp-catf, .cmp-fp { display: none; }
html:not(.js) .cmp-filter, html:not(.js) .cmp-catf { display: block; }
html.js .cmp-fp { display: block; }
/* 段3c：タイプ別おすすめ（区分タブ→推し社・CSS-onlyタブ＝JS非依存・listing 限定）。preview/export 共有CSS。 */
.cmp-recs { margin: 36px auto 8px; max-width: 760px; }
.cmp-recs-head { font-size: clamp(1.3rem, 2.2vw, 1.8rem); font-weight: 800; color: var(--ground-text); text-align: center; margin: 0 0 18px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-recs-radio { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.cmp-recs-tabs { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-bottom: 16px; }
.cmp-recs-tab { font-size: 13px; font-weight: 700; color: var(--ground-body); background: #f3f3f1; border: 1px solid var(--ground-border); border-radius: 999px; padding: 8px 18px; cursor: pointer; user-select: none; }
.cmp-recs-panel { display: none; }
.cmp-recs-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 24px; box-shadow: 0 2px 14px rgba(0,0,0,0.04); text-align: center; }
.cmp-recs-name { font-size: 18px; font-weight: 800; color: var(--ground-text); margin: 0 0 8px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-recs-body { font-size: 14px; line-height: 1.8; color: var(--ground-body); margin: 0 0 16px; white-space: pre-line; }
.cmp-recs-cta { display: inline-block; background: #C4A86C; color: #fff; text-decoration: none; font-weight: 800; font-size: 14px; padding: 11px 28px; border-radius: 999px; }
/* CSS-onlyタブ：radio n がchecked → パネル n を表示・タブ n をアクティブ（最大6区分）。 */
.cmp-recs-radio:nth-of-type(1):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(1),
.cmp-recs-radio:nth-of-type(2):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(2),
.cmp-recs-radio:nth-of-type(3):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(3),
.cmp-recs-radio:nth-of-type(4):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(4),
.cmp-recs-radio:nth-of-type(5):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(5),
.cmp-recs-radio:nth-of-type(6):checked ~ .cmp-recs-panels .cmp-recs-panel:nth-of-type(6) { display: block; }
.cmp-recs-radio:nth-of-type(1):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(1),
.cmp-recs-radio:nth-of-type(2):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(2),
.cmp-recs-radio:nth-of-type(3):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(3),
.cmp-recs-radio:nth-of-type(4):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(4),
.cmp-recs-radio:nth-of-type(5):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(5),
.cmp-recs-radio:nth-of-type(6):checked ~ .cmp-recs-tabs .cmp-recs-tab:nth-of-type(6) { background: #C4A86C; color: #fff; border-color: #C4A86C; }
.cmp-recs-radio:focus-visible ~ .cmp-recs-tabs .cmp-recs-tab { outline: 2px solid #C4A86C; outline-offset: 2px; }
/* 段3b：プラン例セクション（料金主役カード横並び・listing 限定）。preview/export 共有CSS。中身は全データ駆動。 */
.cmp-plans { margin: 36px auto 8px; max-width: 1000px; }
.cmp-plans-head { font-size: clamp(1.3rem, 2.2vw, 1.8rem); font-weight: 800; color: var(--ground-text); text-align: center; margin: 0 0 20px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.cmp-plan-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 24px; box-shadow: var(--ground-shadow-sm, 0 2px 14px rgba(0,0,0,0.04)); display: flex; flex-direction: column; }
.cmp-plan-name { font-size: 15px; font-weight: 700; color: #C4A86C; margin: 0 0 10px; }
.cmp-plan-price { margin: 0 0 12px; color: var(--ground-text); display: flex; align-items: baseline; gap: 4px; flex-wrap: wrap; }
.cmp-plan-lead { font-size: 13px; font-weight: 700; color: var(--ground-body); }
.cmp-plan-num { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 900; line-height: 1; letter-spacing: -0.02em; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-plan-unit { font-size: 13px; font-weight: 700; color: var(--ground-body); }
.cmp-plan-body { font-size: 13px; line-height: 1.8; color: var(--ground-body); margin: 0 0 16px; white-space: pre-line; flex: 1; }
.cmp-plan-cta { display: inline-block; text-align: center; background: #C4A86C; color: #fff; text-decoration: none; font-weight: 800; font-size: 14px; padding: 11px 18px; border-radius: 999px; margin-top: auto; }
.cmp-plans-note { font-size: 12px; color: var(--ground-muted); text-align: center; margin: 18px 0 0; line-height: 1.7; }
/* 段3a：POINT教育（選び方3STEP＋複数登録REASON・listing 限定・比較セクション内）。preview/export 共有CSS。中身は全データ駆動・番号は固定枠。 */
.cmp-edu { margin: 36px auto 8px; max-width: 1000px; }
.cmp-edu-head { font-size: clamp(1.3rem, 2.2vw, 1.8rem); font-weight: 800; color: var(--ground-text); text-align: center; margin: 0 0 20px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-bottom: 8px; }
.cmp-step { position: relative; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 24px; box-shadow: 0 2px 14px rgba(0,0,0,0.04); }
.cmp-step-no { display: inline-block; font-size: 12px; font-weight: 900; letter-spacing: 0.08em; color: #fff; background: #C4A86C; border-radius: 999px; padding: 4px 12px; margin-bottom: 12px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-step-title { font-size: 16px; font-weight: 800; color: var(--ground-text); margin: 0 0 8px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-step-body { font-size: 13.5px; line-height: 1.8; color: var(--ground-body); margin: 0; white-space: pre-line; }
.cmp-reasons { display: flex; flex-direction: column; gap: 12px; max-width: 760px; margin: 0 auto; }
.cmp-reason { display: flex; align-items: flex-start; gap: 14px; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 14px; padding: 18px 20px; box-shadow: 0 2px 14px rgba(0,0,0,0.04); }
.cmp-reason-no { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; font-size: 15px; font-weight: 900; color: #C4A86C; background: var(--ground-alt); border: 1px solid var(--ground-border); border-radius: 999px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-reason-title { font-size: 15px; font-weight: 800; color: var(--ground-text); margin: 2px 0 4px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-reason-body { font-size: 13.5px; line-height: 1.8; color: var(--ground-body); margin: 0; white-space: pre-line; }
/* 段2d：各社料金スペック表（pricing・listing 限定）。preview/export 共有CSS。 */
.cmp-pricing { display: flex; flex-direction: column; gap: 0; margin: 4px 0 14px; border: 1px solid var(--ground-border); border-radius: 10px; overflow: hidden; }
.cmp-pricing-row { display: flex; align-items: center; font-size: 13px; border-bottom: 1px solid var(--ground-border); }
.cmp-pricing-row:last-child { border-bottom: none; }
.cmp-pricing-label { flex: 0 0 38%; padding: 9px 12px; background: var(--ground-alt); color: var(--ground-body); font-weight: 700; }
.cmp-pricing-value { flex: 1; padding: 9px 12px; color: var(--ground-body); }
/* 段G3：各社サンプル項目カード（具体例・listing 限定・grid auto-fit でモバイル縦積み）。preview/export 共有CSS。 */
.cmp-samples { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 12px; margin: 8px 0 16px; }
.cmp-sample-card { display: flex; flex-direction: column; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 12px; padding: 16px; box-shadow: 0 1px 6px rgba(0,0,0,0.03); }
.cmp-sample-title { font-size: 14px; font-weight: 800; color: var(--ground-text); margin: 0 0 10px; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; }
.cmp-sample-fields { display: flex; flex-direction: column; gap: 0; flex: 1; }
.cmp-sample-row { display: flex; align-items: baseline; gap: 10px; font-size: 13px; padding: 5px 0; border-bottom: 1px solid #f3f3f1; }
.cmp-sample-row:last-child { border-bottom: none; }
.cmp-sample-label { flex: 0 0 34%; color: #C4A86C; font-weight: 700; }
.cmp-sample-value { flex: 1; color: var(--ground-body); }
.cmp-sample-cta { display: inline-block; text-align: center; margin-top: 12px; background: #C4A86C; color: #fff; text-decoration: none; font-weight: 800; font-size: 13px; padding: 9px 16px; border-radius: 999px; }
/* 段2e：各社の属性チップ（attributes を横並び丸タグに・属性スペック表の置換・listing 限定）。preview/export 共有CSS。 */
.cmp-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 14px; }
.cmp-chip { display: inline-block; font-size: 12px; font-weight: 700; color: var(--ground-body); background: #f3f3f1; border: 1px solid var(--ground-border); border-radius: 999px; padding: 5px 12px; line-height: 1.4; }
/* 段G2：カテゴリ別タグ群（複数タグ）。カテゴリ名＋タグ chips を1行（flex-wrap）に。単一タグは従来フラット chip。F1-4 @container 配下で折返し。 */
.cmp-attr-group { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 2px 0; }
.cmp-attr-cat { font-size: 11px; font-weight: 700; letter-spacing: 0.02em; color: var(--ground-muted); }
.cmp-attr-tags { display: inline-flex; flex-wrap: wrap; gap: 6px; }
/* 段2c：各社 VOICE（口コミ reviews・listing 限定で出力）。preview/export 共有CSS。 */
.cmp-voice { margin: 16px 0 4px; }
.cmp-voice-head { font-size: 13px; font-weight: 700; letter-spacing: 0.04em; color: #C4A86C; margin: 0 0 10px; }
.cmp-voice-item { background: var(--ground-alt); border: 1px solid var(--ground-border); border-radius: 10px; padding: 12px 14px; margin-bottom: 8px; }
.cmp-voice-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; flex-wrap: wrap; }
.cmp-voice-attr { font-size: 12px; font-weight: 700; color: var(--ground-body); background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 999px; padding: 2px 10px; }
.cmp-voice-rating .cmp-stars-row { display: inline-flex; position: relative; }
.cmp-voice-rating { display: inline-flex; color: #E0902B; }
.cmp-voice-body { font-size: 13px; line-height: 1.8; color: var(--ground-body); margin: 0; white-space: pre-line; }
/* comparison detail（各社詳細・大カード） */
.cmp-detail-list { display: flex; flex-direction: column; gap: 28px; }
/* 段F20：scroll-margin-top＝結果カード(.cmp-fp-item)アンカー遷移時に sticky ヘッダー(export:993/preview:2952)へ潜り込まない着地余白。 */
.cmp-detail-card { background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; padding: 32px; box-shadow: 0 2px 14px rgba(0,0,0,0.04); scroll-margin-top: 80px; }
/* 段G10b-1：右端に総合スコアを差すスペースを確保（DOM 追加は G10b-2／本段は space-between のみ）。 */
.cmp-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; flex-wrap: wrap; }
.cmp-detail-logo { width: 200px; height: 96px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: var(--ground-alt); border: 1px solid var(--ground-border); border-radius: 12px; overflow: hidden; }
.cmp-detail-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.cmp-detail-name { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 24px; font-weight: 800; color: var(--ground-text); margin: 0; }
.cmp-detail-rank { display: inline-block; background: #C4A86C; color: #fff; font-weight: 800; font-size: 13px; padding: 3px 12px; border-radius: 14px; margin-bottom: 8px; }
.cmp-detail-metrics { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 6px; }
.cmp-detail-metrics span { font-size: 15px; color: var(--ground-body); }
.cmp-detail-metrics b { color: #C4A86C; font-size: 18px; font-weight: 800; }
/* 段G9：キャッチコピー（it.point）を「ブランド帯」化＝大きめ・太字・濃色＋accent 左ボーダーで見出し感（detail 限定）。色は accent 変数＝業種非依存。 */
.cmp-detail-point { font-size: 19px; color: var(--ground-text); line-height: 1.7; font-weight: 700; letter-spacing: 0.02em; margin: 0 0 18px; border-left: 4px solid #C4A86C; padding-left: 12px; }
.cmp-detail-features { list-style: none; margin: 0 0 22px; padding: 0; display: grid; gap: 0; }
.cmp-detail-feature { display: flex; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--ground-border); font-size: 15px; color: var(--ground-body); }
.cmp-detail-feature .cmp-flabel { color: #C4A86C; font-weight: 700; min-width: 120px; }
@media (max-width: 768px) { .cmp-detail-card { padding: 24px 20px; } .cmp-detail-logo { width: 150px; height: 72px; } .cmp-detail-feature .cmp-flabel { min-width: 90px; } }
/* 段F1-4：コンテナ幅で効くレスポンシブ（@container・@media非依存＝preview トグルと実機で一致）。既存 @media はビューポート狭幅の保険として温存。 */
/* タブレット相当（コンテナ ≤760px）：詰まり防止の微調整。 */
@container cmp (max-width: 760px) {
  .cmp-detail-card { padding: clamp(20px, 4cqi, 32px); }
  .cmp-detail-name { font-size: clamp(20px, 4cqi, 24px); }
  /* 比較表が溢れる帯域では右端フェードで「続き（横スクロール）」を示唆（pointer-events なし＝操作を妨げない）。 */
  .cmp-table-card::after { content: ""; position: absolute; top: 16px; right: 1px; bottom: 16px; width: 26px; background: linear-gradient(to left, #fff, rgba(255,255,255,0)); border-radius: 0 15px 15px 0; pointer-events: none; }
}
/* モバイル相当（コンテナ ≤560px）：縦積み・ロゴ縮小・余白圧縮で崩れ防止。SCORE列は RAM パターンで自動1列。 */
@container cmp (max-width: 560px) {
  .cmp-top { flex-direction: column; align-items: flex-start; }
  .cmp-logo { width: 100px; height: 48px; }
  .cmp-detail-card { padding: 22px 18px; }
  .cmp-detail-head { gap: 12px; }
  .cmp-detail-logo { width: 140px; height: 66px; }
  .cmp-detail-name { font-size: 20px; }
  .cmp-detail-point { font-size: 17px; line-height: 1.7; }
  .cmp-detail-feature { gap: 10px; font-size: 14px; }
  .cmp-detail-feature .cmp-flabel { min-width: 84px; }
  /* 段G10b-2：狭幅は3カラム→縦積み（左→中→右）。縦の区切りは横罫線に切替（崩れない）。 */
  .cmp-card-2col { grid-template-columns: 1fr; }
  .cmp-c3-left { border-right: none; border-bottom: 1px solid var(--ground-border); }
  .cmp-scorenum-val { font-size: 18px; }
  .cmp-pricing-label { flex-basis: 42%; }
  .cmp-recs-card, .cmp-plan-card { padding: 20px; }
}
/* === F50-② マイクロインタラクション（preview/export 共通・単一ソース）：カード hover 浮き+影／画像ゆるやか zoom。=== */
.ts-card, .team-card, .pr-card { transition: transform 0.3s cubic-bezier(0.16,1,0.3,1), box-shadow 0.3s ease, border-color 0.3s ease; }
.ts-card:hover, .team-card:hover, .pr-card:hover { transform: translateY(-6px); box-shadow: 0 20px 48px #C4A86C20; border-color: #C4A86C40; }
.gallery-item { transition: transform 0.3s cubic-bezier(0.16,1,0.3,1), box-shadow 0.3s ease; }
.gallery-item:hover { transform: translateY(-4px); box-shadow: 0 16px 40px rgba(0,0,0,0.12); }
.gallery-item img, .team-avatar img { transition: transform 0.5s cubic-bezier(0.16,1,0.3,1); }
.gallery-item:hover img, .team-card:hover .team-avatar img { transform: scale(1.06); }
@media (prefers-reduced-motion: reduce) {
  .ts-card, .team-card, .pr-card, .gallery-item, .gallery-item img, .team-avatar img { transition: none; }
  .ts-card:hover, .team-card:hover, .pr-card:hover, .gallery-item:hover { transform: none; }
  .gallery-item:hover img, .team-card:hover .team-avatar img { transform: none; }
}

/* 段F56⑤：hero 直下 信頼バッジ帯（データ駆動）。preview と同一の共通 trustBarCss。 */
.trust-bar { display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch; gap: 14px; padding: 24px clamp(16px, 5vw, 40px); background: #C4A86C0d; border-top: 1px solid #C4A86C22; border-bottom: 1px solid #C4A86C22; }
.trust-badge { display: inline-flex; align-items: center; gap: 12px; padding: 14px 22px; background: var(--ground-card); border: 1px solid #C4A86C2e; border-radius: 12px; box-shadow: 0 4px 16px #C4A86C14; font-size: 14px; font-weight: 700; color: var(--ground-text); line-height: 1.3; }
.trust-ico { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: #C4A86C; color: #fff; font-size: 15px; font-weight: 900; flex-shrink: 0; }
.trust-ico.is-emoji { background: #C4A86C1a; font-size: 17px; }
.trust-txt { display: inline-flex; align-items: baseline; gap: 3px; flex-wrap: wrap; }
.trust-num { font-size: 1.55em; font-weight: 900; color: #C4A86C; letter-spacing: -0.01em; line-height: 1; }
@media (max-width: 560px) { .trust-bar { gap: 10px; padding: 18px 16px; } .trust-badge { padding: 12px 16px; font-size: 13px; } .trust-num { font-size: 1.4em; } }
/* 段F61③：実績数字帯（statsBar・カウントアップ）。preview と同一の共通 statsBarCss。 */
.statsbar { padding: 30px clamp(16px, 5vw, 40px); background: #C4A86C0d; border-top: 1px solid #C4A86C1f; border-bottom: 1px solid #C4A86C1f; }
.statsbar-inner { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 20px; }
.statsbar-item { text-align: center; padding: 6px 12px; }
.statsbar-val { font-family: 'DM Sans', 'Inter', system-ui, -apple-system, sans-serif; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; font-size: clamp(2.2rem, 5vw, 3.2rem); font-weight: 900; color: #C4A86C; line-height: 1; letter-spacing: -0.02em; }
/* 段F94：長い値（is-long）は段階縮小＋折返しで見切れ回避（短い値は非付与＝従来不変）。 */
.statsbar-val.is-long { font-size: clamp(1.1rem, 3vw, 1.8rem); line-height: 1.3; letter-spacing: normal; overflow-wrap: anywhere; }
.statsbar-suffix { font-size: 0.5em; font-weight: 800; margin-left: 2px; }
.statsbar-label { margin-top: 10px; font-size: 13px; font-weight: 700; color: var(--ground-body); letter-spacing: 0.02em; }
/* 段F70-c①：≤560 は縦1列（1項目1行）＝項目数2〜4のどれでも「2+1」等の孤立が起きない。数字サイズは維持（clamp下限2.2rem）。>560 は横並び(auto-fit)のまま。preview/export 共通CSS＝両側一致。 */
@media (max-width: 560px) { .statsbar { padding: 24px 16px; } .statsbar-inner { grid-template-columns: 1fr; gap: 16px; } }
/* 施工事例 carousel（流れる）。preview と同一の共通関数 caseCarouselCss（両側一致）。 */

.cs-carousel-sec { padding: 125px 0; background: #F5F2EA; overflow: hidden; }
.cs-carousel-head { max-width: 1200px; margin: 0 auto 40px; padding: 0 40px; }
.cs-carousel-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: #C4A86C; margin: 0 0 12px; }
.cs-carousel-h2 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 800; color: #1a1a1a; line-height: 1.3; margin: 0; white-space: pre-line; }
.cs-carousel-viewport { overflow: hidden; }
.cs-carousel-track { display: flex; width: max-content; animation: cs-marquee 40s linear infinite; will-change: transform; }
.cs-carousel.dir-right .cs-carousel-track { animation-direction: reverse; }
.cs-carousel:hover .cs-carousel-track { animation-play-state: paused; }
/* 段F74②：タイル内リンクにフォーカス（タップ/キーボード）が入ったら流れを止めてタップしやすくする（hover 非対応のタッチ端末の救済）。 */
.cs-carousel:focus-within .cs-carousel-track { animation-play-state: paused; }
.cs-carousel-tile { flex: 0 0 auto; width: 320px; margin-right: 24px; }
.cs-carousel-media { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; background: #1a1a1a; }
.cs-carousel-media img, .cs-carousel-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cs-carousel-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 64px; font-weight: 800; font-family: 'DM Sans', monospace; color: #C4A86C; opacity: 0.4; }
.cs-carousel-cap { margin-top: 12px; }
.cs-carousel-tag { display: inline-block; background: #C4A86C; color: #fff; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 100px; margin-bottom: 8px; }
.cs-carousel-title { font-size: 15px; font-weight: 700; color: #1a1a1a; line-height: 1.4; }
/* 段F74：説明・顧客の声（任意）。濃地(#0f0f0f)で可読な淡色＋2行 line-clamp＝長文でもタイル高さが暴れない。 */
.cs-carousel-voice { margin-top: 6px; font-size: 13px; color: #4a4640; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* 段F74②：実際のサイトへの小リンク（accent＝装飾色。行動色CTAとは役割を分ける）。空URLは描画側で非表示。 */
.cs-carousel-visit { display: inline-flex; align-items: center; gap: 4px; margin-top: 8px; color: #C4A86C; font-size: 12px; font-weight: 700; text-decoration: none; }
.cs-carousel-visit:hover { text-decoration: underline; }
@keyframes cs-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (max-width: 768px) { .cs-carousel-sec { padding: 72px 0; } .cs-carousel-tile { width: 240px; margin-right: 16px; } }
/* 段F44①：SP(≤560px)ティア。見出しの左右パディング最小化＋タイル幅縮小（768ルールは不変・下に重ねる）。 */
@media (max-width: 560px) { .cs-carousel-head { padding-left: 16px; padding-right: 16px; } .cs-carousel-tile { width: 200px; } }
@media (prefers-reduced-motion: reduce) { .cs-carousel-track { animation: none; } .cs-carousel-viewport { overflow-x: auto; } }

/* 段F60①：事例＋声の合体カード（caseStudy variant=voice）。preview と同一の共通 caseVoiceCss。 */
.cs-voice-sec { padding: 125px 40px; background: var(--ground-base); }
.cs-voice-inner { max-width: 1100px; margin: 0 auto; }
.cs-voice-head { text-align: center; margin-bottom: 48px; }
.cs-voice-head .eyebrow { color: #C4A86C; margin-bottom: 12px; }
.cs-voice-head h2 { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; color: var(--ground-text); margin: 0; }
.cs-voice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 28px; }
.cs-voice-card { display: flex; flex-direction: column; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 16px; overflow: hidden; box-shadow: var(--ground-shadow-md, 0 8px 30px rgba(0,0,0,0.08)); }
.cs-voice-media { position: relative; aspect-ratio: 3 / 2; background: linear-gradient(135deg, #C4A86C22 0%, #C4A86C0a 100%); overflow: hidden; }
.cs-voice-media img, .cs-voice-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cs-voice-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: clamp(40px, 7vw, 72px); font-weight: 800; font-family: 'DM Sans', monospace; color: #C4A86C; opacity: 0.3; }
.cs-voice-body { padding: 22px 24px; display: flex; flex-direction: column; gap: 10px; }
.cs-voice-tag { display: inline-block; align-self: flex-start; background: #C4A86C; color: #fff; font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 100px; }
.cs-voice-title { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 1.1rem; font-weight: 700; color: var(--ground-text); line-height: 1.4; margin: 0; white-space: pre-line; }
.cs-voice-meta { display: flex; flex-wrap: wrap; gap: 14px; font-size: 13px; color: var(--ground-muted); }
.cs-voice-quote { position: relative; margin: 6px 0 0; padding: 14px 16px 14px 18px; background: #C4A86C0d; border-left: 3px solid #C4A86C; border-radius: 8px; font-size: 14px; line-height: 1.8; color: var(--ground-body); font-style: italic; white-space: pre-line; }
.cs-voice-quote::before { content: "\201C"; color: #C4A86C; font-size: 22px; font-weight: 800; margin-right: 4px; line-height: 0; }
/* 段F74②：実際のサイトへの小リンク（accent＝装飾色。行動色CTAとは役割を分ける）。空URLは描画側で非表示。 */
.cs-voice-visit { align-self: flex-start; display: inline-flex; align-items: center; gap: 4px; color: #C4A86C; font-size: 13px; font-weight: 700; text-decoration: none; }
.cs-voice-visit:hover { text-decoration: underline; }
@media (max-width: 768px) { .cs-voice-sec { padding-left: 20px; padding-right: 20px; } }
/* 段case-scroll：横並びカルーセル（caseStudy carousel / gallery slideshow）の自由スクロール override（対象がある時だけ注入＝未使用サイトは byte 不変）。既存 caseCarouselCss/gallerySlideshowCss は不変・これが後勝ちでマーキー無効化＋scroll-snap＋矢印。preview と同一の共通 dragScrollCss。 */

/* 段case-scroll：自由スクロール override（マーキー無効化＋scroll-snap＋細スクロールバー＋矢印）。 */
.cscroll { position: relative; }
/* [data-cscroll][data-cscroll]＝属性2連で詳細度を上げ、注入順に依存せず既存の .gallery-slideshow/.cs-carousel-viewport { overflow:hidden } に後勝ちする（gallerySlideshowCss は本CSSより後に注入されるため）。 */
[data-cscroll][data-cscroll] { overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; cursor: grab; scrollbar-width: thin; scrollbar-color: #C4A86C80 transparent; }
[data-cscroll].is-grabbing { cursor: grabbing; user-select: none; scroll-behavior: auto; }
[data-cscroll] > * { animation: none !important; } /* 純CSSマーキー（cs-marquee / gallery-marquee）を無効化＝自動送り停止 */
[data-cscroll] img { -webkit-user-drag: none; user-select: none; }
.cs-carousel-tile, .gallery-slide { scroll-snap-align: start; }
/* 細いが見えるスクロールバー（PC でスクロール可能の手掛かりを残す＝完全非表示にはしない）。 */
[data-cscroll]::-webkit-scrollbar { height: 8px; }
[data-cscroll]::-webkit-scrollbar-track { background: transparent; }
[data-cscroll]::-webkit-scrollbar-thumb { background: #C4A86C80; border-radius: 4px; }
[data-cscroll]::-webkit-scrollbar-thumb:hover { background: #C4A86C; }
/* 矢印（PC のみ・1カード送り）。暗地/明地の両方で視認できる白丸＋accent。SP は非表示＝スワイプ。 */
.cscroll-arrow { position: absolute; top: 42%; transform: translateY(-50%); z-index: 3; width: 40px; height: 40px; border-radius: 50%; border: 1px solid #C4A86C; background: rgba(255,255,255,0.9); color: #C4A86C; font-size: 22px; line-height: 1; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.18); transition: opacity .15s, background .15s; padding: 0; }
.cscroll-arrow:hover { background: #fff; }
.cscroll-prev { left: 8px; }
.cscroll-next { right: 8px; }
.cscroll-arrow[disabled] { opacity: 0.32; cursor: default; box-shadow: none; }
@media (hover: none) { .cscroll-arrow { display: none; } } /* タッチ端末はネイティブスワイプ＝矢印を出さない */

/* 段F65（sectionMedia 基盤）：セクション背景メディア（cover/parallax）＋オーバーレイ（ground 継承）。problem-bg 統合。preview と同一の共通 sectionMediaCss。 */
.sec-has-media { position: relative; overflow: hidden; }
.sec-media { position: absolute; inset: 0; z-index: 0; }
.sec-media-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.sec-media.is-parallax .sec-media-img { height: 130%; top: -15%; will-change: transform; }
.sec-media-overlay { position: absolute; inset: 0; z-index: 1; background: var(--ground-base); opacity: 0.84; }
.sec-has-media > :not(.sec-media) { position: relative; z-index: 2; }
@media (prefers-reduced-motion: reduce) { .sec-media-img { transform: none !important; } }
/* 段F65（機能4）：ギャラリー ライトボックス（グリッド＋タップ拡大）。preview と同一の共通 galleryLightboxCss。 */
.gallery-item[data-lb] { cursor: zoom-in; }
.lb { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.9); touch-action: pan-y; }
.lb[hidden] { display: none; }
.lb-img { max-width: 92vw; max-height: 88vh; object-fit: contain; border-radius: 6px; box-shadow: 0 20px 60px rgba(0,0,0,0.5); }
.lb-btn { position: absolute; background: rgba(255,255,255,0.14); color: #fff; border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; line-height: 1; transition: background .15s; }
.lb-btn:hover { background: rgba(255,255,255,0.26); }
.lb-close { top: 16px; right: 16px; width: 44px; height: 44px; font-size: 24px; border-radius: 50%; }
.lb-prev, .lb-next { top: 50%; transform: translateY(-50%); width: 52px; height: 52px; font-size: 30px; border-radius: 50%; }
.lb-prev { left: 12px; } .lb-next { right: 12px; }
@media (max-width: 560px) { .lb-prev, .lb-next { width: 44px; height: 44px; font-size: 26px; } }
/* 段lb-close-visibility：ライトボックス操作ボタンの視認（背景スクショに依存しない暗円＋白×＝固定色）。ライトボックスが実在する時だけ galleryLightboxCss の後に後勝ち注入＝未使用は byte 不変。preview と同一の共通 lightboxCloseBtnCss。 */
.lb-btn { background: rgba(0,0,0,0.72); color: #fff; box-shadow: 0 2px 10px rgba(0,0,0,0.5); }
.lb-btn:hover { background: rgba(0,0,0,0.85); }
/* 段lb-close-pos：ライトボックス一式を全 fixed/sticky より前面へ（単一定数・後勝ち）。overlay は JS/preview で body 直下へ移設し stacking context の外に出す。 */
.lb { z-index: 2147483000; }
/* 段lb-close-pos：SP(<861px) は × を右上から「画面下部中央の『閉じる』ピル」へ（親指圏・高さ48px+・暗地+白字+影は上の .lb-btn を流用）。PC(≥861px)は右上×維持。 */
@media (max-width: 860px) {
  .lb-close { position: fixed; top: auto; right: auto; left: 50%; bottom: calc(16px + env(safe-area-inset-bottom)); transform: translateX(-50%); width: auto; min-width: 156px; height: auto; min-height: 48px; padding: 0 30px; border-radius: 999px; font-size: 0; z-index: 1; }
  .lb-close::after { content: "閉じる"; font-size: 16px; font-weight: 700; letter-spacing: 0.04em; color: #fff; }
}
/* 段lp-uplift：事例カード フルスクショ拡大（shot がある時だけ注入＝未設定は byte 不変）。preview と同一の共通 caseShotLightboxCss。 */
.cs-carousel-media[data-lb] { cursor: zoom-in; }
.lb--tall { align-items: flex-start; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; padding: 24px 0; }
.lb--tall .lb-img { max-height: none; height: auto; width: auto; }
/* 段lb-mobile-ux：縦長スクショは overlay 自体がスクロールするため、absolute の操作ボタン（特に × 閉じる）が上下スクロールで画面外へ流れる。fixed に固定して常に届く位置へ（閉じ手段の明確化）。条件注入（shot がある時だけ）＝byte 不変。 */
.lb--tall .lb-btn { position: fixed; }
/* 段hero-offer：immersive hero 内オファーカード＋2カラム化（heroOffer 設定時だけ注入＝未設定は byte 不変）。preview と同一の共通 heroOfferCss。 */
.hero-offer-cols { position: relative; z-index: 2; }
.hero-offer-main { min-width: 0; }
/* 段hero-offer-fix3：カード視覚（白カード）＝共有。padding/gap は引き締め、overflow:hidden でフルブリード画像の角をカードの丸みに合わせる。 */
.hero-offer-card { width: 100%; max-width: 420px; margin: 0 auto; background: #FFFFFF; color: #1a1a1a; border-radius: 16px; padding: 18px; box-shadow: 0 24px 60px rgba(0,0,0,0.35); display: flex; flex-direction: column; gap: 10px; text-align: left; overflow: hidden; }
/* 段hero-offer-fix：納品物画像はカード幅いっぱい＋上部フルブリード（padding を負マージンで打ち消し・上角のみ丸め）＝余白過多を解消。 */
.hero-offer-shot { margin: -18px -18px 12px; border-radius: 16px 16px 0 0; overflow: hidden; }
.hero-offer-shot img { display: block; width: 100%; height: auto; }
.hero-offer-badge { align-self: flex-start; background: #C4A86C; color: #fff; font-size: 11px; font-weight: 800; padding: 4px 12px; border-radius: 999px; letter-spacing: 0.04em; }
.hero-offer-heading { margin: 0; font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: clamp(1.1rem, 2.2vw, 1.4rem); font-weight: 800; line-height: 1.3; color: #1a1a1a; }
.hero-offer-desc { margin: 0; font-size: 14px; line-height: 1.6; color: #555; }
.hero-offer-cta.cta.is-primary { align-self: stretch; text-align: center; margin-top: 2px; }
.hero-offer-link { font-size: 13px; color: #C4A86C; text-decoration: underline; text-underline-offset: 2px; }
/* 段hero-offer-fix3 SP(<861px)：hero 内はテキスト（eyebrow→見出し→サブコピー→stats）で完結。hero-content 内カードは隠し、
 *   hero の外の独立バンド .hero-offer-band（明色地）のカードを見せる＝背景写真との重なりを構造的に解消。 */
.hero-offer-cols .hero-offer-card { display: none; }
.hero-offer-band { background: #FBF9F4; padding: 28px 20px; }
.hero-offer-band .hero-offer-card { display: flex; }
/* 段hero-offer-fix3 PC(≥861px)：2カラム器に max-width＋中央寄せ（全幅でも設計間隔を維持）。テキスト列で見出しの行長を抑え、カード列を確保。
 *   カードは hero 内コピーを表示・独立バンドは非表示（SP 専用）。 */
@media (min-width: 861px) {
  .hero-offer-band { display: none; }
  .hero-offer-cols { display: grid; grid-template-columns: minmax(0, 640px) minmax(380px, 440px); justify-content: center; align-items: center; gap: 56px; max-width: 1200px; margin: 0 auto; }
  .hero-offer-main { text-align: left; }
  .hero-offer-cols .hero-offer-card { display: flex; width: auto; max-width: none; margin: 0; }
}
/* 段F65（機能3）：Before/After スライダー（caseStudy beforeafter）。js=スライダー／no-js=左右並べ。preview と同一の共通 beforeAfterCss。 */
.ba-sec { padding: 125px 40px; background: var(--ground-base); }
.ba-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 28px; max-width: 1100px; margin: 0 auto; }
.ba-item-title { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-size: 1.05rem; font-weight: 700; color: var(--ground-text); margin: 12px 0 0; text-align: center; }
.ba-tag { position: absolute; top: 12px; font-size: 11px; font-weight: 800; letter-spacing: 0.06em; color: #fff; background: rgba(0,0,0,0.55); padding: 4px 12px; border-radius: 100px; z-index: 3; }
.ba-tag-before { left: 12px; } .ba-tag-after { right: 12px; }
/* 既定（JS無効/未強化）：左右並べ（消えない＝進行的強化）。JS/React が .is-slider を付けてスライダーに昇格＝preview==export。 */
.ba { display: flex; gap: 8px; }
.ba-pane { position: relative; width: 50%; }
.ba-pane img { width: 100%; height: auto; display: block; border-radius: 12px; }
.ba-handle { display: none; }
/* .is-slider：1枚のスライダー（ドラッグ/スワイプ＝ポインタイベント・touch-action:pan-y で縦スクロール両立） */
.ba.is-slider { display: block; position: relative; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; cursor: ew-resize; user-select: none; touch-action: pan-y; box-shadow: 0 8px 30px rgba(0,0,0,0.12); }
.ba.is-slider .ba-pane { position: absolute; inset: 0; width: auto; }
.ba.is-slider .ba-pane img { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.ba.is-slider .ba-before { clip-path: inset(0 calc(100% - var(--ba)) 0 0); }
.ba.is-slider .ba-handle { display: block; position: absolute; top: 0; bottom: 0; left: var(--ba); width: 2px; background: #fff; transform: translateX(-1px); z-index: 2; box-shadow: 0 0 8px rgba(0,0,0,0.4); }
.ba.is-slider .ba-handle-grip { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; border-radius: 50%; background: #fff; color: #C4A86C; font-size: 16px; font-weight: 900; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 2px 10px rgba(0,0,0,0.35); }
@media (max-width: 768px) { .ba-sec { padding: 72px 20px; } }
/* 段matrix：comparison matrix 対比表（当該 variant を使う時だけ注入＝byte 不変）。preview と同一の共通 comparisonMatrixCss。 */
.cmp-mtx-wrap { max-width: 1000px; margin: 0 auto; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cmp-mtx { border-collapse: separate; border-spacing: 0; width: 100%; min-width: max-content; background: var(--ground-card); border: 1px solid var(--ground-border); border-radius: 14px; overflow: hidden; }
.cmp-mtx th, .cmp-mtx td { padding: clamp(11px,2vw,15px) clamp(12px,2vw,18px); border-bottom: 1px solid var(--ground-border); border-right: 1px solid var(--ground-border); text-align: center; font-size: 14px; color: var(--ground-text); vertical-align: middle; }
.cmp-mtx tr:last-child th, .cmp-mtx tr:last-child td { border-bottom: none; }
.cmp-mtx th:last-child, .cmp-mtx td:last-child { border-right: none; }
/* 左上コーナー＋行見出し（軸）＝左列。横スクロールでも残す（sticky）。 */
.cmp-mtx-corner { background: var(--ground-alt); position: sticky; left: 0; z-index: 3; }
.cmp-mtx-axis { text-align: left; font-weight: 700; color: var(--ground-text); background: var(--ground-alt); position: sticky; left: 0; z-index: 2; white-space: nowrap; }
/* 会社見出し（上端行）。 */
.cmp-mtx-col { font-family: 'Shippori Mincho', 'Noto Serif JP', serif; font-weight: 700; background: var(--ground-alt); color: var(--ground-text); white-space: nowrap; }
.cmp-mtx-logo { width: 92px; height: 34px; object-fit: contain; display: block; margin: 0 auto; }
/* 自社（featured）列＝ベタ塗り廃止。isFeat 体系（pricing plan-table）に揃え「極薄ティント＋accent 2px 枠線（列の上下端まで）」で強調。
   枠は inset box-shadow で描く＝隣接セルの 1px 罫線と二重化せず・overflow:hidden にもクリップされず・列上下端まで連続。
   ティントは accent の alpha（7%）＝ライト/ダーク両対応（第3の色管理を作らない・地色は既存 --ground-* に乗る）。 */
.cmp-mtx th.cmp-mtx-feat, .cmp-mtx td.cmp-mtx-feat { background: #C4A86C12; box-shadow: inset 2px 0 0 #C4A86C, inset -2px 0 0 #C4A86C; }
/* ヘッダー（列上端）：ベタ塗りをやめ accent 文字色＋上辺 2px。行見出し(.cmp-mtx-col)の地色/文字色を上書き。 */
.cmp-mtx th.cmp-mtx-col.cmp-mtx-feat { color: #C4A86C; box-shadow: inset 2px 0 0 #C4A86C, inset -2px 0 0 #C4A86C, inset 0 2px 0 #C4A86C; }
/* 列下端（最終行）：下辺 2px で枠を閉じる。 */
.cmp-mtx tbody tr:last-child td.cmp-mtx-feat { box-shadow: inset 2px 0 0 #C4A86C, inset -2px 0 0 #C4A86C, inset 0 -2px 0 #C4A86C; }
/* 「自社」バッジ＝ベタ塗り撤去後の accent アンカー（solid pill・地色連動の文字色）。 */
.cmp-mtx-badge { display: block; margin: 5px auto 0; padding: 1px 9px; border-radius: 999px; background: #C4A86C; color: #1A1A1A; font-size: 10px; font-weight: 800; letter-spacing: 0.04em; width: max-content; }
/* 程度記号（◎○△×）はセル内で少し大きく。 */
.cmp-mtx-sym { font-size: 17px; font-weight: 700; line-height: 1; }
.cmp-mtx-empty { color: var(--ground-muted); }
/* モーション強度（standard/lively）。preview と同一の共通関数 motionCss（両側一致）。standard は空文字＝現状不変。 */
/* 段F56③：全 CTA の造形の単一ソース（.cta / .cta.is-primary / .cta.is-ghost / .cta.is-lg）。per-class 定義より後に置き .cta を優先。 */
/* 段F67③：主CTA(is-primary) は cta（行動色）＝accent（装飾色）から独立。既定は accent にフォールバック（現状一致）。 */
.cta { position: relative; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 15px 30px; border-radius: 6px; font-size: 16px; font-weight: 700; text-decoration: none; letter-spacing: 0.02em; line-height: 1.2; cursor: pointer; border: none; transition: transform 0.2s ease, box-shadow 0.2s ease; }
.cta::before { content: ""; position: absolute; top: 0; left: -120%; width: 55%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255,255,255,0.35), transparent); transform: skewX(-20deg); transition: left 0.6s ease; pointer-events: none; }
.cta:hover::before { left: 150%; }
.cta.is-primary { background-color: #c3a550; background-image: linear-gradient(135deg, rgba(255,255,255,0.16) 0%, rgba(0,0,0,0.10) 100%); color: #1A1A1A; box-shadow: 0 8px 24px #c3a55055; }
.cta.is-primary::after { content: "→"; display: inline-block; transition: transform 0.25s ease; }
.cta.is-primary:hover { transform: translateY(-2px); box-shadow: 0 14px 34px #c3a55070; }
.cta.is-primary:hover::after { transform: translateX(4px); }
.cta.is-ghost { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.45); box-shadow: none; }
.cta.is-ghost:hover { transform: translateY(-2px); background: rgba(255,255,255,0.08); }
.cta.is-lg { padding: 19px 44px; font-size: 18px; }
@media (prefers-reduced-motion: reduce) { .cta, .cta::before, .cta.is-primary::after { transition: none; } .cta:hover { transform: none; } .cta:hover::before { left: -120%; } .cta.is-primary:hover::after { transform: none; } }

/* === モーション強度: rich（純CSS・preview/export 共通） === */
/* (a) スクロール出現の強調：export の .reveal を大きく・弾む系へ（preview は AnimatedSection が同値を適用）。
   JS無効/IO非対応で内容が消えないよう、隠しは html.js が付いた export 側でのみ効かせる。opacity フェードは base .reveal と共有。 */
.motion-rich .reveal { transition: opacity 1s cubic-bezier(0.22, 1.15, 0.36, 1), transform 1s cubic-bezier(0.22, 1.15, 0.36, 1); }
html.js .motion-rich .reveal { transform: translateY(32px); }
.motion-rich .reveal.is-visible { transform: none; }
/* (c) ホバー強化：カード/各部品/画像が浮く（純CSS・両側共通クラス/要素）。
   hero 画像(.hero-kb/.hero-media)は Ken Burns と競合するため除外。 */
.motion-rich .card, .motion-rich .case-card, .motion-rich .cs-split-media,
.motion-rich .ts-card, .motion-rich .co-row {
  transition: transform .4s cubic-bezier(0.22, 1.15, 0.36, 1), box-shadow .4s ease;
}
.motion-rich .card:hover, .motion-rich .case-card:hover, .motion-rich .ts-card:hover {
  transform: translateY(-6px); box-shadow: 0 18px 48px rgba(0,0,0,0.14);
}
.motion-rich img:not(.hero-kb):not(.hero-media) { transition: transform .45s cubic-bezier(0.22, 1.15, 0.36, 1); }
.motion-rich .case-card:hover img, .motion-rich .cs-split-media:hover img,
.motion-rich img:not(.hero-kb):not(.hero-media):hover { transform: scale(1.045); }
.motion-rich a.btn-primary:hover, .motion-rich button:hover { transform: translateY(-2px); }
/* (e) 質感：見出しを大きく・引き締める（両側 h1/h2。preview の inline 指定を !important で上書き）。 */
.motion-rich h1 { font-size: clamp(2.6rem, 6vw, 4.6rem) !important; letter-spacing: -0.02em !important; }
.motion-rich h2 { font-size: clamp(1.9rem, 3.6vw, 2.9rem) !important; letter-spacing: -0.01em !important; }
/* === 第2弾：preview限定だった hero の賑やかしを export へ純CSSで移植（lively のみ） ===
   これらのクラスは export の hero だけが出力する（preview は従来どおり自前のinlineで出すため、
   下のルールは preview では一致対象がなく無害＝inert）。視覚値は preview の hero と同値。 */
@keyframes kbfloat { from { transform: translateY(0) scale(1); } to { transform: translateY(-30px) scale(1.05); } }
@keyframes kbpulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.6; transform: scale(0.8); } }
@keyframes kbscroll { 0% { opacity: 0; transform: scaleY(0); transform-origin: top; } 50% { opacity: 1; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(0); transform-origin: bottom; } }
.motion-rich .hero-particles { position: absolute; inset: 0; overflow: hidden; z-index: 0; pointer-events: none; }
.motion-rich .hero-particle { position: absolute; border-radius: 50%; will-change: transform; animation-name: kbfloat; animation-timing-function: ease-in-out; animation-iteration-count: infinite; animation-direction: alternate; }
.motion-rich .hero-grid { position: absolute; inset: 0; z-index: 0; pointer-events: none; background-image: linear-gradient(var(--accent) 1px, transparent 1px), linear-gradient(90deg, var(--accent) 1px, transparent 1px); background-size: 60px 60px; opacity: 0.05; }
.motion-rich .hero-badge { display: inline-flex; align-items: center; gap: 8px; border-radius: 100px; padding: 6px 16px; margin-bottom: 24px; background: color-mix(in srgb, var(--accent) 12%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent); }
.motion-rich .hero-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: kbpulse 2s infinite; }
.motion-rich .hero-badge-text { color: var(--accent); font-size: clamp(11px, 3vw, 13px); font-weight: 600; letter-spacing: 0.08em; white-space: nowrap; }
.motion-rich .hero-scroll { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 8px; color: rgba(255,255,255,0.5); font-size: 12px; letter-spacing: 0.1em; }
.motion-rich .hero-scroll-line { width: 1px; height: 40px; background: linear-gradient(var(--accent), transparent); animation: kbscroll 1.5s ease-in-out infinite; }
/* 段F70-c②：SP(≤560)は SCROLL 非表示＝hero-stats 等との重なり回避。ここ（.hero-scroll の display:flex より後・motionCss 内）に置くことで、
   export core の ≤560 hide が motionCss(後勝ち)の display:flex に上書きされて効かなかった不具合を解消（同一 stylesheet 内で後に来て勝つ）。 */
@media (max-width: 560px) { .motion-rich .hero-scroll { display: none; } }
/* hero 内のコンテンツ/メディアを装飾より前面に（既存 .hero-content/.hero-media の z-index と整合）。 */
.motion-rich .hero .hero-content { position: relative; z-index: 2; }
/* アクセシビリティ：動きを減らす設定では強調分を無効化（reveal/hover を止める）。 */
@media (prefers-reduced-motion: reduce) {
  .motion-rich .reveal { transition: none; }
  .motion-rich .card, .motion-rich .case-card, .motion-rich .cs-split-media,
  .motion-rich .ts-card, .motion-rich .co-row, .motion-rich img { transition: none; }
  .motion-rich .card:hover, .motion-rich .case-card:hover, .motion-rich .ts-card:hover,
  .motion-rich .case-card:hover img, .motion-rich .cs-split-media:hover img,
  .motion-rich img:not(.hero-kb):not(.hero-media):hover,
  .motion-rich a.btn-primary:hover, .motion-rich button:hover { transform: none; box-shadow: none; }
  /* 第2弾の hero 賑やかしも停止（動きを減らす設定を尊重）。 */
  .motion-rich .hero-particle, .motion-rich .hero-badge-dot, .motion-rich .hero-scroll-line { animation: none; }
}