/**
 * Sueoka — design tokens & base.
 * Brand: Black × Red × White (minimal, B2B-grade)
 */
 :root {
  --color-ink: #000000;
  --color-ink-soft: #1a1a1a;
  --color-accent: #E8192C;
  --color-accent-dark: #c0141f;
  --color-surface: #ffffff;
  --color-muted: #f5f5f5;
  --color-border: rgba(0, 0, 0, 0.1);
  --font-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", sans-serif;
  --space-section: clamp(4rem, 8vw, 7rem);
  --content-max: 72rem;
  --transition-base: 0.2s ease;
  --transition-list-hover: 0.35s ease;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  color: var(--color-ink);
  line-height: 1.75;
  background: var(--color-surface);
}

a {
  color: var(--color-ink);
}

.site {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.site-main {
  flex: 1 1 auto;
}

.alignwide,
.alignfull {
  margin-left: auto;
  margin-right: auto;
}

.layout-container {
  width: min(100% - 2rem, var(--content-max));
  margin-left: auto;
  margin-right: auto;
}

br.sp-only-break {
  display: none;
}

br.pc-only-break {
  display: none;
}

@media (max-width: 767px) {
  br.sp-only-break {
    display: block;
  }
}

@media (min-width: 768px) {
  br.pc-only-break {
    display: block;
  }
}

.layout-container--narrow {
  width: min(100% - 2rem, 40rem);
}

/* 下層ページ: ヒーロー・本文は .layout-container（72rem）で統一。.page-intro のみ max-width: 48rem */
.single-sueoka_news article.layout-container,
.single-sueoka_column article.layout-container {
  padding-bottom: clamp(4rem, 8vw, 6rem);
}

/* Header */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: var(--color-surface);
  border-bottom: none;
  transition: background var(--transition-base), box-shadow var(--transition-base);
}

/* 下層ページ: 固定ヘッダー分の余白（フロントは FV がヘッダー下に潜り込む） */
body:not(.sueoka-front-page) .site-main {
  padding-top: 6.5rem;
}

@media (max-width: 767px) {
  body:not(.sueoka-front-page) .site-main {
    padding-top: 4.25rem;
  }
}


@media (min-width: 901px) {
  .site-header {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: clamp(0.75rem, 2vw, 0.9375rem) 2rem;
  }

  .site-header__inner {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    padding: 0;
  }
}

.site-header__inner {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: clamp(0.75rem, 2vw, 0.9375rem) 1rem;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}

.site-branding {
  flex: 0 0 auto;
  min-width: 0;
}

.site-title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
}

.site-title--logo {
  font-size: inherit;
  font-weight: inherit;
  line-height: 1;
}

.site-title--logo .custom-logo-link {
  display: inline-block;
  line-height: 0;
}

.site-title--logo .custom-logo-link img {
  display: block;
  max-height: 42px;
  width: auto;
  height: auto;
}

.site-logo-link {
  display: inline-block;
  line-height: 0;
  position: relative;
}

.site-logo--theme {
  display: block;
  max-height: 42px;
  width: auto;
  height: auto;
}

.site-logo--on-hero {
  display: none;
}

/* TOPヒーロー上（透明ヘッダー）: 白ロゴ */
.sueoka-front-page .site-header:not(.is-scrolled):not(.has-mega-open) .site-logo-link--dual .site-logo--default {
  display: none;
}

.sueoka-front-page .site-header:not(.is-scrolled):not(.has-mega-open) .site-logo-link--dual .site-logo--on-hero {
  display: block;
}

.site-title a {
  color: var(--color-ink);
  text-decoration: none;
}

.site-title a:hover,
.site-title a:focus-visible {
  color: var(--color-accent);
  text-decoration: none;
}

/* Header tools（SP: SNS + ハンバーガー） */
.site-header__tools {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
  flex: 0 0 auto;
}

/* 公式SNSアイコン */
.site-social {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.625rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-social__item {
  margin: 0;
  padding: 0;
}

.site-social__link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  color: var(--color-ink);
  text-decoration: none;
  transition: color var(--transition-base), opacity var(--transition-base);
}

.site-social__link:hover,
.site-social__link:focus-visible {
  color: var(--color-accent);
}

.site-social__icon {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}

.site-social--header-nav {
  display: none;
}

.site-footer .site-social {
  margin-top: 1.25rem;
}

.site-footer .site-social__link {
  color: rgba(255, 255, 255, 0.75);
}

.site-footer .site-social__link:hover,
.site-footer .site-social__link:focus-visible {
  color: #fff;
}

.site-nav__list {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-nav__list a {
  color: var(--color-ink);
  text-decoration: none;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  position: relative;
  padding-bottom: 2px;
}

.site-nav__list a::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--color-accent);
  transition: width var(--transition-base);
}

.site-nav__list a:hover,
.site-nav__list a:focus-visible {
  color: var(--color-accent);
}

.site-nav__list a:hover::after,
.site-nav__list a:focus-visible::after {
  width: 100%;
}

/* Footer */
/* ============================
   Footer
   ============================ */
.site-footer {
  background: var(--color-ink);
  color: rgba(255, 255, 255, 0.75);
}

/* メインエリア（ブランド+ナビの2カラム） */
.site-footer__main {
  padding: clamp(3rem, 6vw, 5rem) 0 clamp(2rem, 4vw, 3rem);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.site-footer__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
}

@media (min-width: 768px) {
  .site-footer__inner {
    grid-template-columns: 1fr auto;
    gap: 4rem;
    align-items: start;
  }
}

/* ブランドカラム */
.site-footer__brand {
  max-width: 35rem;
}

.site-footer__brand-name {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.06em;
}

.site-footer__brand-tagline {
  margin: 0 0 0.5rem;
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.9);
  font-weight: 500;
}

.site-footer__brand-since {
  margin: 0;
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.5);
  letter-spacing: 0.04em;
}

/* ナビカラム */
.site-footer__nav {
  flex-shrink: 0;
}

.site-footer__list {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 768px) {
  .site-footer__list {
    text-align: right;
  }
}

.site-footer__list a {
  color: rgba(255, 255, 255, 0.75);
  text-decoration: none;
  font-size: 0.875rem;
  transition: color var(--transition-base);
}

.site-footer__list a:hover,
.site-footer__list a:focus-visible {
  color: #fff;
}

/* ボトムバー（コピーライト+プライバシー） */
.site-footer__bottom {
  padding: 1.25rem 0;
}

.site-footer__bottom-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1.5rem;
}

.site-footer__copy {
  margin: 0;
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.45);
}

.site-footer__legal {
  margin: 0;
  font-size: 0.8125rem;
}

.site-footer__legal a {
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  transition: color var(--transition-base);
}

.site-footer__legal a:hover,
.site-footer__legal a:focus-visible {
  color: rgba(255, 255, 255, 0.85);
}

/* Page top（参考: https://biyou.kaede-shinkyu.com/ .backToTop — Sueoka は --color-ink 配色） */
.page-top {
  position: fixed;
  right: 2%;
  bottom: 8%;
  z-index: 900;
  width: 3.625rem;
  height: 3.625rem;
  padding: 0;
  border: 1px solid var(--color-ink);
  border-radius: 50%;
  background: var(--color-ink);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.3s ease, visibility 0.3s ease, background var(--transition-base), border-color var(--transition-base);
}

.page-top__icon {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
}

.page-top__icon::after {
  content: "";
  display: block;
  width: 0.9375rem;
  height: 0.9375rem;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
  position: absolute;
  top: 55%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-45deg);
  transition: border-color var(--transition-base);
}

.page-top.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.page-top:hover,
.page-top:focus-visible {
  background: var(--color-surface);
  border-color: var(--color-ink);
}

.page-top:hover .page-top__icon::after,
.page-top:focus-visible .page-top__icon::after {
  border-top-color: var(--color-ink);
  border-right-color: var(--color-ink);
}

.page-top:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

@media (max-width: 767px) {
  .page-top {
    right: 0.625rem;
    bottom: 1.25rem;
    width: 3.125rem;
    height: 3.125rem;
  }

  .page-top__icon::after {
    width: 0.8125rem;
    height: 0.8125rem;
  }

  .page-top:hover,
  .page-top:focus-visible {
    background: var(--color-ink);
    border-color: var(--color-ink);
  }

  .page-top:hover .page-top__icon::after,
  .page-top:focus-visible .page-top__icon::after {
    border-top-color: #fff;
    border-right-color: #fff;
  }
}

/* Sticky Footer（SP: 代表電話・お問い合わせ） */
.sticky-footer {
  --sticky-footer-height: 3.5rem;
  display: none;
}

@media (max-width: 900px) {
  body.has-sticky-footer,
  body:has(.sticky-footer) {
    --sticky-footer-height: 3.5rem;
  }

  body.has-sticky-footer .site,
  body:has(.sticky-footer) .site {
    padding-bottom: calc(var(--sticky-footer-height) + env(safe-area-inset-bottom, 0px));
  }

  body.has-sticky-footer .page-top,
  body:has(.sticky-footer) .page-top {
    bottom: calc(var(--sticky-footer-height) + env(safe-area-inset-bottom, 0px) + 0.75rem);
  }

  .sticky-footer {
    display: grid;
    grid-template-columns: 1fr 1fr;
    position: fixed;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1001;
    min-height: var(--sticky-footer-height);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    background: var(--color-ink);
    transition: opacity 0.25s ease, visibility 0.25s ease;
  }

  body.nav-open .sticky-footer {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }

  .sticky-footer__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: var(--sticky-footer-height);
    padding: 0.65rem 0.75rem;
    color: #fff;
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
    transition: background var(--transition-base), color var(--transition-base);
  }

  .sticky-footer__btn--tel {
    background: var(--color-ink);
    border-right: 1px solid rgba(255, 255, 255, 0.12);
  }

  .sticky-footer__btn--tel:hover,
  .sticky-footer__btn--tel:focus-visible {
    background: var(--color-ink-soft);
  }

  .sticky-footer__btn--contact {
    background: var(--color-accent);
  }

  .sticky-footer__btn--contact:hover,
  .sticky-footer__btn--contact:focus-visible {
    background: var(--color-accent-dark);
  }

  .sticky-footer__btn:focus-visible {
    outline: 2px solid #fff;
    outline-offset: -2px;
  }

  .sticky-footer__icon {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    line-height: 1;
  }

  .sticky-footer__icon svg {
    display: block;
    width: 100%;
    height: 100%;
  }

  .sticky-footer__label--tel {
    font-size: 0.8125rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
  }
}

/* Hero */
.hero {
  background: var(--color-ink);
  color: #fff;
  padding: var(--space-section) 0;
}

.hero--has-media {
  position: relative;
  padding: 0;
  overflow: hidden;
  background: var(--color-ink);
  min-height: min(70vw, 24rem);
}

.hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.hero__img,
.hero__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.hero__poster-fallback {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}

.hero--has-video .hero__img--poster-fallback {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .hero--has-video .hero__video {
    display: none;
  }

  .hero--has-video .hero__img--poster-fallback {
    display: block;
  }
}

.hero__mesh {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0, 0, 0, 0.45);
  pointer-events: none;
}

.hero__scrim {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(
    to right,
    rgba(0, 0, 0, 0.72) 0%,
    rgba(0, 0, 0, 0.42) 60%,
    rgba(0, 0, 0, 0.18) 100%
  );
  pointer-events: none;
}

.hero--has-media .hero__inner {
  position: relative;
  z-index: 2;
  padding: var(--space-section) 0;
}

.hero__inner {
  text-align: center;
}

.hero__title {
  margin: 0 0 1rem;
  font-size: clamp(1.5rem, 4vw, 2.25rem);
  font-weight: 600;
  letter-spacing: 0.04em;
}

.hero__lead {
  margin: 0 0 2rem;
  opacity: 0.92;
}

.hero__stats {
  display: flex;
  justify-content: center;
  gap: 3rem;
  margin: 0;
}

.hero__stat {
  text-align: center;
}

.hero__stat-term {
  margin: 0 0 0.25rem;
  font-size: 0.8125rem;
  opacity: 0.8;
}

.hero__stat-value {
  margin: 0;
  font-size: 2rem;
  font-weight: 700;
  color: #fff;
}

/* Front: 透明ヘッダー → スクロール後に白背景 */
.sueoka-front-page .site-header {
  background: transparent;
  border-bottom: none;
}

/* スクロール後: 白ヘッダーに切り替わる */
.sueoka-front-page .site-header.is-scrolled {
  background: var(--color-surface);
  border-bottom: none;
  box-shadow: none;
}

/* 初期状態のロゴ・ナビテキストを白に（メガメニュー内は除く） */
.sueoka-front-page .site-header:not(.is-scrolled) .site-title a,
.sueoka-front-page .site-header:not(.is-scrolled) .site-nav__list > li > a {
  color: #fff;
}

.sueoka-front-page .site-header:not(.is-scrolled) .site-social__link {
  color: #fff;
}

.sueoka-front-page .site-header:not(.is-scrolled) .site-social__link:hover,
.sueoka-front-page .site-header:not(.is-scrolled) .site-social__link:focus-visible {
  color: #fff;
  opacity: 0.72;
}

.sueoka-front-page .site-header:not(.is-scrolled) .site-nav__list > li > a::after {
  background: #fff;
}

.sueoka-front-page .site-header:not(.is-scrolled) .site-nav-toggle__bar {
  background: #fff;
}

.sueoka-front-page .site-header:not(.is-scrolled) .site-nav-toggle {
  border: none;
  background: transparent;
}

/* FVが固定ヘッダーの下に潜り込む形にするためpadding-topは不要 */
.sueoka-front-page .site-main--front {
  padding-top: 0;
}

@media (min-width: 480px) {
  .sueoka-front-page .site-main--front {
    padding-top: 0;
  }
}

.hero--front {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-height: calc(100svh - 4.25rem);
  padding: clamp(2rem, 8vw, 4rem) 0;
}

.hero--front.hero--has-media {
  min-height: calc(100svh - 4.25rem);
}

.hero__scrim--front {
  background: linear-gradient(
    to right,
    rgba(0, 0, 0, 0.4) 0%,
    rgba(0, 0, 0, 0.2) 55%,
    rgba(0, 0, 0, 0.05) 100%
  );
}

/* Hero GSAP: 初期非表示（JS 無効・低モーション時は解除） */
@media (prefers-reduced-motion: no-preference) {
  .hero--gsap-pending .hero__eyebrow,
  .hero--gsap-pending .hero__lead--front,
  .hero--gsap-pending .hero__actions,
  .hero--gsap-pending .hero__stats--front {
    opacity: 0;
  }

  .hero--gsap-pending .hero__title--front {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero--gsap-pending .hero__eyebrow,
  .hero--gsap-pending .hero__lead--front,
  .hero--gsap-pending .hero__actions,
  .hero--gsap-pending .hero__stats--front,
  .hero--gsap-pending .hero__title--front {
    opacity: 1;
  }
}

.hero__title-line {
  display: block;
  overflow: hidden;
}

.hero__title-char {
  display: inline-block;
  transform-origin: 50% 100%;
  will-change: transform, opacity;
}

.sueoka-front-page .hero--front .hero__inner {
  padding: clamp(2rem, 5vw, 4rem) 0;
  display: flex;
  flex-direction: column;
  gap: clamp(2.5rem, 6vw, 4rem);
  width: 100%;
}

/* Hero V2: 左寄せキャッチコピー主体レイアウト */
.hero--v2 .hero__inner {
  display: flex;
  flex-direction: column;
  gap: clamp(2.5rem, 6vw, 4rem);
}

.hero__content {
  max-width: 39rem;
  text-align: left;
}

@media (min-width: 768px) {
  .hero__content,
  .hero__stats--front {
    margin-left: 10vw;
  }

  .hero__stats--front {
    width: auto;
    max-width: calc(100% - 10vw);
  }
}

.hero__eyebrow {
  margin: 0 0 1.25rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--color-accent);
  opacity: 0.9;
}

.hero__title--front {
  font-size: clamp(2.5rem, 8vw, 4.5rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.25;
  margin: 0 0 1.5rem;
  text-align: left;
  perspective: 36rem;
}

.hero__lead--front {
  font-size: clamp(0.9375rem, 2vw, 1.0625rem);
  letter-spacing: 0.04em;
  line-height: 1.85;
  margin: 0 0 2rem;
  opacity: 0.9;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
}

/* Hero buttons */
.button--hero-primary {
  display: inline-block;
  padding: 0.875rem 2.25rem;
  background: var(--color-accent);
  color: #fff;
  border: 1px solid var(--color-accent);
  border-radius: 0;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-decoration: none;
  transition: background var(--transition-base), border-color var(--transition-base);
}

.button--hero-primary:hover,
.button--hero-primary:focus-visible {
  background: var(--color-accent-dark);
  border-color: var(--color-accent-dark);
  color: #fff;
}

.button--hero-ghost {
  display: inline-block;
  padding: 0.875rem 2.25rem;
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 0;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-decoration: none;
  transition: background var(--transition-base), border-color var(--transition-base);
}

.button--hero-ghost:hover,
.button--hero-ghost:focus-visible {
  background: rgba(255, 255, 255, 0.12);
  border-color: #fff;
  color: #fff;
}

.hero__stats--front {
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-start;
  align-items: flex-start;
  gap: clamp(2.5rem, 10vw, 5rem);
  width: 100%;
}

.sueoka-front-page .hero__stats--front .hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
}

.sueoka-front-page .hero__stats--front .hero__stat-value {
  display: inline-block;
  font-size: clamp(2rem, 5vw, 2.75rem);
  margin: 0;
  order: -1;
  color: #fff;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.sueoka-front-page .hero__stats--front .hero__stat-term {
  margin: 0;
  font-size: 0.8125rem;
  letter-spacing: 0.12em;
  opacity: 0.85;
  font-weight: 500;
}

/* Hero: モバイル（コピー・Stats バランス） */
@media (max-width: 767px) {
  .sueoka-front-page .hero--front .hero__inner {
    gap: clamp(1.5rem, 5vw, 2.5rem);
    padding: clamp(5rem, 16vw, 7rem) 0 clamp(2rem, 6vw, 3rem);
  }

  .hero--v2 .hero__inner {
    gap: clamp(1.5rem, 5vw, 2.5rem);
  }

  .hero__content {
    max-width: 100%;
    padding-left: clamp(0.5rem, 3vw, 1rem);
  }

  .hero__eyebrow {
    margin-bottom: 0.75rem;
    font-size: 0.625rem;
    letter-spacing: 0.2em;
  }

  .hero__title--front {
    font-size: clamp(1.75rem, 7.5vw, 2.25rem);
    letter-spacing: 0.04em;
    line-height: 1.3;
    margin-bottom: 1rem;
  }

  .hero__lead--front {
    font-size: 0.875rem;
    line-height: 1.7;
    letter-spacing: 0.02em;
    margin-bottom: 1.25rem;
  }

  .hero__actions {
    gap: 0.625rem;
  }

  .button--hero-primary,
  .button--hero-ghost {
    padding: 0.75rem 1.375rem;
    font-size: 0.8125rem;
    letter-spacing: 0.07em;
  }

  .hero__stats--front {
    justify-content: flex-start;
    gap: clamp(1.5rem, 6vw, 2.5rem);
    padding-left: clamp(0.5rem, 3vw, 1rem);
  }

  .sueoka-front-page .hero__stats--front .hero__stat {
    flex: 0 0 auto;
    min-width: 0;
    align-items: center;
  }

  .sueoka-front-page .hero__stats--front .hero__stat-value {
    font-size: clamp(1.5rem, 6vw, 2rem);
    line-height: 1.1;
  }

  .sueoka-front-page .hero__stats--front .hero__stat-term {
    font-size: 0.625rem;
    letter-spacing: 0.1em;
    text-align: center;
  }
}

@media (max-width: 390px) {
  .hero__title--front {
    font-size: clamp(1.5rem, 7vw, 1.875rem);
  }

  .sueoka-front-page .hero__stats--front .hero__stat-value {
    font-size: clamp(1.25rem, 5.5vw, 1.625rem);
  }
}

.layout-container--wide {
  width: min(100% - 2rem, 75rem);
}

/* Sections */
.section {
  padding: var(--space-section) 0;
}

.section--intro,
.section--cta {
  background: var(--color-muted);
}

.section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.75rem;
}

.section__title {
  margin: 0 0 1.5rem;
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 700;
  text-align: center;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

.section__prose {
  max-width: 40rem;
  margin: 0 auto;
  text-align: center;
}

.section__prose--intro {
  max-width: 48rem;
  margin: 0 auto;
  text-align: left;
}

.section__prose--intro p {
  margin: 0 0 1rem;
  line-height: 1.85;
  color: #333;
}

.section__prose--intro p:last-child {
  margin-bottom: 0;
}

.section__action {
  margin: 2rem 0 0;
  text-align: center;
}

.section__empty {
  text-align: center;
  color: #666;
}

/* Buttons */
.button {
  display: inline-block;
  padding: 0.75rem 2rem;
  border-radius: 0;
  border: 1px solid var(--color-ink);
  color: var(--color-ink);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.875rem;
  letter-spacing: 0.08em;
  transition: background var(--transition-base), color var(--transition-base);
}

.button:hover,
.button:focus-visible {
  background: var(--color-ink);
  color: #fff;
}

.button--primary {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}

.button--primary:hover,
.button--primary:focus-visible {
  background: var(--color-accent-dark);
  border-color: var(--color-accent-dark);
  color: #fff;
}

/* News list */
.news-list {
  list-style: none;
  margin-block: 0;
  padding: 0;
}

.news-list:not(.news-list--front) {
  border-top: 1px solid var(--color-border);
}

.news-list:not(.news-list--front) .news-list__item {
  border-bottom: 1px solid var(--color-border);
}

/* .news-list:not(.news-list--front) .news-list__item:last-child {
  border-bottom-color: var(--color-ink);
} */

.news-list--front .news-list__item {
  border-bottom: 1px solid #e5e5e5;
}

.news-list--front .news-list__item:last-child {
  border-bottom: none;
}

.news-card,
.front-news-card,
.column-card {
  position: relative;
  isolation: isolate;
  background-color: transparent;
}

.news-card::before,
.front-news-card::before,
.column-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-color: var(--color-muted);
  opacity: 0;
  transition: opacity var(--transition-list-hover);
  pointer-events: none;
}

.news-card {
  transition: none;
}

.news-card__link {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.25rem;
  width: 100%;
  padding: 1.375rem 0.25rem;
  color: var(--color-ink);
  text-decoration: none;
}

.news-list:not(.news-list--front) .news-list__item:hover .news-card::before,
.news-list:not(.news-list--front) .news-list__item:focus-within .news-card::before {
  opacity: 1;
}

.news-card__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.news-card__date {
  flex: 0 0 7.5rem;
  font-size: 0.875rem;
  color: #555;
  font-weight: 500;
  letter-spacing: 0.02em;
}

.news-card__badge {
  flex: 0 0 auto;
  max-width: 100%;
  min-width: 6rem;
  padding: 0.2rem 0.7rem;
  font-size: 0.75rem;
  font-weight: 700;
  background: var(--color-accent);
  color: #fff;
  border-radius: 0;
  letter-spacing: 0.04em;
  line-height: 1.2;
  text-align: center;
  overflow-wrap: anywhere;
}

.news-card__title {
  flex: 1 1 12rem;
  margin: 0;
  font-size: clamp(1rem, 2vw, 1.125rem);
  font-weight: 600;
  line-height: 1.6;
  transition: color var(--transition-list-hover);
}

.news-card__link:hover .news-card__title,
.news-card__link:focus-visible .news-card__title {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Page / entry */
.page-hero {
  margin-bottom: clamp(2rem, 4vw, 3rem);
  padding: clamp(3rem, 6vw, 5rem) 0;
  background: #000000;
  border-bottom: 1px solid var(--color-border);
}

.page-hero__label {
  margin: 0 0 0.75rem;
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  line-height: 1.2;
  text-transform: uppercase;
}

.page-hero__title {
  margin: 0;
  color: #ffffff;
  font-size: clamp(1.875rem, 4vw, 3rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.25;
  perspective: 36rem;
}

.page-hero__title-line {
  display: block;
  overflow: hidden;
}

.page-hero__title-char {
  display: inline-block;
}

/* Page hero GSAP: 初期非表示（JS 無効・低モーション時は解除） */
@media (prefers-reduced-motion: no-preference) {
  .page-hero--gsap-pending .page-hero__label,
  .page-hero--gsap-pending .page-hero__title,
  .page-hero--gsap-pending .page-hero__breadcrumbs {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-hero--gsap-pending .page-hero__label,
  .page-hero--gsap-pending .page-hero__title,
  .page-hero--gsap-pending .page-hero__breadcrumbs {
    opacity: 1;
  }
}

.page-intro {
  max-width: 48rem;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
  color: #444;
  font-size: 1rem;
  line-height: 1.9;
}

.page-intro > *:first-child {
  margin-top: 0;
}

.page-intro > *:last-child {
  margin-bottom: 0;
}

.page-hero__breadcrumbs {
  margin-top: 1.25rem;
}

.page-hero__breadcrumbs .breadcrumbs {
  width: 100%;
  margin-right: 0;
  margin-left: 0;
  padding: 0;
  color: rgba(255, 255, 255, 0.7);
}

.page-hero__breadcrumbs .breadcrumbs__link {
  color: rgba(255, 255, 255, 0.85);
}

.page-hero__breadcrumbs .breadcrumbs__link:hover,
.page-hero__breadcrumbs .breadcrumbs__link:focus-visible {
  color: #fff;
}

.page-hero__breadcrumbs .breadcrumbs__sep {
  color: rgba(255, 255, 255, 0.4);
}

.page-hero__breadcrumbs .breadcrumbs__current {
  color: rgba(255, 255, 255, 0.7);
}

.page-header {
  padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(1.5rem, 3vw, 2.5rem);
  border-bottom: 1px solid var(--color-border);
  margin-bottom: clamp(2rem, 4vw, 3rem);
}

.page-title,
.entry-title {
  margin: 0 0 0.5rem;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

.entry-meta {
  font-size: 0.875rem;
  color: #555;
}

.single-sueoka_news .entry-meta,
.single-sueoka_column .entry-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin: 0 0 0.75rem;
}

.single-sueoka_news .entry-title,
.single-sueoka_column .entry-title {
  margin: 0 0 1.5rem;
  font-size: clamp(1.375rem, 2.5vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.45;
  color: var(--color-ink);
}

.entry-meta__cat {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.7rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.2;
}

.entry-content {
  margin-bottom: 3rem;
}

.single-sueoka_news .entry-content,
.single-sueoka_column .entry-content {
  font-size: 1rem;
  line-height: 1.95;
  color: #333;
}

.single-sueoka_news .entry-content > *:first-child,
.single-sueoka_column .entry-content > *:first-child {
  margin-top: 0;
}

.single-sueoka_news .entry-content p,
.single-sueoka_column .entry-content p {
  margin: 0 0 1.5rem;
}

.single-sueoka_news .entry-content h2,
.single-sueoka_news .entry-content h3,
.single-sueoka_news .entry-content h4,
.single-sueoka_column .entry-content h2,
.single-sueoka_column .entry-content h3,
.single-sueoka_column .entry-content h4 {
  margin: 2.5rem 0 1rem;
  color: var(--color-ink);
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: 0.04em;
}

.single-sueoka_news .entry-content h2,
.single-sueoka_column .entry-content h2 {
  padding-bottom: 0.5rem;
  border-bottom: 1px solid #ddd;
  font-size: clamp(1.25rem, 2.5vw, 1.625rem);
}

.single-sueoka_news .entry-content h3,
.single-sueoka_column .entry-content h3 {
  font-size: clamp(1.125rem, 2.2vw, 1.375rem);
}

.single-sueoka_news .entry-content h4,
.single-sueoka_column .entry-content h4 {
  font-size: 1rem;
}

.single-sueoka_news .entry-content ul,
.single-sueoka_news .entry-content ol,
.single-sueoka_column .entry-content ul,
.single-sueoka_column .entry-content ol {
  margin: 0 0 1.5rem;
  padding-left: 1.5rem;
}

.single-sueoka_news .entry-content li + li,
.single-sueoka_column .entry-content li + li {
  margin-top: 0.4rem;
}

.single-sueoka_news .entry-content blockquote,
.single-sueoka_column .entry-content blockquote {
  margin: 2rem 0;
  padding: 1rem 1.25rem;
  border: 1px solid #ddd;
  background: var(--color-muted);
  color: #333;
}

.single-sueoka_news .entry-content blockquote p:last-child,
.single-sueoka_column .entry-content blockquote p:last-child {
  margin-bottom: 0;
}

.single-sueoka_news .entry-content a,
.single-sueoka_column .entry-content a {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.single-sueoka_news .entry-content a:hover,
.single-sueoka_news .entry-content a:focus-visible,
.single-sueoka_column .entry-content a:hover,
.single-sueoka_column .entry-content a:focus-visible {
  color: var(--color-accent-dark);
}

.single-sueoka_news .entry-content a.link-card,
.single-sueoka_column .entry-content a.link-card {
  color: inherit;
  text-decoration: none;
}

.single-sueoka_news .entry-content a.link-card:hover,
.single-sueoka_news .entry-content a.link-card:focus-visible,
.single-sueoka_column .entry-content a.link-card:hover,
.single-sueoka_column .entry-content a.link-card:focus-visible {
  color: inherit;
}

.link-card {
  display: grid;
  grid-template-columns: 7.5rem 1fr;
  align-items: stretch;
  max-width: 32rem;
  margin: 1.5rem 0;
  overflow: hidden;
  border: 1px solid #ddd;
  background: #fff;
  color: var(--color-ink);
  text-decoration: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

a.link-card:hover,
a.link-card:focus-visible {
  border-color: var(--color-ink);
  box-shadow: 0 4px 16px rgb(0 0 0 / 8%);
}

a.link-card:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

.link-card__thumb {
  display: block;
  min-height: 7.5rem;
  background: #111;
}

.link-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.link-card__placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 7.5rem;
}

.link-card__placeholder--contact {
  background: #111;
}

.link-card__placeholder--contact img {
  width: 70%;
  height: auto;
}

.link-card__placeholder--instagram {
  color: #fff;
  background: radial-gradient(circle at 30% 110%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285aeb 90%);
}

.link-card__placeholder--instagram svg {
  display: block;
}

.link-card__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.85rem 1rem;
  min-width: 0;
}

.link-card__title {
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0.04em;
}

.link-card__desc {
  color: #666;
  font-size: 0.8125rem;
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 480px) {
  .link-card {
    grid-template-columns: 5.5rem 1fr;
  }

  .link-card__thumb,
  .link-card__placeholder {
    min-height: 5.5rem;
  }
}

.entry-archive-back {
  display: flex;
  justify-content: center;
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
  padding-top: clamp(2rem, 4vw, 3rem);
  border-top: 1px solid var(--color-border);
}

.entry-archive-back .button {
  box-sizing: border-box;
  width: min(100%, 14rem);
  text-align: center;
}

.entry-thumb {
  margin: 0 0 2rem;
}

.entry-thumb img {
  width: 100%;
  height: auto;
  border-radius: 0;
}

/* Column archive */
.post-type-archive-sueoka_column .column-list {
  border-top: 1px solid var(--color-border);
}

.column-list__item {
  border-bottom: 1px solid var(--color-border);
}

.column-card {
  transition: none;
}

.column-card__link {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.5rem;
  width: 100%;
  padding: 1.5rem 0.25rem;
  color: var(--color-ink);
  text-decoration: none;
}

.post-type-archive-sueoka_column .column-list__item:hover .column-card::before,
.post-type-archive-sueoka_column .column-list__item:focus-within .column-card::before {
  opacity: 1;
}

.column-card__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.column-card__date {
  flex: 0 0 7.5rem;
  color: #555;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.02em;
}

.column-card__title {
  flex: 1 1 20rem;
  margin: 0;
  color: var(--color-ink);
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.03em;
  transition: color var(--transition-list-hover);
}

.column-card__link:hover .column-card__title,
.column-card__link:focus-visible .column-card__title {
  color: var(--color-accent);
}

.column-card__excerpt {
  margin: 0.75rem 0 0;
  font-size: 0.9375rem;
}

.column-list {
  list-style: none;
  margin-block: 0;
  padding: 0;
}

/* Shops one-page */
.shop-promise {
  margin-bottom: clamp(2rem, 4vw, 2.75rem);
  padding: clamp(1.5rem, 3vw, 2.1rem);
  border: 1px solid #ddd;
  background: #fff;
}

.shop-promise__title {
  margin: 0 0 1.15rem;
  color: var(--color-ink);
  font-size: clamp(1.3rem, 2.6vw, 1.6rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.45;
}

.shop-promise__list {
  counter-reset: shop-promise;
  margin: 0;
  padding: 0;
  list-style: none;
}

.shop-promise__item {
  position: relative;
  counter-increment: shop-promise;
  padding: 1.15rem 4.5rem 1.05rem 1.15rem;
  background: #f8f8f8;
}

.shop-promise__item::after {
  content: counter(shop-promise, decimal-leading-zero);
  position: absolute;
  right: 0.8rem;
  bottom: 0.1rem;
  color: rgba(0, 0, 0, 0.1);
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(2.8rem, 5.6vw, 4.2rem);
  font-weight: 700;
  font-style: italic;
  line-height: 0.86;
  letter-spacing: 0.04em;
  pointer-events: none;
}

.shop-promise__item p {
  margin: 0;
  color: #444;
  font-size: 0.98rem;
  line-height: 1.8;
}

.shop-promise__item p + p {
  margin-top: 0.35rem;
}

.shop-promise__item + .shop-promise__item {
  margin-top: 0.7rem;
}

p.shop-promise__lead {
  font-weight: 700;
  color: var(--color-ink);
  font-size: 1.25rem;
  line-height: 1.6;
}

.shop-promise__note {
  font-size: 0.92rem;
  color: #666;
}

@media (max-width: 639px) {
  .shop-promise {
    padding: 1.15rem 1rem 1.25rem;
  }

  .shop-promise__title {
    margin-bottom: 0.9rem;
    font-size: 1.22rem;
  }

  .shop-promise__item {
    padding: 1rem 3.65rem 0.95rem 0.9rem;
  }

  .shop-promise__item::after {
    right: 0.55rem;
    bottom: 0.05rem;
    font-size: 2.55rem;
  }

  .shop-promise__item p {
    font-size: 0.94rem;
    line-height: 1.75;
  }

  p.shop-promise__lead {
    font-size: 1.08rem;
  }

  .shop-promise__note {
    font-size: 0.86rem;
  }
}

.site-main--shops .shop-page {
  padding-bottom: clamp(4rem, 8vw, 6rem);
}

/* 店舗インデックス */
.shop-nav {
  margin-bottom: clamp(2rem, 4vw, 3rem);
  padding: clamp(1rem, 2vw, 1.25rem) clamp(1.25rem, 3vw, 1.5rem);
  background: #f8f8f8;
  border-left: 3px solid var(--color-accent);
  border-right: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.shop-nav__label {
  margin: 0 0 0.75rem;
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  line-height: 1.2;
}

.shop-nav__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.shop-nav__link {
  display: inline-block;
  padding: 0.45rem 0.75rem;
  border: 1px solid #ddd;
  background: #fff;
  color: var(--color-ink);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.4;
  text-decoration: none;
  transition: border-color var(--transition-base), color var(--transition-base);
}

.shop-nav__link:hover,
.shop-nav__link:focus-visible {
  border-color: var(--color-accent);
  color: var(--color-accent);
}

/* 店舗ブロック（事業所紹介型） */
.shop-directory .shop-block {
  padding: clamp(3rem, 6vw, 4.5rem) 0;
  /* 固定ヘッダー分のオフセット（アンカー到達位置） */
  scroll-margin-top: 7.25rem;
}

@media (max-width: 767px) {
  .shop-directory .shop-block {
    scroll-margin-top: 5rem;
  }
}

.shop-block__header {
  margin-bottom: clamp(1.5rem, 3vw, 2rem);
}

.shop-block__title {
  margin: 0;
  padding-bottom: 0.65rem;
  color: var(--color-ink);
  font-size: clamp(1.375rem, 3vw, 1.75rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.35;
}

.shop-block__layout {
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}

@media (max-width: 900px) {
  .shop-nav__list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.5rem;
  }

  .shop-nav__item {
    min-width: 0;
  }

  .shop-nav__link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 2.5rem;
    padding: 0.4rem 0.35rem;
    font-size: 0.75rem;
    line-height: 1.3;
    text-align: center;
  }

  .shop-block__visual {
    order: -1;
  }
}

@media (min-width: 900px) {
  .shop-block__layout {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(2rem, 4vw, 3.5rem);
  }

  .shop-block__visual {
    order: 0;
  }

  .shop-block--reverse .shop-block__visual {
    order: -1;
  }
}

.shop-block__visual {
  min-width: 0;
}

.shop-block__media {
  margin: 0;
}

.shop-block__img {
  display: block;
  width: 100%;
  height: auto;
}

.shop-block__instagram {
  display: flex;
  justify-content: flex-end;
  margin: 0.85rem 0 0;
}

.shop-instagram-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--color-ink);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  transition: color var(--transition-base);
}

.shop-instagram-link:hover,
.shop-instagram-link:focus-visible {
  color: var(--color-accent);
}

.shop-instagram-link__icon {
  width: 1.35rem;
  height: 1.35rem;
  fill: currentColor;
}

.shop-message {
  margin-top: clamp(2rem, 4vw, 3rem);
  padding: clamp(1.25rem, 3vw, 1.75rem);
  background: #f8f8f8;
  border-left: 3px solid var(--color-accent);
}

.shop-message__title {
  margin: 0 0 0.9rem;
  color: var(--color-ink);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.shop-message__body {
  color: #444;
  font-size: 0.9375rem;
  line-height: 1.9;
}

.shop-message__body p {
  margin: 0;
}

.shop-message__body p + p {
  margin-top: 0.45rem;
}

.shop-map {
  margin-top: clamp(1.5rem, 3vw, 2rem);
}

.shop-map__iframe {
  display: block;
  width: 100%;
  height: clamp(18rem, 40vw, 28rem);
  border: 0;
  filter: grayscale(1);
  transition: filter var(--transition-base);
}

@media (min-width: 900px) {
  .shop-map:hover .shop-map__iframe,
  .shop-map:focus-within .shop-map__iframe {
    filter: grayscale(0);
  }
}

/* 店舗スペック表 */
.shop-spec {
  margin: 0;
}

.shop-spec__row {
  display: grid;
  grid-template-columns: 7rem 1fr;
  gap: 0.25rem 1rem;
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.9375rem;
}

.shop-spec__row:first-child {
  border-top: 1px solid var(--color-border);
}

.shop-spec__row dt {
  margin: 0;
  font-weight: 700;
  color: var(--color-ink);
  font-size: 0.875rem;
  letter-spacing: 0.04em;
}

.shop-spec__row dd {
  margin: 0;
  color: #444;
}

.shop-address {
  display: block;
}

.shop-address__postal,
.shop-address__street {
  display: block;
}

.shop-address__street {
  margin-top: 0.15em;
}

.shop-spec__row dd a {
  color: var(--color-ink);
  text-decoration: none;
  transition: color var(--transition-base);
}

.shop-spec__row dd a:hover,
.shop-spec__row dd a:focus-visible {
  color: var(--color-accent);
}

.pagination {
  padding: 2rem 0;
}

.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
}

.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  min-height: 2.5rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-border);
  border-radius: 0;
  background: var(--color-surface);
  color: var(--color-ink);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  transition: background-color var(--transition-base), border-color var(--transition-base), color var(--transition-base);
}

.pagination a.page-numbers:hover,
.pagination a.page-numbers:focus-visible,
.pagination .page-numbers.current {
  border-color: var(--color-ink);
  background: var(--color-ink);
  color: #fff;
}

@media (max-width: 600px) {
  .hero__stats:not(.hero__stats--front) {
    flex-direction: column;
    gap: 1.5rem;
  }

  body:not(.post-type-archive-sueoka_news):not(.tax-sueoka_news_cat) .news-card__link {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* Breadcrumbs */
.breadcrumbs {
  padding: 0.75rem 0 0;
  font-size: 0.8125rem;
  color: #666;
}

.breadcrumbs__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.breadcrumbs__link {
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.breadcrumbs__link:hover,
.breadcrumbs__link:focus-visible {
  color: var(--color-accent);
}

.breadcrumbs__sep {
  color: #aaa;
  user-select: none;
}

.breadcrumbs__current {
  color: #444;
}

/* Front: 選ばれる理由 */
.section--reasons {
  background: var(--color-surface);
}

/* セクションヘッダー（ラベル+タイトルの左寄せ構造） */
.section__header {
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.section__title--left {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  margin: 0;
  text-align: left;
  color: var(--color-ink);
}

/* ダーク背景用ラベル */
.section__label--light {
  color: rgba(255, 255, 255, 0.6);
}

/* ダーク背景用タイトル */
.section__title--left.section__title--on-dark {
  color: #fff;
}

/* レガシーモックアップ用（他セクションで使用中） */
.section__title--front {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  margin-bottom: clamp(2.5rem, 5vw, 3.75rem);
  color: var(--color-ink);
}

.reasons-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--color-border);
}

@media (min-width: 768px) {
  .reasons-grid {
    grid-template-columns: repeat(3, 1fr);
    border-top: none;
    border-left: 1px solid var(--color-border);
  }
}

/* V2: 番号仙8き左寄せカード */
.reason-card--v2 {
  padding: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2.5rem);
  border-bottom: 1px solid var(--color-border);
  position: relative;
}

@media (min-width: 768px) {
  .reason-card--v2 {
    border-bottom: none;
    border-right: 1px solid var(--color-border);
  }
}

.reason-card__number {
  display: block;
  font-size: 3rem;
  font-weight: 700;
  color: var(--color-accent);
  line-height: 1;
  margin-bottom: 1.25rem;
  font-feature-settings: 'tnum';
  letter-spacing: -0.02em;
}

.reason-card__title {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-ink);
  letter-spacing: 0.04em;
}

.reason-card__text {
  margin: 0;
  font-size: 0.9375rem;
  color: #555;
  line-height: 1.85;
}

/* Front: サービス一覧（交互レイアウト） */
.section--front-services {
  background: var(--color-muted);
}

/* サービスグリッド（PC: カードグリッド / SP: 横スクロール1行） */
.service-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (max-width: 767px) {
  /* 左は見出しと同じ開始位置、右だけ画面端まで伸ばしてスクロール */
  .section--front-services .layout-container--wide {
    overflow: visible;
  }

  .section--front-services .service-grid-scroll {
    width: calc(100% + (100vw - 100%) / 2);
    max-width: none;
    margin: 0;
    padding: 0 1rem 0.35rem 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .section--front-services .service-grid-scroll::-webkit-scrollbar {
    display: none;
  }

  .section--front-services .service-grid {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.875rem;
    width: max-content;
    min-width: 100%;
    margin: 0;
    padding: 0;
  }

  .section--front-services .service-grid__item {
    flex: 0 0 min(72vw, 16.5rem);
    width: min(72vw, 16.5rem);
    max-width: 16.5rem;
    scroll-snap-align: start;
  }

  .section--front-services .service-item__body {
    padding: 1.15rem;
  }

  .section--front-services .service-item__text {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
}

@media (min-width: 768px) {
  .service-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .section--front-services .service-grid-scroll {
    overflow: visible;
  }
}

@media (min-width: 1024px) {
  .service-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .service-item,
  .service-item__link {
    cursor: pointer;
  }
}

.service-item {
  background: var(--color-surface);
  height: 100%;
  overflow: hidden;
  transition: box-shadow var(--transition-base);
}

.service-item:has(.service-item__link:hover),
.service-item:has(.service-item__link:focus-visible) {
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.1);
}

.service-item__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  color: inherit;
  text-decoration: none;
  overflow: hidden;
}

.service-item__media {
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: #e8e8e8;
}

.service-item__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.service-item__link:hover .service-item__img,
.service-item__link:focus-visible .service-item__img {
  transform: scale(1.04);
}

.service-item__placeholder {
  width: 100%;
  height: 100%;
  background: #e0e0e0;
}

.service-item__body {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}

.service-item__tag {
  display: inline-block;
  padding: 0.2rem 0.6rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-bottom: 0.75rem;
  align-self: flex-start;
}

.service-item__title {
  margin: 0 0 0.75rem;
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--color-ink);
  letter-spacing: 0.02em;
}

.service-item__text {
  margin: 0 0 1.25rem;
  font-size: 0.875rem;
  color: #666;
  line-height: 1.85;
  flex: 1 1 auto;
}

.service-item__more {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--color-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--color-ink);
  padding-bottom: 2px;
  align-self: flex-start;
  transition:
    color var(--transition-base),
    border-color var(--transition-base),
    transform var(--transition-base);
}

.service-item__link:hover .service-item__title,
.service-item__link:focus-visible .service-item__title {
  color: var(--color-accent);
}

.service-item__link:hover .service-item__more,
.service-item__link:focus-visible .service-item__more {
  color: var(--color-accent);
  border-color: var(--color-accent);
  transform: translateX(0.35rem);
}

.service-item__arrow {
  display: inline-block;
}

/* 下位互換性のため旧クラスは残す */
.front-service-row__tag {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-radius: 0;
  margin-bottom: 1rem;
}

/* Front: パートナー（PC: 従来 / モバイル: 2行マーキー） */
.section--partners {
  background: #f8f9fa;
  text-align: center;
}

.partners-layout--desktop {
  display: none;
}

.partners-layout--mobile {
  display: block;
  padding: 0 0 clamp(3rem, 8vw, 5rem);
  margin-top: clamp(2rem, 5vw, 3.125rem);
  overflow: hidden;
}

.section--partners .layout-container--wide {
  padding-left: clamp(1.25rem, 5vw, 3.75rem);
  padding-right: clamp(1.25rem, 5vw, 3.75rem);
}

.section__title--partners {
  margin: 0;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-align: center;
  color: var(--color-ink);
}

.section--partners__head {
  padding: clamp(3rem, 8vw, 6.25rem) clamp(1.25rem, 5vw, 3.75rem) 0;
}

.partners-heading__desktop {
  display: none;
}

.partners-heading__mobile {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15em;
  font-size: clamp(1.125rem, 4.2vw, 1.75rem);
  line-height: 1.45;
}

.section__title-partners-line {
  display: block;
  white-space: nowrap;
}

.partner-marquee {
  display: flex;
  flex-direction: column;
  gap: clamp(0.625rem, 2.5vw, 1rem);
  width: 100%;
  margin-top: clamp(2rem, 5vw, 3.125rem);
}

.partner-marquee__row {
  overflow: hidden;
  width: 100%;
  -webkit-mask-image: linear-gradient(
    90deg,
    transparent 0%,
    #000 8%,
    #000 92%,
    transparent 100%
  );
  mask-image: linear-gradient(
    90deg,
    transparent 0%,
    #000 8%,
    #000 92%,
    transparent 100%
  );
}

.partner-marquee__row--alt {
  padding-left: clamp(2.5rem, 12vw, 5rem);
}

.partner-marquee__track {
  display: flex;
  width: max-content;
  animation: partner-marquee-scroll 42s linear infinite;
  will-change: transform;
}

.partner-marquee__row--alt .partner-marquee__track {
  animation-duration: 36s;
  animation-direction: reverse;
}

.partner-marquee__group {
  display: flex;
  flex-shrink: 0;
  align-items: stretch;
  gap: clamp(0.5rem, 2vw, 0.75rem);
  padding-right: clamp(0.5rem, 2vw, 0.75rem);
}

.partner-marquee__item {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: clamp(7.5rem, 28vw, 11.25rem);
  height: clamp(4rem, 14vw, 5.625rem);
  padding: clamp(0.75rem, 3vw, 1.25rem);
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  box-sizing: border-box;
}

.partner-marquee__logo {
  display: block;
  width: auto;
  max-width: 100%;
  height: 100%;
  max-height: clamp(2.5rem, 9vw, 3.5rem);
  object-fit: contain;
  opacity: 0.45;
  filter: grayscale(100%);
  transition: opacity var(--transition-base), filter var(--transition-base);
}

.partner-marquee__item:hover .partner-marquee__logo,
.partner-marquee__item:focus-within .partner-marquee__logo {
  opacity: 0.72;
}

.partner-marquee__fallback {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #aaa;
  text-align: center;
}

@keyframes partner-marquee-scroll {
  from {
    transform: translate3d(0, 0, 0);
  }

  to {
    transform: translate3d(-50%, 0, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .partner-marquee__track {
    animation: none;
    flex-wrap: wrap;
    justify-content: center;
    width: 100%;
    max-width: 48rem;
    margin: 0 auto;
  }

  .partner-marquee__row {
    -webkit-mask-image: none;
    mask-image: none;
  }

  .partner-marquee__row--alt {
    padding-left: 0;
  }

  .partner-marquee__group[aria-hidden='true'] {
    display: none;
  }
}

@media (min-width: 901px) {
  .section--partners {
    overflow: visible;
  }

  .partners-layout--mobile {
    display: none;
  }

  .section--partners__head {
    padding: clamp(3rem, 8vw, 6.25rem) clamp(1.25rem, 5vw, 3.75rem) 0;
  }

  .partners-layout--mobile {
    margin-top: 0;
  }

  .partners-layout--desktop {
    display: block;
    padding: 0 clamp(1.25rem, 5vw, 3.75rem) clamp(3rem, 8vw, 6.25rem);
    margin-top: clamp(2rem, 5vw, 3.125rem);
  }

  .partners-heading__desktop {
    display: inline;
  }

  .partners-heading__mobile {
    display: none;
  }

  .section__title--partners {
    font-size: clamp(1.125rem, 2.5vw, 1.75rem);
    line-height: 1.4;
  }

  .partner-strip {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: clamp(1.5rem, 5vw, 3.75rem);
    margin-top: clamp(2rem, 5vw, 3.125rem);
  }

  .partner-strip__logo {
    height: clamp(48px, 12vw, 5.625rem);
    width: auto;
    max-width: 10rem;
    object-fit: contain;
    opacity: 0.4;
    filter: grayscale(100%);
    transition: opacity var(--transition-base), filter var(--transition-base);
  }

  .partner-strip__logo:hover,
  .partner-strip__logo:focus-visible {
    opacity: 0.7;
  }

  .partner-strip__fallback {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 5rem;
    padding: 0.5rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: #aaa;
    border: 1px solid #ddd;
    border-radius: 0;
    opacity: 0.8;
  }
}

/* Front: NEWS */
.section--news-front {
  background: var(--color-surface);
  border-top: 1px solid var(--color-border);
}

.front-news-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.front-news-list__item {
  border-bottom: 1px solid var(--color-border);
}

.front-news-card {
  transition: none;
}

.front-news-card__link {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.75rem 1.25rem;
  width: 100%;
  padding: 1.5rem 0.25rem;
  color: var(--color-ink);
  text-decoration: none;
}

@media (min-width: 640px) {
  .front-news-card__link {
    flex-wrap: nowrap;
    gap: 1.5rem;
    padding: 1.75rem 0.5rem;
  }
}

.front-news-list__item:hover .front-news-card::before,
.front-news-list__item:focus-within .front-news-card::before {
  opacity: 1;
}

.front-news-card__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.front-news-card__date {
  flex-shrink: 0;
  font-size: 0.875rem;
  color: #999;
  min-width: 7rem;
}

.front-news-card__badge {
  flex-shrink: 0;
  max-width: 100%;
  min-width: 6rem;
  padding: 0.2rem 0.65rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: 0;
  letter-spacing: 0.04em;
  line-height: 1.2;
  text-align: center;
  overflow-wrap: anywhere;
}

.front-news-card__badge--muted {
  background: #94a3b8;
}

.front-news-card__title {
  flex: 1 1 100%;
  margin: 0;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.55;
  transition: color var(--transition-list-hover);
}

@media (min-width: 640px) {
  .front-news-card__title {
    flex: 1 1 auto;
    min-width: 0;
  }
}

.front-news-card__link:hover .front-news-card__title,
.front-news-card__link:focus-visible .front-news-card__title {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .news-card::before,
  .front-news-card::before,
  .column-card::before,
  .news-card__title,
  .front-news-card__title,
  .column-card__title {
    transition: none;
  }
}

/* Front: 店舗ダークセクション */
.section--locations-front {
  background-color: var(--color-ink);
  background-image:
    linear-gradient(rgba(0, 0, 0, 0.68), rgba(0, 0, 0, 0.64)),
    url("../images/front-location/bg.jpg");
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  color: #fff;
}

@media (max-width: 639px) {
  .section--locations-front {
    background-image:
      linear-gradient(rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.86)),
      url("../images/front-location/bg_sp.jpg");
    background-position: center top;
  }
}

.section__title--on-dark {
  color: #fff;
}

.location-front-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 640px) {
  .location-front-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .location-front-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

.location-front-card {
  background: rgba(0, 0, 0, 0.6);
  padding: 1.5rem 1.25rem;
  border-radius: 0;
  border-left: 2px solid rgba(255, 255, 255, 0.5);
  height: 100%;
}

.location-front-card__name {
  margin: 0 0 0.75rem;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.04em;
}

.location-front-card__address {
  margin: 0 0 0.75rem;
  font-size: 0.875rem;
  opacity: 0.85;
  line-height: 1.6;
}

.location-front-card__tel {
  margin: 0;
  font-size: 0.875rem;
}

.location-front-card__tel a {
  color: #fff;
  text-decoration: none;
}

.location-front-card__tel-label {
  opacity: 0.7;
}

.location-front-card__address .shop-address__city {
  display: block;
}

@media (max-width: 639px) {
  .location-front-card__address .shop-address__city,
  .location-front-card__address .shop-address__street {
    display: inline;
  }

  .location-front-card__address .shop-address__street {
    margin-top: 0;
  }
}

.location-front__more {
  margin: 2.5rem 0 0;
  text-align: center;
}

.button--ghost-light {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, 0.5);
}

.button--ghost-light:hover,
.button--ghost-light:focus-visible {
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  border-color: #fff;
}

/* Front: CTA */
.section--cta-front {
  background: var(--color-muted);
  border-top: 1px solid var(--color-border);
}

.section__title--cta {
  font-weight: 700;
  letter-spacing: 0.04em;
}

.section__prose--cta-front {
  max-width: 40rem;
  margin: 0 auto 1.5rem;
  text-align: center;
  font-size: 1rem;
  line-height: 1.85;
  color: #666;
}

@media (max-width: 639px) {
  .section__prose--cta-front {
    text-align: left;
  }

  .section__prose--cta-front .pc-only-break {
    display: none;
  }
}

.button--cta-front {
  padding: 1rem 3rem;
  font-size: 1rem;
  border-radius: 0;
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
  letter-spacing: 0.1em;
}

.button--cta-front:hover,
.button--cta-front:focus-visible {
  background: var(--color-accent-dark);
  border-color: var(--color-accent-dark);
  color: #fff;
}

/* Service cards (front) */
.section--services {
  background: var(--color-surface);
}

.service-cards {
  display: grid;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 640px) {
  .service-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}

.service-card {
  height: 100%;
  padding: 1.5rem;
  border: 1px solid var(--color-border);
  border-radius: 0;
  background: var(--color-muted);
}

.service-card__title {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
}

.service-card__title a {
  color: var(--color-ink);
  text-decoration: none;
}

.service-card__title a:hover,
.service-card__title a:focus-visible {
  color: var(--color-accent);
}

.service-card__text {
  margin: 0 0 1rem;
  font-size: 0.9375rem;
  color: #555;
}

.service-card__link {
  font-weight: 600;
  text-decoration: none;
}

.service-card__link:hover,
.service-card__link:focus-visible {
  text-decoration: underline;
}

/* Search */
.search-results {
  list-style: none;
  margin: 0;
  padding: 0 0 2rem;
}

.search-results__item {
  border-bottom: 1px solid #e5e5e5;
  padding: 1.25rem 0;
}

.search-hit__title {
  margin: 0 0 0.35rem;
  font-size: 1.125rem;
}

.search-hit__title a {
  color: var(--color-ink);
  text-decoration: none;
}

.search-hit__title a:hover,
.search-hit__title a:focus-visible {
  color: var(--color-accent);
}

.search-hit__meta {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  color: #888;
}

.search-hit__excerpt {
  margin: 0;
  font-size: 0.9375rem;
  color: #555;
}

.taxonomy-description {
  margin: 0;
  color: #555;
  max-width: 40rem;
}

/* Contact Form 7 baseline */
.wpcf7 {
  max-width: 40rem;
  margin: 0 auto 2rem;
  padding: clamp(1.5rem, 4vw, 2.5rem);
  border: 1px solid var(--color-ink);
  background: var(--color-surface);
}

.wpcf7 form {
  margin: 0;
}

.wpcf7-form p {
  margin: 0 0 1.25rem;
}

.wpcf7-form p:last-child {
  margin-bottom: 0;
}

.wpcf7-form label {
  display: block;
  margin-bottom: 0.45rem;
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--color-ink);
}

.wpcf7-form .required,
.wpcf7-form .is-required,
.wpcf7-form .required-mark {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.35rem;
  border: 1px solid var(--color-accent);
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
}

.wpcf7-form .wpcf7-form-control-wrap {
  display: block;
}

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form input[type="number"],
.wpcf7-form input[type="date"],
.wpcf7-form textarea,
.wpcf7-form select {
  width: 100%;
  max-width: 100%;
  min-height: 3.25rem;
  padding: 0.85rem 1rem;
  margin-top: 0.35rem;
  border: 1px solid var(--color-border);
  border-radius: 0;
  background: #fff;
  color: var(--color-ink);
  font: inherit;
  line-height: 1.5;
  transition:
    border-color var(--transition-base),
    box-shadow var(--transition-base),
    background-color var(--transition-base);
  appearance: none;
}

.wpcf7-form input[type="checkbox"],
.wpcf7-form input[type="radio"] {
  width: 1rem;
  height: 1rem;
  margin: 0 0.5rem 0 0;
  accent-color: var(--color-accent);
}

.wpcf7-form textarea {
  min-height: 11rem;
  resize: vertical;
}

.wpcf7-form select {
  padding-right: 2.75rem;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--color-ink) 50%),
    linear-gradient(135deg, var(--color-ink) 50%, transparent 50%);
  background-position:
    calc(100% - 1.1rem) 50%,
    calc(100% - 0.75rem) 50%;
  background-size: 0.35rem 0.35rem, 0.35rem 0.35rem;
  background-repeat: no-repeat;
}

.wpcf7-form input::placeholder,
.wpcf7-form textarea::placeholder {
  color: rgba(0, 0, 0, 0.42);
}

.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form input[type="url"]:focus,
.wpcf7-form input[type="number"]:focus,
.wpcf7-form input[type="date"]:focus,
.wpcf7-form textarea:focus,
.wpcf7-form select:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: inset 0 -2px 0 var(--color-accent);
}

.wpcf7-form .wpcf7-not-valid {
  border-color: var(--color-accent);
  background: rgba(232, 25, 44, 0.04);
}

.wpcf7-form .wpcf7-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 12rem;
  min-height: 3.25rem;
  padding: 0.85rem 2.5rem;
  border-radius: 0;
  border: 1px solid var(--color-accent);
  background: var(--color-accent);
  color: #fff;
  font-weight: 700;
  font-size: 0.9375rem;
  letter-spacing: 0.08em;
  line-height: 1;
  cursor: pointer;
  transition:
    background var(--transition-base),
    border-color var(--transition-base),
    color var(--transition-base);
}

.wpcf7-form p:has(.wpcf7-submit) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1.75rem;
}

.wpcf7-form .wpcf7-submit:hover,
.wpcf7-form .wpcf7-submit:focus-visible {
  background: var(--color-ink);
  border-color: var(--color-ink);
}

.wpcf7-form .wpcf7-submit:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.wpcf7-spinner {
  margin: 0;
}

.wpcf7-list-item {
  display: inline-flex;
  align-items: center;
  margin: 0.35rem 1.25rem 0.35rem 0;
}

.wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  margin: 0;
  font-weight: 500;
}

.wpcf7-acceptance {
  display: block;
  margin-top: 0.5rem;
}

.wpcf7-not-valid-tip {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--color-accent);
}

.wpcf7 form .wpcf7-response-output {
  box-sizing: border-box;
}

.wpcf7-response-output {
  margin: 1.5rem 0 0;
  padding: 1rem 1.25rem;
  border: 1px solid var(--color-ink);
  border-radius: 0;
  background: #fff;
  color: var(--color-ink);
  font-weight: 600;
  text-align: left;
}

.wpcf7 form.sent .wpcf7-response-output {
  border-color: var(--color-ink);
  background: var(--color-ink);
  color: #fff;
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
  border-color: var(--color-accent);
  background: rgba(232, 25, 44, 0.06);
  color: var(--color-ink);
}

/* Contact page */
.site-main--contact {
  padding-bottom: clamp(4rem, 8vw, 6rem);
}

.contact-page {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 4.5rem);
}

.contact-section__head {
  margin-bottom: clamp(1.5rem, 3vw, 2rem);
}

.contact-section__label {
  margin: 0 0 0.5rem;
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  line-height: 1.2;
  text-transform: uppercase;
}

.contact-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 2.8vw, 1.75rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.45;
}

.contact-shop-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(0.75rem, 2vw, 1rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .contact-shop-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.contact-shop-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  min-height: 100%;
  padding: clamp(1.25rem, 2.5vw, 1.5rem) clamp(0.75rem, 2vw, 1rem);
  border: 1.5px solid rgba(0, 0, 0, 0.22);
  background: var(--color-surface);
  text-align: center;
  transition:
    border-color var(--transition-base),
    background-color var(--transition-list-hover);
}

.contact-shop-grid__item:hover .contact-shop-card,
.contact-shop-grid__item:focus-within .contact-shop-card {
  border-color: var(--color-ink);
  background: var(--color-ink);
}

.contact-shop-grid__item:hover .contact-shop-card__name,
.contact-shop-grid__item:focus-within .contact-shop-card__name,
.contact-shop-grid__item:hover .contact-shop-card__tel-link,
.contact-shop-grid__item:focus-within .contact-shop-card__tel-link,
.contact-shop-grid__item:hover .contact-shop-card__link,
.contact-shop-grid__item:focus-within .contact-shop-card__link {
  color: #fff;
}

.contact-shop-grid__item:hover .contact-shop-card__link,
.contact-shop-grid__item:focus-within .contact-shop-card__link {
  border-bottom-color: rgba(255, 255, 255, 0.6);
}

.contact-shop-card__name {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.4;
}

.contact-shop-card__tel {
  margin: 0;
}

.contact-shop-card__tel-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  color: var(--color-ink);
  font-size: clamp(1rem, 2.2vw, 1.125rem);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: color var(--transition-base);
}

.contact-shop-card__tel-icon {
  flex-shrink: 0;
  font-size: 0.9em;
  opacity: 0.72;
  transition: opacity var(--transition-base);
}

.contact-shop-card__tel-num {
  line-height: 1.2;
}

.contact-shop-grid__item:hover .contact-shop-card__tel-icon,
.contact-shop-grid__item:focus-within .contact-shop-card__tel-icon {
  opacity: 1;
}

.contact-shop-card__tel-link:hover,
.contact-shop-card__tel-link:focus-visible {
  color: var(--color-accent);
}

.contact-shop-card__action {
  margin: 0;
}

.contact-shop-card__link {
  display: inline-block;
  padding-bottom: 0.125rem;
  border-bottom: 1px solid transparent;
  color: var(--color-accent);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-decoration: none;
  transition:
    color var(--transition-base),
    border-color var(--transition-base);
}

.contact-shop-card__link:hover,
.contact-shop-card__link:focus-visible {
  border-bottom-color: currentColor;
}

.contact-hours {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  width: fit-content;
  max-width: 100%;
  margin: clamp(1.5rem, 3vw, 2rem) auto 0;
  padding: 0.6rem 1.25rem;
  border: 1px solid var(--color-border);
  background: var(--color-muted);
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.5;
}

.contact-hours__badge {
  display: inline-block;
  padding: 0.2rem 0.6rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.contact-hours__time {
  display: inline-block;
  color: var(--color-ink);
}

.contact-mail-notice {
  margin: 0 0 clamp(1.5rem, 3vw, 2rem);
  padding: 1.25rem 1.5rem;
  border: 1.5px solid var(--color-ink);
  background: var(--color-muted);
}

.contact-mail-notice p {
  margin: 0 0 0.5rem;
  color: var(--color-ink);
  font-size: 0.9375rem;
  line-height: 1.85;
}

.contact-mail-notice p:last-child {
  margin-bottom: 0;
}

.contact-mail-notice__title {
  font-weight: 700;
  letter-spacing: 0.04em;
}

.contact-form-section__lead {
  margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
  color: #444;
  font-size: 0.9375rem;
  line-height: 1.85;
}

.contact-form-section__lead p {
  margin: 0 0 0.5rem;
}

.contact-form-section__lead p:last-child {
  margin-bottom: 0;
}

/* Form panel: full section width, comfortable inner column */
.contact-form-panel {
  padding-block: clamp(1.75rem, 4vw, 2.75rem);
}

.contact-form-panel__inner {
  width: min(100%, 56rem);
  margin-inline: auto;
}

/* Step indicator */
.contact-steps {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  width: 100%;
  max-width: none;
  margin: 0 0 clamp(1rem, 2vw, 2.75rem);
  padding: 0;
  list-style: none;
}

.contact-steps__item {
  position: relative;
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 0.35rem;
  padding: 0 0.5rem;
  color: #9a9a9a;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-align: center;
}

.contact-steps__item::after {
  display: none;
}

.contact-steps__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  margin-bottom: 0.15rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 0.8125rem;
}

.contact-steps__item.is-active {
  color: var(--color-ink);
}

.contact-steps__item.is-active::before {
  content: "";
  position: absolute;
  bottom: -0.35rem;
  left: 10%;
  width: 80%;
  height: 2px;
  background: var(--color-accent);
}

.contact-steps__item.is-active .contact-steps__num {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}


.contact-form-section__form {
  margin-bottom: 0;
}

.contact-form-section__form .wpcf7 {
  max-width: none;
  margin: 0;
  padding: clamp(1.5rem, 3vw, 2rem) 0;
  border: none;
  background: transparent;
}

.contact-form-section__form .wpcf7-form {
  margin: 0;
}

/* Field rows: label left / input right (PeptiDream-style) */
.contact-form-fields {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.contact-field {
  display: grid;
  grid-template-columns: min(28%, 13rem) 1fr;
  column-gap: clamp(2rem, 5vw, 3.5rem);
  align-items: center;
  margin: 0;
  padding: clamp(1.35rem, 3vw, 1.85rem) 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.contact-field:first-child {
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.contact-field__label {
  position: relative;
  grid-column: 1;
  grid-row: 1;
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0 3rem 0 0;
  font-weight: 400;
  font-size: 1rem;
  letter-spacing: 0.02em;
  line-height: 1.5;
  color: var(--color-ink);
}

.contact-field__label br,
.contact-form-section__form .wpcf7-form .contact-field > br {
  display: none;
}

.contact-field__label-text {
  display: block;
  min-width: 0;
}

.contact-field:has(.wpcf7-radio) .contact-field__label {
  align-self: center;
}

.contact-field__control {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
}

.contact-field__control .wpcf7-form-control-wrap {
  display: block;
}

/* Contact form inputs: override global .wpcf7 spacing */
.contact-form-section__form .wpcf7-form input[type="text"],
.contact-form-section__form .wpcf7-form input[type="email"],
.contact-form-section__form .wpcf7-form input[type="tel"],
.contact-form-section__form .wpcf7-form input[type="url"],
.contact-form-section__form .wpcf7-form textarea,
.contact-form-section__form .wpcf7-form select {
  width: 100%;
  min-height: 3.375rem;
  margin-top: 0;
  padding: 0.75rem 1rem;
  border: 1px solid rgba(0, 0, 0, 0.18);
  background: #fff;
}

.contact-form-section__form .wpcf7-form textarea {
  min-height: 10rem;
  padding-top: 0.85rem;
}

.contact-form-section__form .wpcf7-form select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 2.75rem;
  cursor: pointer;
}

.contact-form-section__form .wpcf7-form-control-wrap:has(select) {
  position: relative;
  display: block;
}

.contact-form-section__form .wpcf7-form-control-wrap:has(select)::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 1.125rem;
  width: 0.5rem;
  height: 0.5rem;
  border-right: 2px solid rgba(0, 0, 0, 0.55);
  border-bottom: 2px solid rgba(0, 0, 0, 0.55);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}

.contact-form-section__form .wpcf7-list-item {
  display: inline-flex;
  align-items: center;
  margin: 0.35rem 1.5rem 0.35rem 0;
}

.contact-form-section__form .wpcf7-radio {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0;
}

.contact-form-section__form .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  font-weight: 500;
  font-size: 0.9375rem;
  cursor: pointer;
}

.contact-form-section__form .wpcf7-form input[type="radio"] {
  width: 1.05rem;
  height: 1.05rem;
  margin: 0;
}

.contact-badge {
  position: absolute;
  top: 50%;
  right: 0;
  display: inline-block;
  margin: 0;
  padding: 0.12rem 0.45rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1.3;
  white-space: nowrap;
  transform: translateY(-50%);
}

.contact-badge--required {
  border: 1px solid var(--color-accent);
  background: transparent;
  color: var(--color-accent);
}

.contact-badge--optional {
  border: 1px solid rgba(0, 0, 0, 0.22);
  background: transparent;
  color: #777;
}

.contact-form-section__form .wpcf7-form .contact-field__note {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
  font-size: 0.8125rem;
  color: #777;
  line-height: 1.6;
}

.contact-field__error {
  display: none;
  grid-column: 2;
  grid-row: 3;
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 700;
  color: var(--color-accent);
}

.contact-field.has-error .contact-field__error {
  display: block;
}

.contact-field.has-error input[type="text"],
.contact-field.has-error input[type="email"],
.contact-field.has-error input[type="tel"],
.contact-field.has-error textarea,
.contact-field.has-error select {
  border-color: var(--color-accent);
  background: rgba(232, 25, 44, 0.04);
}

/* Confirm panel (filled by JS) */
.contact-confirm {
  display: none;
}

.contact-confirm__lead {
  margin: 0 0 1.25rem;
  font-size: 0.9375rem;
  color: #555;
  text-align: center;
}

.contact-confirm__list {
  margin: 0;
  padding: clamp(1rem, 2.5vw, 1.5rem);
  background: #fff;
}

.contact-confirm__row {
  display: grid;
  grid-template-columns: min(28%, 13rem) 1fr;
  gap: 0.5rem clamp(2rem, 5vw, 3.5rem);
  align-items: center;
  padding: clamp(0.85rem, 2vw, 1.1rem) 0;
  border-bottom: 1px solid var(--color-border);
}

.contact-confirm__row:first-child {
  border-top: 1px solid var(--color-border);
}

.contact-confirm__term {
  font-weight: 400;
  font-size: 0.9375rem;
}

.contact-confirm__desc {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.7;
  word-break: break-word;
  white-space: pre-wrap;
}

.contact-confirm__desc.is-empty {
  color: #999;
}

@media (max-width: 600px) {
  .contact-confirm__row {
    grid-template-columns: 1fr;
    gap: 0.2rem;
  }
}

/* Action buttons */
.contact-actions {
  display: flex;
  flex-flow: row nowrap;
  align-items: stretch;
  justify-content: center;
  gap: 1.25rem;
  margin-top: clamp(2rem, 4vw, 2.5rem);
}

/* Cloudflare Turnstile: action buttons の直下で左右中央に配置 */
.contact-form-section__form .wpcf7-form .contact-turnstile {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin: 0 auto 2rem;
}

@media (max-width: 767px) {
  .contact-form-section__form .wpcf7-form .contact-turnstile {
    margin-bottom: 1rem;
  }
}

.contact-form-section__form .wpcf7-form .contact-turnstile .cf-turnstile {
  max-width: 100%;
}

/* CF7 が [submit] を <p> で包む場合も横並びを維持 */
.contact-form-section__form .wpcf7-form .contact-actions > p {
  display: contents;
  margin: 0;
}

.contact-actions .contact-btn,
.contact-form-section__form .wpcf7-form .contact-actions .js-contact-confirm,
.contact-form-section__form .wpcf7-form .contact-actions .js-contact-submit,
.contact-form-section__form .wpcf7-form .contact-actions .js-contact-back,
.contact-form-section__form .wpcf7-form .contact-actions .wpcf7-submit {
  box-sizing: border-box;
  flex: 0 0 17.5rem;
  width: 17.5rem;
  max-width: 100%;
  min-height: 3.25rem;
  padding: 0.85rem 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.35;
}

.contact-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 17.5rem;
  min-width: 17.5rem;
  min-height: 3.25rem;
  padding: 0.85rem 1.25rem;
  border: 1px solid var(--color-ink);
  border-radius: 0;
  background: var(--color-ink);
  color: #fff;
  font: inherit;
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition-base), color var(--transition-base), border-color var(--transition-base);
}

.contact-btn:hover,
.contact-btn:focus-visible {
  background: var(--color-surface);
  color: var(--color-ink);
}

.contact-btn--primary {
  border-color: var(--color-accent);
  background: var(--color-accent);
  color: #fff;
}

.contact-btn--primary:hover,
.contact-btn--primary:focus-visible {
  background: var(--color-ink);
  border-color: var(--color-ink);
  color: #fff;
}

.contact-btn--ghost {
  background: var(--color-surface);
  color: var(--color-ink);
}

.contact-btn--ghost:hover,
.contact-btn--ghost:focus-visible {
  background: var(--color-muted);
  color: var(--color-ink);
}

/* Step visibility (progressive enhancement: works without JS too) */
.contact-form-section__form .wpcf7-form .js-contact-confirm,
.contact-form-section__form .wpcf7-form .js-contact-back {
  display: none;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-input .js-contact-confirm {
  display: inline-flex;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-input .js-contact-submit {
  display: none;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-confirm .contact-form-fields {
  display: none;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-confirm .contact-confirm {
  display: block;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-confirm .js-contact-confirm {
  display: none;
}

.contact-form-section__form .wpcf7-form.is-enhanced.is-step-confirm .js-contact-back,
.contact-form-section__form .wpcf7-form.is-enhanced.is-step-confirm .js-contact-submit {
  display: inline-flex;
}

/* Completion panel */
.contact-complete {
  max-width: none;
  margin: 0;
  padding: clamp(2rem, 5vw, 3rem);
  border: 1px solid rgba(0, 0, 0, 0.08);
  background: #fff;
  text-align: center;
}

.contact-complete__icon {
  margin: 0 0 1rem;
  color: var(--color-accent);
}

.contact-complete__title {
  margin: 0 0 0.75rem;
  font-size: clamp(1.25rem, 2.6vw, 1.5rem);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.contact-complete__lead {
  margin: 0 0 1.75rem;
  font-size: 0.9375rem;
  line-height: 1.9;
  color: #555;
}

.contact-form-section__placeholder {
  max-width: 52rem;
  margin-inline: auto;
  padding: clamp(1.5rem, 4vw, 2rem);
  border: 1px dashed var(--color-border);
  background: var(--color-muted);
  color: #666;
  font-size: 0.9375rem;
  line-height: 1.8;
  text-align: center;
}

.contact-form-section__policy {
  max-width: 56rem;
  margin: clamp(1.25rem, 3vw, 1.75rem) auto 0;
  font-size: 0.8125rem;
  line-height: 1.8;
  color: #666;
  text-align: center;
}

.contact-form-section__policy a {
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.contact-form-section__policy a:hover,
.contact-form-section__policy a:focus-visible {
  color: var(--color-accent);
}

@media (max-width: 767px) {
  .contact-hours {
    flex-wrap: wrap;
    text-align: center;
  }

  .contact-form-section__form .wpcf7 {
    padding: 1.25rem 0;
  }

  .contact-field {
    grid-template-columns: 1fr;
    align-items: start;
    padding-block: 1.15rem;
  }

  .contact-field__label,
  .contact-field__control,
  .contact-field__error {
    grid-column: 1;
  }

  /* ラベル行：テキスト＋バッジを1行に収める */
  .contact-field__label {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0;
    grid-row: 1;
    padding: 0 0 0.65rem;
    font-size: 0.9375rem;
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--color-ink);
  }

  .contact-field__label-text {
    display: inline-block;
    flex-shrink: 1;
    min-width: 0;
    font-size: 0.9375rem;
    margin-right: 1rem;
  }

  .contact-badge {
    position: static;
    top: auto;
    right: auto;
    transform: translateY(-0.1rem);
    flex-shrink: 0;
  }

  .contact-field__control {
    grid-row: 2;
  }

  /* note は詳細度を上げて grid-column: 2 を上書き */
  .contact-form-section__form .wpcf7-form .contact-field__note {
    grid-column: 1;
    grid-row: 3;
    font-size: 0.75rem;
    margin-top: 0.3rem;
  }

  .contact-field__error {
    grid-row: 4;
  }

  /* 入力フィールドの高さをSP向けに小さく */
  .contact-form-section__form .wpcf7-form input[type="text"],
  .contact-form-section__form .wpcf7-form input[type="email"],
  .contact-form-section__form .wpcf7-form input[type="tel"],
  .contact-form-section__form .wpcf7-form input[type="url"],
  .contact-form-section__form .wpcf7-form select {
    min-height: 2.875rem;
    padding-block: 0.65rem;
    font-size: 1rem;
  }

  .contact-form-section__form .wpcf7-form textarea {
    min-height: 7.5rem;
  }

  /* ボタンは縦積み・全幅 */
  .contact-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    margin-top: 3rem;
  }

  .contact-actions .contact-btn,
  .contact-form-section__form .wpcf7-form .contact-actions .js-contact-confirm,
  .contact-form-section__form .wpcf7-form .contact-actions .js-contact-submit,
  .contact-form-section__form .wpcf7-form .contact-actions .js-contact-back,
  .contact-form-section__form .wpcf7-form .contact-actions .wpcf7-submit {
    flex: none;
    width: 100%;
    min-width: 0;
  }
}

/* Skip link */
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 100000;
  padding: 0.75rem 1rem;
  background: var(--color-ink);
  color: #fff;
  text-decoration: none;
}

.skip-link:focus {
  left: 0.5rem;
  top: 0.5rem;
}

/* Screen reader only (search label etc.) */
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Mobile nav（SAAB Group モバイルメニュー参考） */
.site-nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 3rem;
  height: 3rem;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
}

.site-nav-toggle__bars {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
}

.site-nav-toggle__bar {
  display: block;
  width: 1.375rem;
  height: 1.5px;
  background: var(--color-ink);
  border-radius: 0;
  transition:
    transform 0.3s ease,
    opacity 0.3s ease,
    background-color 0.3s ease;
}

body.nav-open .site-nav-toggle__bar {
  background: #fff;
}

body.nav-open .site-nav-toggle__bar:nth-child(1) {
  transform: translateY(7.5px) rotate(45deg);
}

body.nav-open .site-nav-toggle__bar:nth-child(2) {
  opacity: 0;
}

body.nav-open .site-nav-toggle__bar:nth-child(3) {
  transform: translateY(-7.5px) rotate(-45deg);
}

@media (max-width: 900px) {
  .site-nav-toggle {
    display: flex;
    position: relative;
    flex-shrink: 0;
  }

  body.nav-open {
    overflow: hidden;
  }

  body.nav-open .site-nav-toggle {
    position: fixed;
    top: clamp(0.75rem, 2vw, 0.9375rem);
    right: 1rem;
    z-index: 10052;
  }

  body.nav-open .site-header {
    z-index: 10051;
  }

  body.nav-open .site-header,
  body.nav-open.sueoka-front-page .site-header.is-scrolled {
    background: transparent;
    border-bottom-color: transparent;
    box-shadow: none;
  }

  body.nav-open .site-header .site-title a,
  body.nav-open .site-header .site-logo-link {
    color: #fff;
  }

  /* ハンバーガー展開時は暗背景のため白ロゴへ */
  body.nav-open .site-header .site-logo-link--dual .site-logo--default {
    display: none;
  }

  body.nav-open .site-header .site-logo-link--dual .site-logo--on-hero {
    display: block;
  }

  body.nav-open .site-header .site-logo-link:not(.site-logo-link--dual) .site-logo--theme,
  body.nav-open .site-header .custom-logo {
    filter: brightness(0) invert(1);
  }

  /* 全画面メニュー（SAAB: フェードイン＋項目スタッガー。左からのスライドは使わない） */
  .site-nav-panel {
    position: fixed;
    inset: 0;
    z-index: 10050;
    width: 100%;
    max-width: none;
    height: 100%;
    height: 100dvh;
    padding: 0;
    margin: 0;
    background: var(--color-ink);
    color: #fff;
    box-shadow: none;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition:
      opacity 0.45s ease,
      visibility 0.45s ease;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  body.nav-open .site-nav-panel {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .site-nav-panel__inner {
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    min-height: 100%;
    padding: 3.5rem clamp(1.75rem, 6vw, 2.5rem) clamp(2.5rem, 8vw, 3.5rem);
  }

  .site-nav--desktop {
    display: none;
  }

  .site-nav-panel__desktop {
    display: none;
  }

  .site-social--hamburger {
    gap: 0.875rem;
  }

  .site-social--hamburger .site-social__link {
    width: 2.5rem;
    height: 2.5rem;
    color: #fff;
  }

  .site-social--hamburger .site-social__link:hover,
  .site-social--hamburger .site-social__link:focus-visible {
    color: #fff;
    opacity: 0.72;
  }

  .site-social--hamburger .site-social__icon {
    width: 1.375rem;
    height: 1.375rem;
  }

  /* モバイル: BELTEC 風 強（左）／弱（右）2カラム */
  .site-nav-panel__layout {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    width: 100%;
    min-height: 0;
  }

  .site-nav-panel__eyebrow {
    margin: 0 0 1.75rem;
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    line-height: 1;
    color: rgba(255, 255, 255, 0.45);
    text-transform: uppercase;
  }

  .site-nav-panel__columns {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(7.5rem, 38%);
    gap: 0.5rem clamp(1.5rem, 6vw, 3rem);
    align-items: start;
    width: 100%;
  }

  .site-nav-panel .site-nav__list--primary,
  .site-nav-panel .site-nav__list--secondary {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    width: 100%;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .site-nav-panel .site-nav__list--primary > li,
  .site-nav-panel .site-nav__list--secondary > li {
    width: 100%;
    border: 0;
    opacity: 0;
    transform: translateY(0.75rem);
    transition:
      opacity 0.4s ease,
      transform 0.4s ease;
  }

  body.nav-open .site-nav-panel .site-nav__list--primary > li,
  body.nav-open .site-nav-panel .site-nav__list--secondary > li {
    opacity: 1;
    transform: translateY(0);
  }

  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(1) { transition-delay: 0.06s; }
  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(2) { transition-delay: 0.1s; }
  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(3) { transition-delay: 0.14s; }
  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(4) { transition-delay: 0.18s; }
  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(5) { transition-delay: 0.22s; }
  body.nav-open .site-nav-panel .site-nav__list--primary > li:nth-child(n + 6) { transition-delay: 0.26s; }

  body.nav-open .site-nav-panel .site-nav__list--secondary > li:nth-child(1) { transition-delay: 0.12s; }
  body.nav-open .site-nav-panel .site-nav__list--secondary > li:nth-child(2) { transition-delay: 0.16s; }
  body.nav-open .site-nav-panel .site-nav__list--secondary > li:nth-child(3) { transition-delay: 0.2s; }
  body.nav-open .site-nav-panel .site-nav__list--secondary > li:nth-child(4) { transition-delay: 0.24s; }
  body.nav-open .site-nav-panel .site-nav__list--secondary > li:nth-child(n + 5) { transition-delay: 0.28s; }

  @media (prefers-reduced-motion: reduce) {
    .site-nav-panel,
    .site-nav-panel .site-nav__list--primary > li,
    .site-nav-panel .site-nav__list--secondary > li {
      transition-duration: 0.01ms;
      transition-delay: 0s;
    }

    body.nav-open .site-nav-panel .site-nav__list--primary > li,
    body.nav-open .site-nav-panel .site-nav__list--secondary > li {
      transform: none;
    }
  }

  .site-nav-panel .site-nav__list--primary a {
    display: block;
    padding: 0.35rem 0;
    font-size: clamp(1.25rem, 5.2vw, 1.625rem);
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.45;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 0.25s ease;
  }

  .site-nav-panel .site-nav__sublist {
    list-style: none;
    margin: 0.15rem 0 0.55rem;
    padding: 0 0 0 0.85rem;
    border-left: 1px solid rgba(255, 255, 255, 0.22);
  }

  .site-nav-panel .site-nav__subitem a {
    display: block;
    padding: 0.28rem 0;
    font-size: clamp(0.875rem, 3.4vw, 1rem);
    font-weight: 500;
    letter-spacing: 0.02em;
    line-height: 1.45;
    color: rgba(255, 255, 255, 0.82);
    text-decoration: none;
    white-space: normal;
    transition: opacity 0.25s ease, color 0.25s ease;
  }

  .site-nav-panel .site-nav__subitem a:hover,
  .site-nav-panel .site-nav__subitem a:focus-visible {
    opacity: 0.72;
    color: #fff;
  }

  .site-nav-panel .site-nav__list--secondary a {
    display: block;
    padding: 0.3rem 0;
    font-size: clamp(0.8125rem, 3.2vw, 0.9375rem);
    font-weight: 400;
    letter-spacing: 0.02em;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.88);
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 0.25s ease, color 0.25s ease;
  }

  .site-nav-panel .site-nav__list a::after {
    display: none;
  }

  .site-nav-panel .site-nav__list--primary a:hover,
  .site-nav-panel .site-nav__list--primary a:focus-visible,
  .site-nav-panel .site-nav__list--secondary a:hover,
  .site-nav-panel .site-nav__list--secondary a:focus-visible {
    opacity: 0.72;
    color: #fff;
  }

  .site-nav-panel .site-nav__item--contact a {
    color: var(--color-accent);
    font-weight: 500;
  }

  /* 下半分: BELTEC 風ロゴ＋タグライン＋お問い合わせ CTA */
  .site-nav-panel__footer {
    margin-top: auto;
    padding-top: clamp(2.5rem, 10vw, 4rem);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: clamp(1.25rem, 5vw, 2rem);
  }

  .site-nav-panel__brand {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: clamp(0.875rem, 3.5vw, 1.25rem);
    min-width: 0;
  }

  .site-nav-panel__brand-logo {
    display: block;
    flex: 0 0 auto;
    line-height: 0;
    text-decoration: none;
  }

  .site-nav-panel__brand-logo-img {
    display: block;
    width: auto;
    max-width: clamp(5.5rem, 22vw, 7.5rem);
    max-height: clamp(2.5rem, 10vw, 3.25rem);
    height: auto;
    filter: brightness(0) invert(1);
  }

  .site-nav-panel__brand-name {
    flex: 0 0 auto;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
  }

  .site-nav-panel__brand-name:hover,
  .site-nav-panel__brand-name:focus-visible {
    color: #fff;
    opacity: 0.85;
  }

  .site-nav-panel__brand-rule {
    flex: 0 0 1px;
    align-self: stretch;
    width: 1px;
    min-height: 3.25rem;
    background: rgba(255, 255, 255, 0.38);
  }

  .site-nav-panel__brand-tagline {
    margin: 0;
    flex: 1 1 auto;
    min-width: 0;
    font-size: clamp(0.75rem, 2.8vw, 0.875rem);
    font-weight: 500;
    line-height: 1.65;
    letter-spacing: 0.05em;
    color: rgba(255, 255, 255, 0.9);
  }

  .site-nav-panel__cta {
    align-self: flex-end;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
    padding: 0.875rem 1.625rem;
    border-radius: 999px;
    background: var(--color-accent);
    color: #fff;
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1;
    text-decoration: none;
    box-shadow: 0 8px 24px rgba(232, 25, 44, 0.35);
    transition:
      background-color 0.25s ease,
      transform 0.25s ease,
      box-shadow 0.25s ease;
  }

  .site-nav-panel__cta:hover,
  .site-nav-panel__cta:focus-visible {
    background: var(--color-accent-dark);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 10px 28px rgba(232, 25, 44, 0.42);
  }

  .site-nav-panel__cta-icon {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    line-height: 0;
  }

  .site-nav-panel__cta-icon svg {
    display: block;
  }
}

@media (min-width: 901px) {
  .site-nav-toggle {
    display: none;
  }

  .site-header__tools {
    display: none;
  }

  .site-nav-panel {
    position: static;
    inset: auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex: 0 0 auto;
    width: auto;
    height: auto;
    max-width: none;
    margin: 0 0 0 auto;
    padding: 0;
    background: transparent;
    color: inherit;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    overflow: visible;
    box-shadow: none;
    transition: none;
  }

  .site-nav-panel__layout {
    display: none;
  }

  .site-nav-panel__inner {
    width: auto;
    max-width: none;
    min-height: 0;
    padding: 0;
  }

  .site-nav-panel__desktop {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(1rem, 2.5vw, 1.5rem);
  }

  .site-nav--desktop {
    display: flex;
    justify-content: flex-end;
  }

  .site-social--header-nav {
    display: flex;
  }

  .site-nav--desktop .site-nav__list > li > a {
    padding: 0;
    font-size: 0.875rem;
    font-weight: inherit;
    letter-spacing: normal;
    color: var(--color-ink);
    white-space: nowrap;
  }

  .site-nav--desktop .site-nav__list > li > a::after {
    display: block;
  }

  /* Mega menus: service / shop（PC only） */
  .menu-item--has-mega {
    position: static;
  }

  .site-nav-mega {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    z-index: 1005;
    padding: 1.5rem 0 1.75rem;
    background: rgba(255, 255, 255, 0.62);
    border-top: 1px solid rgba(255, 255, 255, 0.55);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    -webkit-backdrop-filter: blur(18px) saturate(1.35);
    backdrop-filter: blur(18px) saturate(1.35);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(-10px);
    transition:
      opacity 0.32s cubic-bezier(0.25, 0.46, 0.45, 0.94),
      transform 0.32s cubic-bezier(0.25, 0.46, 0.45, 0.94),
      visibility 0.32s;
  }

  .site-nav-mega.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
  }

  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .site-nav-mega {
      background: rgba(255, 255, 255, 0.96);
    }
  }

  @media (prefers-reduced-transparency: reduce) {
    .site-nav-mega {
      background: var(--color-surface);
      -webkit-backdrop-filter: none;
      backdrop-filter: none;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .site-nav-mega {
      transition-duration: 0.01ms;
      transform: none;
    }
  }

  .site-nav-mega__grid {
    display: grid;
    gap: 1rem;
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .site-nav-mega--service .site-nav-mega__grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }

  .site-nav-mega--shop .site-nav-mega__grid {
    grid-template-columns: repeat(8, minmax(0, 1fr));
  }

  .site-nav-mega--shop .site-nav-mega__title {
    font-size: 0.75rem;
  }

  .site-nav-mega__item {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.4s ease, transform 0.4s ease;
  }

  .site-nav-mega.is-open .site-nav-mega__item {
    opacity: 1;
    transform: translateY(0);
  }

  @media (prefers-reduced-motion: reduce) {
    .site-nav-mega__item {
      transition-duration: 0.01ms;
      transition-delay: 0s !important;
      transform: none;
    }
  }

  .site-nav-mega__link {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    color: var(--color-ink);
    text-decoration: none;
    transition: opacity var(--transition-base);
  }

  .site-nav-mega__link:hover,
  .site-nav-mega__link:focus-visible {
    opacity: 0.78;
  }

  .site-nav-mega__link::after {
    display: none !important;
  }

  .site-nav-mega__thumb {
    display: block;
    overflow: hidden;
    aspect-ratio: 16 / 10;
    background: var(--color-muted);
  }

  .site-nav-mega__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.35s ease;
  }

  .site-nav-mega__link:hover .site-nav-mega__img,
  .site-nav-mega__link:focus-visible .site-nav-mega__img {
    transform: scale(1.04);
  }

  .site-nav-mega__placeholder {
    display: block;
    width: 100%;
    height: 100%;
    background: var(--color-muted);
  }

  .site-nav-mega__title {
    display: block;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.45;
    white-space: normal;
  }

  .site-header.has-mega-open,
  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open {
    background: var(--color-surface);
  }

  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open .site-title a,
  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open .site-nav__list > li > a,
  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open .site-social__link {
    color: var(--color-ink);
    opacity: 1;
  }

  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open .site-nav__list > li > a::after {
    background: var(--color-accent);
  }

  .sueoka-front-page .site-header:not(.is-scrolled).has-mega-open .custom-logo {
    filter: none;
  }
}

@media (min-width: 901px) and (max-width: 1100px) {
  .site-nav-mega--service .site-nav-mega__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .site-nav-mega--shop .site-nav-mega__grid {
    grid-template-columns: repeat(8, minmax(0, 1fr));
    gap: 0.65rem;
  }

  .site-nav-mega--shop .site-nav-mega__title {
    font-size: 0.6875rem;
  }
}

@media (max-width: 900px) {
  .site-nav-mega {
    display: none !important;
  }
}

/* Fullwidth page */
.layout-container--full {
  width: min(100% - 2rem, 90rem);
}

.layout-container--full .entry-content--wide .alignwide {
  max-width: 100%;
}

.layout-container--full .wpcf7 {
  max-width: 48rem;
}

/* Service template */
/* サービス一覧（ハブ） */
.service-hub {
  padding-bottom: clamp(3rem, 6vw, 5rem);
}

.service-hub__list {
  display: grid;
  gap: clamp(1.5rem, 3vw, 2rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 768px) {
  .service-hub__list {
    grid-template-columns: repeat(2, 1fr);
  }
}

.service-hub-card {
  height: 100%;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  transition: border-color var(--transition-base), box-shadow var(--transition-base);
}

.service-hub-card:has(.service-hub-card__link:hover),
.service-hub-card:has(.service-hub-card__link:focus-visible) {
  border-color: var(--color-border);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
}

.service-hub-card__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  color: inherit;
  text-decoration: none;
}

.service-hub-card__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--color-muted);
}

.service-hub-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-base);
}

.service-hub-card__link:hover .service-hub-card__img,
.service-hub-card__link:focus-visible .service-hub-card__img {
  transform: scale(1.03);
}

.service-hub-card__placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

.service-hub-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.25rem 1.5rem 1.5rem;
}

.service-hub-card__quality {
  display: inline-block;
  align-self: flex-start;
  margin: 0 0 0.75rem;
  padding: 0.2rem 0.6rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.service-hub-card__title {
  margin: 0;
  font-size: clamp(1.125rem, 2vw, 1.375rem);
  font-weight: 700;
  color: var(--color-ink);
}

.service-hub-card__label-en {
  margin: -0.7rem 0 0;
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  color: #888;
}

.service-hub-card__teaser {
  margin: 0;
  flex: 1;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #555;
}

.service-hub-card__more {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.5rem;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--color-accent);
}

.service-hub-card__arrow {
  transition: transform var(--transition-base);
}

.service-hub-card__link:hover .service-hub-card__arrow,
.service-hub-card__link:focus-visible .service-hub-card__arrow {
  transform: translateX(4px);
}

/* サービス詳細（下層） */
.service-detail-back {
  margin: 0 0 1.5rem;
}

.service-detail-back--bottom {
  margin: clamp(2.5rem, 5vw, 3.5rem) 0 0;
  padding-top: clamp(2rem, 4vw, 3rem);
  border-top: 1px solid var(--color-border);
  display: flex;
  justify-content: center;
}

.service-detail-back__button {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-width: min(100%, 18rem);
  justify-content: center;
}

.service-detail-back__arrow {
  margin-right: 0.4rem;
  transition: transform var(--transition-base);
}

.service-detail-back__button .service-detail-back__arrow {
  margin-right: 0;
}

.service-detail-back__button:hover .service-detail-back__arrow,
.service-detail-back__button:focus-visible .service-detail-back__arrow {
  transform: translateX(-3px);
}

.service-detail-back__link {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color var(--transition-base);
}

.service-detail-back__link:hover,
.service-detail-back__link:focus-visible {
  border-bottom-color: var(--color-accent);
}

.entry-content--service-detail {
  max-width: 52rem;
  padding-bottom: clamp(3rem, 6vw, 5rem);
}

.service-detail-fallback-note {
  margin-top: 1.5rem;
  padding: 1rem 1.25rem;
  font-size: 0.875rem;
  color: #666;
  background: var(--color-muted);
  border: 1px solid #ddd;
}

/* 旧1ページ型（後方互換・未使用） */
.service-toc {
  margin-bottom: clamp(2rem, 4vw, 3rem);
  padding: 1.5rem;
  background: var(--color-muted);
  border: 1px solid #ddd;
}

.service-toc__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.9375rem;
}

.service-toc__list li::before {
  content: '— ';
  color: var(--color-accent);
  font-weight: 700;
}

.service-toc__list a {
  color: var(--color-ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color var(--transition-base), color var(--transition-base);
}

.service-toc__list a:hover,
.service-toc__list a:focus-visible {
  color: var(--color-accent);
  border-bottom-color: var(--color-accent);
}

/* サービスセクション */
.service-sections .service-section {
  padding: clamp(3rem, 6vw, 5rem) 0;
  border-top: 1px solid var(--color-border);
}

.service-sections .service-section:first-child {
  border-top: none;
}

.service-section__title {
  margin: 0 0 1.5rem;
  font-size: clamp(1.25rem, 2.5vw, 1.625rem);
  font-weight: 700;
  color: var(--color-ink);
  padding-bottom: 0.55rem;
  border-bottom: 1px solid #ddd;
}

.service-section__figure {
  margin: 0 0 2rem;
  max-width: 52rem;
  overflow: hidden;
}

.service-section__image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.service-section__body {
  margin: 0;
  max-width: 52rem;
}

.service-section__body p {
  margin: 0;
  font-size: 1rem;
  line-height: 1.9;
  color: #444;
}

/* Service detail: 下層ページ共通の下余白（フッターとの近接を防ぐ） */
.site-main--service-detail {
  padding-bottom: clamp(4rem, 8vw, 6rem);
}

/* Service detail: quality01 (ガラス交換・補修) */
.service-q01 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Intro */
.service-q01-intro {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q01-intro {
    grid-template-columns: 1.1fr 0.9fr;
    align-items: center;
  }
}

.service-q01-intro__catch {
  margin: 0 0 1.25rem;
  font-size: clamp(1.375rem, 3.5vw, 2rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

.service-q01-intro__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q01-intro__media {
  display: flex;
  flex-direction: column;
  gap: clamp(0.75rem, 2vw, 1.25rem);
}

.service-q01-intro__figure {
  margin: 0;
}

.service-q01-intro__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Section header */
.service-q01-section {
  scroll-margin-top: 6rem;
}

.service-q01-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q01-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q01-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

/* Reasons */
.service-q01-reasons {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  list-style: none;
  margin: 0;
  padding: 0;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}

@media (min-width: 768px) {
  .service-q01-reasons {
    grid-template-columns: repeat(4, 1fr);
  }
}

.service-q01-reason {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  padding: clamp(1.5rem, 3vw, 2rem) 1rem;
  background: var(--color-surface);
  text-align: center;
}

.service-q01-reason__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(4.5rem, 12vw, 6rem);
  height: clamp(4.5rem, 12vw, 6rem);
}

.service-q01-reason__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.service-q01-reason__text {
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-ink);
}

/* Front glass types */
.service-q01-types {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  list-style: none;
  margin: 0;
  padding: 0;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}

@media (min-width: 640px) {
  .service-q01-types {
    grid-template-columns: repeat(2, 1fr);
  }
}

.service-q01-type {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  background: var(--color-surface);
}

.service-q01-type__num {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  color: var(--color-accent);
  font-feature-settings: 'tnum';
}

.service-q01-type__text {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

/* Maker glass */
.service-q01-maker {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
}

@media (min-width: 768px) {
  .service-q01-maker {
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
}

.service-q01-maker__text {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q01-maker__figure {
  margin: 0;
  overflow: hidden;
}

.service-q01-maker__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 8 / 5;
  object-fit: cover;
}

/* Coolverre */
.service-q01-coolverre {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
  align-items: start;
}

@media (min-width: 768px) {
  .service-q01-coolverre {
    grid-template-columns: 1fr 1fr;
  }
}

.service-q01-coolverre__col {
  display: flex;
  flex-direction: column;
  gap: clamp(1.25rem, 3vw, 1.75rem);
}

.service-q01-coolverre__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q01-coolverre__figure {
  margin: 0;
}

.service-q01-coolverre__img {
  display: block;
  width: 100%;
  height: auto;
}

/* 右カラム（縦長のスペックポスター）は中央寄せ＋高さ上限で収める */
.service-q01-coolverre__col:last-child {
  align-items: center;
}

.service-q01-coolverre__col:last-child .service-q01-coolverre__img {
  width: auto;
  max-width: 100%;
  max-height: 27.5rem;
}

.service-q01-points {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  list-style: none;
  margin: clamp(1.5rem, 3vw, 2rem) 0 0;
  padding: 0;
}

@media (min-width: 768px) {
  .service-q01-points {
    grid-template-columns: repeat(3, 1fr);
  }
}

.service-q01-point {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
}

.service-q01-point__figure {
  margin: 0;
  overflow: hidden;
}

.service-q01-point__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.service-q01-point__body {
  padding: 1.25rem 1.25rem 1.5rem;
}

.service-q01-point__lead {
  margin: 0 0 0.6rem;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-accent);
}

.service-q01-point__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.8;
  color: #555;
}

/* Other services */
.service-q01-others {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 3vw, 2rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 768px) {
  .service-q01-others {
    grid-template-columns: repeat(2, 1fr);
  }
}

.service-q01-other {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
}

.service-q01-other__figure {
  margin: 0;
  overflow: hidden;
}

.service-q01-other__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.service-q01-other__body {
  padding: clamp(1.25rem, 3vw, 1.75rem);
}

.service-q01-other__title {
  margin: 0 0 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-ink);
  padding-left: 0.75rem;
  border-left: 3px solid var(--color-accent);
}

.service-q01-other__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.85;
  color: #555;
}

/* Image placeholder fallback */
.service-q01-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Service detail: quality02 (カーフィルム) */
.service-q02 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Intro */
.service-q02-intro {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q02-intro {
    grid-template-columns: 1.1fr 0.9fr;
    align-items: center;
  }
}

.service-q02-intro__catch {
  margin: 0 0 1.25rem;
  font-size: clamp(1.375rem, 3.5vw, 2rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

.service-q02-intro__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q02-intro__media {
  display: flex;
  flex-direction: column;
  gap: clamp(0.75rem, 2vw, 1.25rem);
}

.service-q02-intro__figure {
  margin: 0;
}

.service-q02-intro__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Section header */
.service-q02-section {
  scroll-margin-top: 6rem;
}

.service-q02-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q02-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q02-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

/* Merits（5点を中央寄せで折り返し: PCは3+2、タブレットは2+2+1） */
.service-q02-merits {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.25rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.service-q02-merit {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  flex: 1 1 100%;
  max-width: 100%;
  padding: clamp(1.75rem, 3.5vw, 2.5rem) clamp(1.25rem, 2.5vw, 1.75rem);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  text-align: center;
}

@media (min-width: 600px) {
  .service-q02-merit {
    flex-basis: calc((100% - 1.25rem) / 2);
    max-width: calc((100% - 1.25rem) / 2);
  }
}

@media (min-width: 900px) {
  .service-q02-merit {
    flex-basis: calc((100% - 2.5rem) / 3);
    max-width: calc((100% - 2.5rem) / 3);
  }
}

.service-q02-merit__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(5.5rem, 14vw, 7rem);
  height: clamp(5.5rem, 14vw, 7rem);
}

.service-q02-merit__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.service-q02-merit__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--color-accent);
}

.service-q02-merit__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.8;
  color: #555;
}

/* Computer cut */
.service-q02-cut {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
}

@media (min-width: 768px) {
  .service-q02-cut {
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
}

.service-q02-cut__lead {
  margin: 0 0 1.25rem;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.8;
  color: var(--color-ink);
}

.service-q02-checklist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.service-q02-checklist__item {
  position: relative;
  padding-left: 1.5rem;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #444;
}

.service-q02-checklist__item::before {
  content: '';
  position: absolute;
  top: 0.45em;
  left: 0;
  width: 0.6rem;
  height: 0.6rem;
  background: var(--color-accent);
}

.service-q02-cut__figure {
  margin: 0;
}

.service-q02-cut__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Products */
.service-q02-products__intro {
  margin: 0 0 clamp(1.5rem, 3vw, 2rem);
  font-size: 1rem;
  line-height: 1.9;
  color: #444;
}

.service-q02-products {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  list-style: none;
  margin: 0 0 clamp(2.5rem, 5vw, 3.5rem);
  padding: 0;
}

@media (min-width: 768px) {
  .service-q02-products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.service-q02-product {
  display: flex;
  flex-direction: column;
  padding: clamp(1.25rem, 2.5vw, 1.5rem);
  border: 1px solid var(--color-border);
}

.service-q02-product__name {
  margin: 0 0 0.75rem;
  padding-bottom: 0.6rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-ink);
  border-bottom: 2px solid var(--color-accent);
}

.service-q02-product__lead {
  margin: 0 0 0.6rem;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-accent);
}

.service-q02-product__text {
  margin: 0 0 1.25rem;
  font-size: 0.875rem;
  line-height: 1.8;
  color: #555;
  flex: 1 1 auto;
}

.service-q02-product__figure {
  margin: auto 0 0;
}

.service-q02-product__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Ceramic dot note */
.service-q02-ceramic-note {
  margin: 0 0 clamp(1.25rem, 3vw, 1.75rem);
  padding: 1rem 1.25rem;
  background: var(--color-muted);
  border-left: 3px solid var(--color-accent);
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-ink);
}

.service-q02-ceramic-note__sub {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.8125rem;
  font-weight: 400;
  color: #666;
}

/* Feature (text + image) */
.service-q02-feature {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
  align-items: center;
}

.service-q02-feature + .service-q02-feature {
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

@media (min-width: 768px) {
  .service-q02-feature {
    grid-template-columns: 1fr 1fr;
  }

  .service-q02-feature--reverse .service-q02-feature__body {
    order: 2;
  }
}

.service-q02-feature__lead {
  margin: 0 0 0.75rem;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-accent);
}

.service-q02-feature__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.9;
  color: #444;
}

.service-q02-feature__figure {
  margin: 0;
}

.service-q02-feature__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Image placeholder fallback */
.service-q02-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Service detail: quality03 (コーティング) */
.service-q03 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Intro */
.service-q03-intro {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q03-intro {
    grid-template-columns: 1.1fr 0.9fr;
    align-items: center;
  }
}

.service-q03-intro__catch {
  margin: 0 0 1.25rem;
  font-size: clamp(1.375rem, 3.5vw, 2rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

.service-q03-intro__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q03-intro__media {
  display: flex;
  flex-direction: column;
  gap: clamp(0.75rem, 2vw, 1.25rem);
}

.service-q03-intro__figure {
  margin: 0;
}

.service-q03-intro__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Section header */
.service-q03-section {
  scroll-margin-top: 6rem;
}

.service-q03-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q03-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q03-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

.service-q03-section__subtitle {
  margin: 0 0 1rem;
  font-size: clamp(1.125rem, 2.5vw, 1.375rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

/* Comparison table */
.service-q03-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* ScrollHint（横スクロール可能なラッパー） */
.js-scroll-hint {
  position: relative;
}

.service-q03-table {
  width: 100%;
  min-width: 44rem;
  border-collapse: collapse;
  font-size: 0.875rem;
  line-height: 1.7;
}

.service-q03-table th,
.service-q03-table td {
  padding: 0.85rem 1rem;
  border: 1px solid var(--color-border);
  text-align: left;
  vertical-align: top;
}

.service-q03-table thead th {
  background: var(--color-ink);
  color: #fff;
  font-weight: 700;
  text-align: center;
  letter-spacing: 0.04em;
}

.service-q03-table__corner {
  background: var(--color-ink) !important;
}

.service-q03-table tbody th {
  background: var(--color-muted);
  color: var(--color-ink);
  font-weight: 700;
  white-space: nowrap;
}

.service-q03-table tbody td {
  color: #444;
}

/* Feature (text + image) */
.service-q03-feature {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
  align-items: center;
}

.service-q03-feature + .service-q03-feature {
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q03-feature + .service-q03-section__subtitle {
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
}

@media (min-width: 768px) {
  .service-q03-feature {
    grid-template-columns: 1fr 1fr;
  }

  .service-q03-feature--reverse .service-q03-feature__body {
    order: 2;
  }
}

.service-q03-feature__lead {
  margin: 0 0 0.75rem;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-accent);
}

.service-q03-feature__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.9;
  color: #444;
}

.service-q03-feature__figure {
  margin: 0;
}

.service-q03-feature__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Image placeholder fallback */
.service-q03-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Service detail: quality04 (ルームクリーニング) */
.service-q04 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
  margin-bottom: clamp(3rem, 6vw, 5rem);
}

/* Intro */
.service-q04-intro {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q04-intro {
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
}

.service-q04-intro__catch {
  margin: 0 0 1.25rem;
  font-size: clamp(1.375rem, 3.5vw, 2rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

.service-q04-intro__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q04-intro__figure {
  margin: 0;
}

.service-q04-intro__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Section header */
.service-q04-section {
  scroll-margin-top: 6rem;
}

.service-q04-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q04-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q04-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

.service-q04-section__title-sub {
  display: block;
  font-size: 0.6em;
  margin-top: 0.25rem;
  color: #666;
}

/* Effects */
.service-q04-effects {
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q04-effects {
    grid-template-columns: 1fr 0.3fr;
    align-items: stretch;
  }
}

.service-q04-effects__list {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.service-q04-effect {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: 1.25rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
}

@media (max-width: 599px) {
  .service-q04-effect {
    flex-direction: column;
    text-align: center;
  }
}

.service-q04-effect__icon {
  flex: 0 0 clamp(4rem, 12vw, 5.5rem);
  display: flex;
  align-items: center;
  justify-content: center;
}

.service-q04-effect__img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.service-q04-effect__text {
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.7;
  color: var(--color-ink);
}

.service-q04-effect__note {
  display: block;
  margin-top: 0.5rem;
  font-size: 0.8125rem;
  font-weight: 400;
  color: #666;
}

.service-q04-effects__figure {
  margin: 0;
  display: none;
}

@media (min-width: 768px) {
  .service-q04-effects__figure {
    display: flex;
  }
}

.service-q04-effects__main-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Courses */
.service-q04-courses {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1px;
  list-style: none;
  margin: 0;
  padding: 0;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}

@media (min-width: 768px) {
  .service-q04-courses {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.service-q04-course {
  padding: clamp(1.5rem, 3vw, 2rem);
  background: var(--color-surface);
}

.service-q04-course__name {
  margin: 0 0 1rem;
  padding-bottom: 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-ink);
  border-bottom: 2px solid var(--color-accent);
}

.service-q04-course__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.85;
  color: #444;
}

/* Processes */
.service-q04-processes {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 600px) {
  .service-q04-processes {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 900px) {
  .service-q04-processes {
    grid-template-columns: repeat(4, 1fr);
  }
}

.service-q04-process {
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}

.service-q04-process__figure {
  margin: 0;
}

.service-q04-process__img {
  display: block;
  width: 100%;
  height: auto;
}

.service-q04-process__caption {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 1.25rem;
}

.service-q04-process__text {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

/* Image placeholder fallback */
.service-q04-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Service detail: quality05 (インテリアリペア) */
.service-q05 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
}

/* Intro */
.service-q05-intro {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q05-intro {
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
}

.service-q05-intro__catch {
  margin: 0 0 1.25rem;
  font-size: clamp(1.375rem, 3.5vw, 2rem);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-ink);
}

.service-q05-intro__lead {
  margin: 0;
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

.service-q05-intro__figure {
  margin: 0;
}

.service-q05-intro__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Section header */
.service-q05-section {
  scroll-margin-top: 6rem;
}

.service-q05-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q05-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q05-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

/* Gallery (Before/After) */
.service-q05-gallery {
  display: flex;
  flex-direction: column;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

@media (min-width: 768px) {
  .service-q05-gallery {
    flex-direction: row;
    align-items: flex-start;
  }

  .service-q05-gallery__item {
    flex: 1;
    min-width: 0;
  }
}

.service-q05-gallery__figure {
  margin: 0;
}

.service-q05-gallery__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Image placeholder fallback */
.service-q05-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Service detail: quality06 (エーミング) */
.service-q06 {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 6vw, 5rem);
}

/* Section */
.service-q06-section {
  scroll-margin-top: 6rem;
}

.service-q06-section__header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.service-q06-section__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: 0.5rem;
}

.service-q06-section__title {
  margin: 0;
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-ink);
}

.service-q06-lead {
  margin: 0 0 clamp(1.5rem, 3vw, 2rem);
  font-size: 1rem;
  line-height: 1.95;
  color: #444;
}

/* Callout (ASV / 施工箇所) */
.service-q06-callout {
  padding: clamp(1rem, 2.5vw, 1.5rem);
  border: 1px solid var(--color-border);
  background: #fafafa;
}

.service-q06-callout__title {
  margin: 0 0 0.75rem;
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-ink);
}

.service-q06-callout__note {
  margin: 0.75rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #555;
}

.service-q06-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.service-q06-list__item {
  position: relative;
  padding-left: 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #444;
}

.service-q06-list__item::before {
  content: "◉";
  position: absolute;
  left: 0;
  color: var(--color-accent);
  font-size: 0.75rem;
  line-height: 1.9;
}

/* Text block */
.service-q06-block {
  margin-top: clamp(1.5rem, 3vw, 2rem);
}

.service-q06-block--with-badge {
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

@media (max-width: 767px) {
  .service-q06-block--with-badge {
    display: flex;
    flex-direction: column;
    gap: 0;
  }

  .service-q06-block--with-badge .service-q06-block__body {
    display: contents;
  }

  .service-q06-block--with-badge .service-q06-block__title {
    order: 1;
    margin-bottom: 0.5rem;
  }

  .service-q06-block--with-badge .service-q06-badge {
    order: 2;
    margin: 0 0 1rem;
  }

  .service-q06-block--with-badge .service-q06-badge__text {
    display: block;
    width: auto;
    height: auto;
    padding: 0;
    border-radius: 0;
    background: transparent;
    color: var(--color-accent);
    font-size: 0.9375rem;
    font-weight: 700;
    line-height: 1.6;
    text-align: left;
  }

  .service-q06-block--with-badge .service-q06-block__texts {
    order: 3;
  }
}

@media (min-width: 768px) {
  .service-q06-block--with-badge {
    grid-template-columns: 1fr auto;
    align-items: stretch;
  }
}

.service-q06-block__title {
  margin: 0 0 0.75rem;
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--color-ink);
}

.service-q06-block__text {
  margin: 0 0 1rem;
  font-size: 0.9375rem;
  line-height: 1.95;
  color: #444;
}

.service-q06-block__text:last-child {
  margin-bottom: 0;
}

/* Aiming layout */
.service-q06-aiming {
  display: grid;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}

@media (min-width: 768px) {
  .service-q06-aiming {
    grid-template-columns: 1fr 1.2fr;
    align-items: start;
  }
}

.service-q06-aiming__figure {
  margin: 0;
}

.service-q06-aiming__img {
  display: block;
  width: 100%;
  height: auto;
}

/* Certified factory badge (CSS) */
.service-q06-block--with-badge .service-q06-badge {
  margin: 0;
}

@media (min-width: 768px) {
  .service-q06-block--with-badge .service-q06-badge {
    display: flex;
    align-items: center;
    justify-content: center;
  }
}

.service-q06-badge__text {
  font-weight: 700;
  line-height: 1.65;
}

@media (min-width: 768px) {
  .service-q06-badge__text {
    display: flex;
    align-items: center;
    justify-content: center;
    width: auto;
    height: 100%;
    max-width: clamp(11rem, 24vw, 14rem);
    max-height: clamp(11rem, 24vw, 14rem);
    aspect-ratio: 1;
    padding: 1.5rem;
    border-radius: 50%;
    background: var(--color-ink);
    color: #fff;
    font-size: clamp(0.8125rem, 2vw, 0.9375rem);
    text-align: center;
    flex-shrink: 0;
  }
}

/* Image placeholder fallback */
.service-q06-img--placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: linear-gradient(135deg, #f0f0f0, #e0e0e0);
}

/* Search form (widget & 404) */
.search-form__row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  max-width: 28rem;
}

.search-form__input {
  flex: 1 1 12rem;
  padding: 0.6rem 0.75rem;
  border: 1px solid #ccc;
  border-radius: 4px;
  font: inherit;
}

.search-form__submit {
  padding: 0.6rem 1.25rem;
  border: none;
  border-radius: 4px;
  background: var(--color-accent);
  color: #fff;
  font-weight: 600;
  cursor: pointer;
}

/* Footer widgets (ウィジェットエリアが有効な場合) */
.site-footer__widgets {
  padding: 2.5rem 0 1.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.site-footer__widgets .widget {
  margin-bottom: 1.5rem;
  font-size: 0.9375rem;
  color: rgba(255, 255, 255, 0.8);
}

.site-footer__widgets .widget-title {
  margin: 0 0 0.75rem;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.95);
}

.site-footer__widgets a {
  color: rgba(255, 255, 255, 0.85);
  transition: color var(--transition-base);
}

.site-footer__widgets a:hover {
  color: #fff;
}

/* FAQ (よくある質問) */
.faq-jump {
  margin-top: 0;
  margin-bottom: clamp(2.5rem, 5vw, 3.5rem);
  padding: clamp(1.25rem, 2.5vw, 1.75rem) clamp(1.25rem, 3vw, 1.75rem);
  background: #f8f8f8;
  border: 1px solid var(--color-border);
}

.faq-jump__head {
  margin-bottom: clamp(1rem, 2vw, 1.25rem);
  padding-bottom: clamp(0.85rem, 2vw, 1rem);
  border-bottom: 1px solid #e5e5e5;
}

.faq-jump__eyebrow {
  margin: 0 0 0.4rem;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  color: var(--color-accent);
}

.faq-jump__lead {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.6;
  color: #666;
}

.faq-jump__list {
  display: grid;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 768px) {
  .faq-jump__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
  }
}

.faq-jump__link {
  display: block;
  padding: 0.85rem 1rem;
  color: var(--color-ink);
  text-decoration: none;
  border: 1px solid #ddd;
  background: #fff;
  transition: border-color var(--transition-base), color var(--transition-base), background var(--transition-base);
}

.faq-jump__link:hover,
.faq-jump__link:focus-visible {
  color: var(--color-accent);
  border-color: var(--color-accent);
  background: #fff;
}

.faq-jump__title {
  display: block;
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.faq-accordion-wrap {
  padding-bottom: clamp(3rem, 6vw, 4.5rem);
}

.faq-category {
  margin-bottom: clamp(3.5rem, 7vw, 5rem);
  scroll-margin-top: 6rem;
}

.faq-category:last-child {
  margin-bottom: 0;
}

.faq-category__head {
  margin-bottom: clamp(1.75rem, 4vw, 2.5rem);
}

.faq-category__eyebrow {
  margin: 0 0 0.75rem;
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  line-height: 1.2;
}

.faq-category__title {
  margin: 0;
  color: var(--color-ink);
  font-size: clamp(1.375rem, 3vw, 1.875rem);
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1.35;
}

.faq-category__description {
  max-width: 42rem;
  margin: clamp(0.85rem, 2vw, 1rem) 0 0;
  color: #666;
  font-size: 0.9375rem;
  line-height: 1.85;
}

.faq-category__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin-top: clamp(1.5rem, 3vw, 2rem);
}

.faq-category__actions .button {
  box-sizing: border-box;
  width: 100%;
  text-align: center;
}

.faq-category__actions-suffix {
  display: none;
}

@media (min-width: 641px) {
  .faq-category__actions {
    display: flex;
    flex-wrap: nowrap;
    justify-content: flex-end;
  }

  .faq-category__actions .button {
    flex: 0 0 auto;
    width: 14rem;
  }

  .faq-category__actions-suffix {
    display: inline;
  }
}

.faq-accordion__item {
  border-top: 1px solid var(--color-border);
}

.faq-accordion__item:last-child {
  border-bottom: 1px solid var(--color-border);
}

.faq-accordion__heading {
  margin: 0;
}

.faq-accordion__trigger {
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  align-items: start;
  gap: 0 1.25rem;
  width: 100%;
  padding: clamp(1.35rem, 3vw, 1.75rem) 0;
  border: none;
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--color-ink);
}

.faq-accordion__trigger:hover,
.faq-accordion__trigger:focus-visible {
  color: var(--color-ink);
  outline: none;
}

.faq-accordion__trigger:focus-visible {
  box-shadow: inset 0 0 0 2px var(--color-accent);
}

.faq-accordion__mark {
  display: flex;
  align-items: center;
  align-self: start;
  flex-shrink: 0;
  width: 2.5rem;
  height: calc(1.65 * clamp(1rem, 2.1vw, 1.125rem));
  color: #000000;
  font-size: 0.75rem;
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1;
  white-space: nowrap;
}

.faq-accordion__mark::before {
  content: '( ';
}

.faq-accordion__mark::after {
  content: ' )';
}

.faq-accordion__mark--answer {
  height: calc(1.95 * clamp(0.9375rem, 2vw, 1rem));
  color: var(--color-accent);
}

.faq-accordion__question {
  min-width: 0;
  font-size: clamp(1rem, 2.1vw, 1.125rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.65;
}

.faq-accordion__toggle {
  flex-shrink: 0;
  position: relative;
  width: 1rem;
  height: 1rem;
  align-self: start;
  margin-top: calc((1.65 * clamp(1rem, 2.1vw, 1.125rem) - 1rem) / 2);
  color: var(--color-ink);
}

.faq-accordion__toggle::before,
.faq-accordion__toggle::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.75rem;
  height: 1px;
  background: currentColor;
  transform: translate(-50%, -50%);
  transition: transform 0.25s ease, opacity 0.25s ease;
}

.faq-accordion__toggle::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.faq-accordion__trigger[aria-expanded="true"] .faq-accordion__toggle::after {
  opacity: 0;
  transform: translate(-50%, -50%) rotate(90deg) scaleX(0);
}

.faq-accordion__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s ease;
}

.faq-accordion__panel.is-open {
  grid-template-rows: 1fr;
}

.faq-accordion__panel-inner {
  overflow: hidden;
  min-height: 0;
}

.faq-accordion__answer {
  display: grid;
  grid-template-columns: 2.5rem 1fr;
  align-items: start;
  gap: 0 1.25rem;
  padding: 0 0 clamp(1.35rem, 3vw, 1.75rem);
  opacity: 0;
  transform: translateY(-0.15rem);
  transition: opacity 0.25s ease 0.04s, transform 0.25s ease 0.04s;
}

.faq-accordion__panel.is-open .faq-accordion__answer {
  opacity: 1;
  transform: translateY(0);
}

.faq-accordion__answer-body {
  min-width: 0;
  padding-right: calc(1rem + 0.25rem);
  color: var(--color-ink);
  font-size: clamp(0.9375rem, 2vw, 1rem);
  font-weight: 400;
  line-height: 1.95;
  letter-spacing: 0.02em;
}

.faq-accordion__answer-body p {
  margin: 0 0 1rem;
}

.faq-accordion__answer-body p:last-child {
  margin-bottom: 0;
}

.faq-answer__list {
  margin: 0 0 1rem 1.15rem;
  padding: 0;
}

.faq-answer__list li {
  margin-bottom: 0.35rem;
}

.faq-answer__note {
  font-size: 0.875rem;
  line-height: 1.8;
  color: #666;
}

.faq-answer__figure {
  margin: 0 0 0.9rem;
  max-width: 25rem;
}

.faq-answer__image {
  display: block;
  width: 100%;
  height: auto;
}

.faq-answer__actions {
  display: flex;
  justify-content: flex-end;
  margin: 1rem 0 0;
  padding-top: 0.75rem;
  border-top: 1px solid #eee;
}

.faq-answer__action {
  display: inline-block;
  font-size: 0.8125rem;
  font-weight: 600;
  color: #666;
  text-decoration: underline;
  text-underline-offset: 0.15em;
  transition: color var(--transition-base);
}

.faq-answer__action:hover,
.faq-answer__action:focus-visible {
  color: var(--color-accent);
}

@media (max-width: 640px) {
  .faq-jump__list {
    grid-template-columns: 1fr;
  }

  .faq-accordion__trigger,
  .faq-accordion__answer {
    gap: 0 0.85rem;
  }

  .faq-accordion__answer-body {
    padding-right: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .faq-accordion__panel,
  .faq-accordion__answer,
  .faq-accordion__toggle::before,
  .faq-accordion__toggle::after {
    transition: none;
  }

  .faq-accordion__answer {
    opacity: 1;
    transform: none;
  }
}

/* Company page */
.site-main--company .page-hero {
  margin-bottom: 0;
}

.company-page {
  padding-bottom: 0;
}

.company-section {
  padding: clamp(3.5rem, 7vw, 6rem) 0;
  background: var(--color-surface);
}

.company-section--muted {
  background: var(--color-muted);
}

.company-section--dark {
  background: #15171a;
}

.company-section__head {
  margin-bottom: clamp(1.75rem, 3.5vw, 2.5rem);
}

.company-section__label {
  margin: 0 0 0.7rem;
  color: var(--color-accent);
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  line-height: 1.2;
  text-transform: uppercase;
}

.company-section__label--light {
  color: #ff5a6a;
}

.company-section__title {
  position: relative;
  margin: 0;
  padding-bottom: 1rem;
  color: var(--color-ink);
  font-size: clamp(1.5rem, 3.2vw, 2.125rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.35;
}

.company-section__title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 2.75rem;
  height: 3px;
  background: var(--color-accent);
}

.company-section__title--light {
  color: #fff;
}

/* Intro / overview */
.company-intro__head {
  margin-bottom: clamp(1.5rem, 3vw, 2rem);
}

.company-intro__head .company-section__title {
  max-width: 46rem;
}

.company-intro__body,
.company-message__body {
  color: #333;
  font-size: 1rem;
  line-height: 1.95;
}

.company-business__body {
  min-width: 0;
}

.company-business__lead {
  margin: 0 0 1.5rem;
  color: #333;
  font-size: 1rem;
  line-height: 1.95;
}

.company-intro__body p,
.company-message__body p {
  margin: 0 0 1.35rem;
}

.company-intro__body p:last-child,
.company-message__body p:last-child {
  margin-bottom: 0;
}

.company-intro__body br {
  display: none;
}

.company-intro__visual {
  margin-top: clamp(2rem, 4vw, 3rem);
}

/* Media / placeholder */
.company-media {
  margin: 0;
  overflow: hidden;
  background: var(--color-muted);
}

.company-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.company-media--wide {
  aspect-ratio: 21 / 9;
}

.company-media--landscape {
  aspect-ratio: 4 / 3;
}

.company-media--portrait {
  aspect-ratio: 4 / 5;
}

.company-media--square {
  aspect-ratio: 1 / 1;
}

.company-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  min-height: 12rem;
  padding: 1.5rem;
  border: 1px solid var(--color-border);
  background:
    linear-gradient(135deg, rgba(232, 25, 44, 0.05) 0, rgba(232, 25, 44, 0.05) 25%, transparent 25%, transparent 50%, rgba(232, 25, 44, 0.05) 50%, rgba(232, 25, 44, 0.05) 75%, transparent 75%, transparent 100%),
    var(--color-muted);
  background-size: 1.25rem 1.25rem;
  color: #555;
  text-align: center;
}

.company-placeholder--portrait {
  aspect-ratio: 4 / 5;
  min-height: 20rem;
}

.company-placeholder--landscape {
  aspect-ratio: 4 / 3;
}

.company-placeholder--wide {
  aspect-ratio: 21 / 9;
}

.company-placeholder--square {
  aspect-ratio: 1 / 1;
}

.company-placeholder__label {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.65rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.2;
}

.company-placeholder__text {
  max-width: 18rem;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.6;
}

/* Numbers */
.company-stats__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 0;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}

.company-stats__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  gap: 0.65rem;
  padding: clamp(1.5rem, 3vw, 2.25rem) 0.75rem;
  background: var(--color-surface);
  text-align: center;
}

.company-stats__label {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: 0;
}

.company-stats__label-ja {
  color: #555;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.35;
}

.company-stats__label-en {
  color: #9aa0a6;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  line-height: 1.35;
  text-transform: uppercase;
}

.company-stats__value {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  min-height: clamp(2.75rem, 8vw, 3.75rem);
  margin: 0;
  color: var(--color-accent);
  line-height: 1;
}

.company-stats__figure {
  display: inline-flex;
  align-items: baseline;
  justify-content: center;
  flex-wrap: nowrap;
  white-space: nowrap;
}

.company-stats__prefix {
  margin-right: 0.1em;
  color: var(--color-accent);
  font-size: clamp(1.125rem, 3.5vw, 1.75rem);
  font-weight: 800;
  letter-spacing: 0.02em;
}

.company-stats__num {
  font-size: clamp(2rem, 6vw, 3.25rem);
  font-weight: 800;
  letter-spacing: 0.01em;
}

.company-stats__unit {
  margin-left: 0.12em;
  color: var(--color-ink);
  font-size: clamp(0.875rem, 2vw, 1.125rem);
  font-weight: 800;
}

/* Message */
.company-message__grid,
.company-business__grid,
.company-access__grid {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
}

.company-message__grid {
  align-items: start;
}

.company-message__pullquote {
  margin: 0 0 1.75rem;
  padding-left: 1.25rem;
  border-left: 3px solid var(--color-accent);
  color: var(--color-ink);
  font-size: clamp(1.125rem, 2.4vw, 1.5rem);
  font-weight: 800;
  letter-spacing: 0.03em;
  line-height: 1.7;
  font-variant-emoji: text;
}

.company-message__signature {
  margin-top: 2rem;
  color: var(--color-ink);
  font-weight: 700;
  line-height: 1.9;
  text-align: right;
}

.company-message__media {
  position: sticky;
  top: 6rem;
}

/* Philosophy (dark) */
.company-philosophy__lead {
  margin-bottom: clamp(2rem, 4vw, 3rem);
}

.company-philosophy__creed-label,
.company-philosophy__values-label {
  margin: 0 0 0.85rem;
  color: #ff5a6a;
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}

.company-philosophy__creed {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0;
  color: #fff;
  font-size: clamp(1.75rem, 5vw, 3rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.4;
  font-variant-emoji: text;
}

.company-philosophy__list {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.company-philosophy__list li {
  position: relative;
  padding-left: 1.5rem;
  color: rgba(255, 255, 255, 0.92);
  font-size: clamp(1rem, 2.4vw, 1.25rem);
  font-weight: 700;
  line-height: 1.6;
}

.company-philosophy__list li::before {
  content: "";
  position: absolute;
  top: 0.65em;
  left: 0;
  width: 0.6rem;
  height: 0.6rem;
  background: var(--color-accent);
}

.company-philosophy__note {
  max-width: 52rem;
  margin: clamp(2rem, 4vw, 3rem) 0 0;
  color: rgba(255, 255, 255, 0.72);
  font-size: 1rem;
  line-height: 1.9;
}

.company-philosophy__visual {
  margin-top: clamp(2rem, 4vw, 3rem);
}

/* Business */
.company-business__list,
.company-partners__list,
.company-links__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.company-business__list {
  display: grid;
  gap: 0.75rem;
  margin: 0;
  counter-reset: company-business-item;
}

.company-business__list li {
  position: relative;
  margin: 0;
  padding: 0.8rem 0.85rem 0.8rem 2.5rem;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: #333;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.45;
  counter-increment: company-business-item;
}

.company-business__list li::before {
  content: counter(company-business-item, decimal-leading-zero);
  position: absolute;
  top: 0.72rem;
  left: 0.75rem;
  width: auto;
  height: auto;
  background: none;
  color: var(--color-accent);
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1;
}

.company-partners__list li {
  position: relative;
  padding-left: 1rem;
}

.company-partners__list li::before {
  content: "";
  position: absolute;
  top: 0.8em;
  left: 0;
  width: 0.35rem;
  height: 0.35rem;
  background: var(--color-accent);
}

.company-business__media {
  min-width: 0;
}

.company-access__photo {
  min-width: 0;
}

/* Partners */
.company-partners__grid {
  display: grid;
  gap: 1.5rem;
}

.company-partners__block {
  padding: 1.5rem;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}

.company-partners__title {
  margin: 0 0 1rem;
  padding-bottom: 0.65rem;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-accent);
  font-size: 0.9375rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.4;
}

/* Profile table */
.company-table-wrap {
  overflow-x: auto;
}

.company-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9375rem;
  line-height: 1.8;
}

.company-table th,
.company-table td {
  padding: 1rem 0;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
  text-align: left;
}

.company-table th {
  width: 11rem;
  padding-right: 1.5rem;
  color: var(--color-ink);
  font-weight: 800;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.company-table td {
  color: #333;
}

.company-table a,
.company-access__tel a,
.company-links__list a {
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color var(--transition-base);
}

.company-table a:hover,
.company-table a:focus-visible,
.company-access__tel a:hover,
.company-access__tel a:focus-visible,
.company-links__list a:hover,
.company-links__list a:focus-visible {
  color: var(--color-accent);
}

.company-partners__list {
  color: #333;
  font-size: 0.9375rem;
  line-height: 1.8;
}

.company-partners__list li + li {
  margin-top: 0.5rem;
}

.company-access__details {
  display: grid;
  gap: 1.25rem;
  align-content: start;
}

.company-access__address {
  margin: 0;
  color: #333;
  font-style: normal;
  font-size: 1rem;
  line-height: 1.8;
}

.company-access__tel {
  margin: 0;
  color: #333;
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.company-access__map iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 16rem;
  border-radius: 0;
  filter: grayscale(0.15);
}

.company-links__list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--color-border);
}

.company-links__list li {
  border-bottom: 1px solid var(--color-border);
}

.company-links__list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
  font-weight: 700;
  text-decoration: none;
}

.company-links__list a::after {
  content: "↗";
  color: var(--color-accent);
  font-size: 0.875rem;
  line-height: 1;
}

@media (min-width: 768px) {
  .company-intro__body br.pc-only-break {
    display: block;
  }

  .company-stats__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  .company-stats__item--sp-only {
    display: none;
  }

  .company-stats__value {
    min-height: 3.25rem;
  }

  .company-stats__prefix {
    font-size: 0.9375rem;
  }

  .company-stats__num {
    font-size: clamp(1.625rem, 2.6vw, 2.125rem);
  }

  .company-stats__unit {
    font-size: 0.8125rem;
  }

  .company-message__grid {
    grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem);
  }

  .company-business__grid {
    grid-template-columns: minmax(0, 1fr) minmax(18rem, 28rem);
    align-items: start;
    gap: clamp(2rem, 5vw, 4rem);
  }

  .company-business__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: repeat(3, auto);
    gap: 0.65rem;
  }

  .company-business__list li {
    display: flex;
    align-items: center;
    min-height: 0;
    padding: 1.35rem 0.75rem 1.35rem 2.35rem;
    font-size: 0.9375rem;
    line-height: 1.4;
  }

  .company-business__list li::before {
    top: 50%;
    left: 0.75rem;
    transform: translateY(-50%);
  }

  .company-business__media {
    min-width: 0;
  }

  .company-business__media .company-media,
  .company-business__media .company-placeholder {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
  }

  .company-access__grid {
    grid-template-columns: minmax(0, 1fr) minmax(20rem, 30rem);
    align-items: start;
    gap: clamp(1.5rem, 3vw, 2.5rem);
  }

  .company-access__photo,
  .company-access__map {
    height: clamp(14rem, 22vw, 20rem);
  }

  .company-access__photo .company-media,
  .company-access__photo .company-placeholder {
    height: 100%;
    aspect-ratio: unset;
    min-height: 0;
  }

  .company-access__map iframe {
    min-height: 0;
  }

  .company-partners__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .company-partners__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  .company-message__signature {
    text-align: left;
  }

  .company-message__media {
    position: static;
  }

  .company-table,
  .company-table tbody,
  .company-table tr,
  .company-table th,
  .company-table td {
    display: block;
    width: 100%;
  }

  .company-table tr {
    padding: 0.9rem 0;
    border-bottom: 1px solid var(--color-border);
  }

  .company-table th,
  .company-table td {
    padding: 0;
    border-bottom: 0;
  }

  .company-table th {
    margin-bottom: 0.35rem;
    white-space: normal;
  }
}

/* Recruit page（会社概要の company-* を流用） */
.site-main--recruit .page-hero {
  margin-bottom: 0;
}

.recruit-page {
  padding-bottom: 0;
}

.site-main--recruit .company-intro__head .company-section__title {
  max-width: none;
}

.recruit-intro__grid {
  display: grid;
  gap: clamp(2rem, 5vw, 3.5rem);
  align-items: start;
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

.recruit-intro__media {
  margin: 0;
  width: 100%;
  max-width: 500px;
  justify-self: center;
}

.recruit-intro__media .company-media,
.recruit-intro__media .company-placeholder {
  width: 100%;
  aspect-ratio: auto;
  height: auto;
}

.recruit-intro__media .company-media img {
  width: 100%;
  height: auto;
  object-fit: unset;
}

.recruit-gallery {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
}

.recruit-gallery__item {
  margin: 0;
}

.recruit-gallery__caption {
  margin-top: 0.85rem;
  color: #444;
  font-size: 0.9375rem;
  line-height: 1.7;
}

.recruit-apply__body {
  color: rgba(255, 255, 255, 0.85);
  font-size: 1rem;
  line-height: 1.95;
}

.recruit-apply__body p {
  margin: 0 0 1.1rem;
}

.recruit-apply__body p:last-child {
  margin-bottom: 0;
}

.recruit-cta {
  margin-top: clamp(1.75rem, 4vw, 2.5rem);
}

.recruit-cta__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  min-width: min(100%, 20rem);
  padding: 1rem 2.5rem;
  background: var(--color-accent);
  color: #fff;
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
  transition: background var(--transition-base);
}

.recruit-cta__btn::after {
  content: "→";
  font-size: 0.95em;
  line-height: 1;
  transition: transform var(--transition-base);
}

.recruit-cta__btn:hover,
.recruit-cta__btn:focus-visible {
  background: var(--color-accent-dark);
}

.recruit-cta__btn:hover::after,
.recruit-cta__btn:focus-visible::after {
  transform: translateX(4px);
}

@media (min-width: 768px) {
  .recruit-intro__grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: clamp(2.5rem, 5vw, 4rem);
  }

  .recruit-intro__media {
    width: 500px;
    max-width: 500px;
    justify-self: end;
  }

  .recruit-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  .recruit-cta__btn {
    width: 100%;
  }
}

/* Policy page */
.site-main--policy .page-hero {
  margin-bottom: 0;
}

.policy-page {
  padding-bottom: clamp(4rem, 8vw, 7rem);
}

.policy-section {
  padding: clamp(2.5rem, 5vw, 3.5rem) 0;
}

.policy-section--first {
  padding-top: clamp(2rem, 4vw, 3rem);
}

.policy-section__head {
  margin-bottom: clamp(1.25rem, 3vw, 1.75rem);
}

.policy-section__title {
  margin: 0;
  padding-bottom: 0;
  color: var(--color-ink);
  font-size: clamp(1.25rem, 2.8vw, 1.75rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.45;
}

.policy-section__body {
  color: #333;
  font-size: 1rem;
  line-height: 1.95;
}

.policy-section__body p {
  margin: 0 0 1.25rem;
}

.policy-section__body p:last-child {
  margin-bottom: 0;
}

.policy-section__list {
  margin: clamp(1.25rem, 3vw, 1.75rem) 0 0;
  padding-left: 1.35rem;
  color: #333;
  font-size: 1rem;
  line-height: 1.95;
}

.policy-section__list li + li {
  margin-top: 0.85rem;
}

.policy-section__note {
  margin: 1.25rem 0 0;
  color: #555;
  font-size: 0.9375rem;
  line-height: 1.85;
}
