/* ==========================================================================
   加藤モータース株式会社 サイトスタイル
   DESIGN.md に基づく。色は theme.json のパレットと一致させています。
   ========================================================================== */

:root{
  --ink:#0E1116;
  --paper:#F4F4F1;
  --white:#FFFFFF;
  --blue:#1B34E8;
  --blue-dark:#1428BC;
  --navy:#0A1A3C;
  --gray:#5A626E;
  --line:#D9D9D4;
  --alert:#E8431B;
  --pad:clamp(24px,4.4vw,64px);
  --content:940px;    /* 本文の共通幅。全ページここに揃えます */
  --wide:1280px;      /* 一覧など、広く使いたいところ */
  --head:88px;        /* ヘッダーの高さ。目次から飛んだときの余白に使います */

  /* 余白の段。画面幅に応じて滑らかに変わります。 */
  --s-sec:clamp(64px,9vw,120px);   /* 大きな区切り */
  --s-blk:clamp(48px,6vw,80px);    /* 見出しの上 */
  --s-grp:clamp(28px,3.4vw,48px);  /* まとまりの間 */
  --sans:"Noto Sans JP",system-ui,sans-serif;
  --display:"Zen Kaku Gothic New","Noto Sans JP",sans-serif;
  --mono:"Roboto Mono",monospace;
  --en:"Inter Tight",sans-serif;
}

/* ページ遷移をなめらかにする（対応したブラウザのみ。他はこれまで通り） */
@view-transition{navigation:auto}
::view-transition-old(root){animation:km-fade-out 180ms ease-out both}
::view-transition-new(root){animation:km-fade-in 260ms ease-out both}
@keyframes km-fade-out{to{opacity:0}}
@keyframes km-fade-in{from{opacity:0;transform:translateY(8px)}}

/* ヘッダーは遷移中も動かさない */
.km-header{view-transition-name:km-header}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}

/* 目次から飛んだとき、見出しがヘッダーの下に隠れないようにする */
:target,
.km-prose h2,.km-prose h3,
[id^="km-sec-"]{scroll-margin-top:calc(var(--head) + 24px)}

/* 飛んだ先の見出しを一瞬だけ強調する（どこに着いたか分かるように） */
.km-prose h2:target{animation:km-flash 1.6s ease-out}
@keyframes km-flash{
  0%,20%{background:rgba(27,52,232,.1);box-shadow:-12px 0 0 rgba(27,52,232,.1),12px 0 0 rgba(27,52,232,.1)}
  100%{background:transparent;box-shadow:none}
}

body{
  margin:0;background:var(--paper);color:var(--ink);
  font:400 17px/1.9 var(--sans);
  overflow-x:clip;
  -webkit-text-size-adjust:100%;
  line-break:strict;
  overflow-wrap:anywhere;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--blue)}
a:hover{color:var(--blue-dark)}
*:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.km-mono{font-family:var(--mono)}
.km-arrow{font-family:var(--en)}

.km-skip{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--blue);color:#fff;padding:12px 20px;text-decoration:none;
}
.km-skip:focus{left:0}

/* ==========================================================================
   ヘッダー
   ========================================================================== */

.km-header{
  height:88px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;gap:clamp(8px,1.6vw,24px);padding:0 clamp(16px,2.6vw,64px);
  background:var(--paper);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
  transition:height 220ms ease-out,box-shadow 220ms ease-out;
}
.km-header.is-compact{height:64px;box-shadow:0 1px 0 rgba(14,17,22,.12)}

/* 読み進めを示す細い帯。長いページで、どのへんまで読んだか分かります。
   下へ読むときは左から伸び、上へ戻るときは右から縮みます。 */
.km-progress{
  position:fixed;left:0;right:0;top:0;height:2px;z-index:100;
  background:var(--blue);transform-origin:0 50%;transform:scaleX(0);
  transition:transform 180ms cubic-bezier(.2,.7,.3,1);
  pointer-events:none;
}

.km-brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.km-brand__mark{
  width:34px;height:34px;flex:none;background:var(--ink);color:#fff;
  display:grid;place-items:center;font:700 15px var(--en);
}
.km-brand__text{display:flex;flex-direction:column;gap:2px}
.km-brand__en{font:700 15px var(--mono);letter-spacing:.08em;color:var(--ink);white-space:nowrap}
.km-brand__ja{font:400 12px var(--sans);color:var(--gray);white-space:nowrap}

.km-nav{
  display:flex;justify-content:center;gap:clamp(2px,.6vw,20px);
  list-style:none;margin:0;padding:0;min-width:0;flex-wrap:nowrap;
}
.km-nav__link{
  display:flex;flex-direction:column;gap:3px;text-decoration:none;color:var(--ink);
  white-space:nowrap;padding:8px clamp(4px,.7vw,12px);border-radius:2px;
  transition:background 160ms ease-out,color 160ms ease-out;
}
.km-nav__link:hover{background:var(--blue);color:#fff}
.km-nav__item.is-current > .km-nav__link{background:var(--blue);color:#fff}
.km-nav__ja{font:700 clamp(12px,1.35vw,15px) var(--sans)}
.km-nav__en{font:400 10px var(--mono);letter-spacing:.12em;color:currentColor;opacity:.6}
.km-nav__link:hover .km-nav__en,
.km-nav__item.is-current .km-nav__en{opacity:.75}
.km-nav-empty{margin:0;font:400 13px var(--sans);color:var(--alert)}

/* 画面が狭いときはヘッダーの要素を順に削って、右端が切れないようにする */
@media (min-width:1024px) and (max-width:1439px){
  .km-brand__ja{display:none}
}
@media (min-width:1024px) and (max-width:1319px){
  .km-nav__en{display:none}
  .km-nav__link{padding:10px 6px}
  .km-nav__ja{font-size:14px}
}
@media (min-width:1024px) and (max-width:1149px){
  .km-brand__en{font-size:14px}
  .km-nav__ja{font-size:13px}
  .km-nav__link{padding:10px 4px}
  .km-btn--head .km-btn__label{display:none}
  .km-btn--head{padding-left:18px;padding-right:18px}
}

/* ボタン */
.km-btn{
  display:inline-flex;align-items:center;gap:10px;text-decoration:none;
  padding:15px 22px;border-radius:2px;font:700 15px var(--sans);
  white-space:nowrap;border:1px solid transparent;cursor:pointer;
  transition:background 160ms ease-out,border-color 160ms ease-out,color 160ms ease-out;
}
.km-btn--primary{background:var(--blue);color:#fff}
.km-btn--primary:hover{background:var(--blue-dark);color:#fff}
.km-btn--ghost{border-color:var(--paper);color:var(--paper);background:transparent}
.km-btn--ghost:hover{background:var(--paper);color:var(--ink)}

/* ヘッダーのお問い合わせボタン。ナビの項目と大きさを揃えます。 */
.km-btn--head{
  padding:10px clamp(12px,1.4vw,18px);
  gap:8px;
  font-size:clamp(12px,1.35vw,15px);
  align-self:center;
}
.km-btn--head .km-arrow{font-size:.9em}
.km-btn--lg{padding:18px 32px;font-size:16px;flex-direction:column;align-items:flex-start;gap:4px}
.km-btn--lg .km-mono{font-size:19px;letter-spacing:.01em}

/* ==========================================================================
   受付時間外の電話リンク
   → aria-disabled が付いたらグレーアウトし、クリックを無効化する
   ========================================================================== */

[data-km-tel][aria-disabled="true"]{
  pointer-events:none;cursor:default;
  background:var(--gray)!important;border-color:var(--gray)!important;
}
.km-hours-note{display:block;font:400 14px/1.7 var(--sans);color:var(--gray)}

/* ==========================================================================
   モバイルヘッダー
   ========================================================================== */

.km-mobbar{display:none}
.km-mobmenu summary{list-style:none;cursor:pointer}
.km-mobmenu summary::-webkit-details-marker{display:none}

@media (max-width:1023px){
  body{padding-bottom:64px}
  .km-header{display:none}
  .km-mobbar{
    display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:2px;
    position:sticky;top:0;z-index:60;height:64px;background:var(--paper);
  }
  .km-mobbar__brand{
    background:var(--blue);text-decoration:none;display:flex;align-items:center;
    gap:10px;padding:0 16px;min-width:0;
  }
  .km-mobbar__mark{
    width:28px;height:28px;flex:none;background:#fff;color:var(--blue);
    display:grid;place-items:center;font:700 14px var(--en);
  }
  .km-mobbar__en{
    font:700 15px var(--mono);letter-spacing:.08em;color:#fff;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .km-mobmenu summary{
    background:#fff;color:var(--blue);width:96px;height:64px;
    display:flex;align-items:center;justify-content:center;
    font:700 15px var(--mono);letter-spacing:.1em;
  }
  .km-mobmenu__panel{
    position:fixed;left:0;right:0;top:64px;bottom:0;background:var(--blue);
    padding:32px 24px 88px;display:flex;flex-direction:column;gap:8px;
    overflow-y:auto;z-index:70;
  }
  .km-mobnav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
  .km-mobnav .km-nav__link{
    color:#fff;padding:20px 0;border-bottom:1px solid rgba(255,255,255,.3);border-radius:0;
  }
  .km-mobnav .km-nav__link:hover{background:transparent;color:#fff}
  .km-mobnav .km-nav__ja{font:700 28px var(--display)}
  .km-mobnav .km-nav__en{font-size:12px;color:rgba(255,255,255,.75)}
  .km-mobmenu__cta{
    text-decoration:none;color:var(--blue);background:#fff;margin-top:16px;padding:20px;
    display:flex;align-items:center;justify-content:space-between;font:700 19px var(--sans);
  }
  .km-mobbar__tel{
    background:var(--blue);text-decoration:none;width:64px;
    display:grid;place-items:center;color:#fff;font:700 22px var(--en);
  }
  /* メニューを開いている間は固定電話バーを隠す */
  body:has(.km-mobmenu[open]) .km-callbar{display:none}
}

/* ==========================================================================
   固定電話バー（モバイル）
   ========================================================================== */

.km-callbar{display:none}
@media (max-width:1023px){
  .km-callbar{
    display:grid;grid-template-columns:1fr 1fr;gap:1px;
    position:fixed;left:0;right:0;bottom:0;z-index:100;height:64px;
    background:var(--blue);padding-bottom:env(safe-area-inset-bottom);
  }
  .km-callbar__tel,.km-callbar__mail{
    background:var(--blue);color:#fff;text-decoration:none;
    display:flex;align-items:center;justify-content:center;gap:10px;
    font:700 17px var(--sans);
  }
  .km-callbar__tel .km-mono{font-size:19px;white-space:nowrap}
  .km-callbar__mail{border-left:1px solid rgba(255,255,255,.35)}
}

/* ==========================================================================
   ヒーロー（トップページ）
   ========================================================================== */

.km-hero{position:relative;height:620px;overflow:hidden;background:var(--ink)}
.km-hero__media{position:absolute;inset:0}
.km-hero__slide{
  position:absolute;inset:0;opacity:0;transition:opacity 900ms ease-out;
  background-position:center;background-size:cover;background-repeat:no-repeat;
}
.km-hero__slide.is-active{opacity:1;animation:kmZoom 13.5s ease-out both}
.km-hero__slide--placeholder{
  background:repeating-linear-gradient(135deg,#c9c9c4 0 12px,#d6d6d1 12px 24px);
}
.km-hero__img{width:100%;height:100%;object-fit:cover}
.km-hero__scrim{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(14,17,22,.82) 0%,rgba(14,17,22,.62) 42%,rgba(14,17,22,.2) 100%);
}
.km-hero__inner{
  position:absolute;inset:0;display:flex;flex-direction:column;
  justify-content:space-between;padding:40px var(--pad) 48px;
}
.km-hero__kicker{
  margin:0;font-size:12px;letter-spacing:.12em;color:rgba(244,244,241,.85);
}
.km-hero__text{display:flex;flex-direction:column;gap:28px;max-width:660px}
.km-hero__title{
  margin:0;font:700 clamp(2rem,4.4vw,2.625rem)/1.5 var(--display);
  letter-spacing:.01em;color:var(--paper);text-wrap:pretty;word-break:auto-phrase;
}
.km-hero__lead{
  margin:0;max-width:34em;font:400 17px/1.9 var(--sans);color:rgba(244,244,241,.92);
}
.km-hero__actions{display:flex;gap:16px;flex-wrap:wrap}
.km-hero .km-hours-note{color:rgba(244,244,241,.85)}
.km-hero__dots{display:flex;gap:8px;align-items:center}
.km-hero__dot{
  width:36px;height:3px;border:0;padding:0;cursor:pointer;
  background:rgba(244,244,241,.45);transition:background 240ms ease-out;
}
.km-hero__dot.is-active{background:var(--blue)}

@keyframes kmZoom{from{transform:scale(1)}to{transform:scale(1.06)}}

@media (max-width:1023px){
  .km-hero{height:auto;min-height:70vh}
  .km-hero__inner{position:relative;gap:32px;padding:32px 24px 40px}
  .km-hero__media{position:absolute}
}

/* 情報バー */
.km-info{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  border-bottom:1px solid var(--line);background:var(--white);
}
.km-info__item{
  padding:24px var(--pad) 24px 24px;display:flex;flex-direction:column;gap:6px;
  border-right:1px solid var(--line);
}
.km-info__item:last-child{border-right:0}
.km-info__label{font-size:12px;letter-spacing:.12em;color:var(--gray)}
.km-info__value{font:700 17px var(--sans)}
.km-info__sub{font:400 15px var(--sans);color:var(--gray)}
.km-cred{position:relative;min-height:56px}
.km-cred__item{
  position:absolute;left:0;top:0;right:0;opacity:0;
  display:flex;flex-direction:column;gap:4px;transition:opacity 600ms ease-out;
}
.km-cred__item.is-active{opacity:1}
.km-cred__title{font:700 17px var(--sans)}
.km-cred__sub{font-size:13px;color:var(--gray)}
@media (max-width:1023px){
  .km-info{grid-template-columns:minmax(0,1fr)}
  .km-info__item{border-right:0;border-bottom:1px solid var(--line)}
}

/* ==========================================================================
   ページ共通
   ========================================================================== */

.km-main{display:block}
.km-page{padding:64px var(--pad) 0;max-width:var(--content);margin:0 auto}
.km-page--wide{max-width:var(--wide)}
.km-page__head{padding-bottom:20px;border-bottom:1px solid var(--line)}
.km-page__en{
  margin:0;font:400 14px var(--mono);letter-spacing:.12em;color:var(--blue);
}
.km-page__title{
  margin:12px 0 0;font:700 clamp(2.5rem,6vw,4.5rem)/1.2 var(--display);
  letter-spacing:.01em;color:var(--ink);text-wrap:pretty;
}
.km-page__title--single{font-size:clamp(1.5rem,3vw,2rem);line-height:1.5}
.km-page__lead{margin:20px 0 0;max-width:40em;font:400 17px/1.9 var(--sans);color:var(--gray)}
.km-page__meta{margin:0;display:flex;gap:16px;align-items:center;font-size:15px;color:var(--gray)}
.km-page__cat{
  text-decoration:none;border:1px solid var(--line);padding:4px 10px;
  font:400 14px var(--sans);color:var(--gray);
}
.km-page__index{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:24px;align-items:baseline}
.km-page__index a{font:400 15px var(--sans)}
.km-page__index a[aria-current]{font-weight:700;color:var(--ink)}
.km-page__thumb{margin:48px 0 0}
.km-page__body{margin-top:48px}

/* 本文（ブロックエディタの出力）
   見出し・本文・図表の左右の端を、ヘッダーと揃えます。 */
.km-prose{max-width:none}
.km-prose > blockquote,
.km-prose > .wp-block-quote{max-width:44em}
.km-page--single .km-prose,.km-front-body{max-width:none;margin-left:auto;margin-right:auto}
.km-front-body{padding:96px var(--pad) 0;max-width:var(--content);margin-left:auto;margin-right:auto}
.km-prose > * + *{margin-top:28px}
.km-prose h2{
  margin-top:var(--s-blk);padding-bottom:12px;border-bottom:1px solid var(--ink);
  font:700 clamp(1.5rem,3.2vw,2.25rem)/1.35 var(--display);letter-spacing:.02em;
  text-wrap:balance;word-break:auto-phrase;
}
.km-prose h3{margin-top:var(--s-grp);font:700 21px/1.5 var(--display);word-break:auto-phrase}
.km-prose h4{margin-top:32px;font:700 17px var(--sans)}
.km-prose p{margin:0;text-wrap:pretty}
.km-prose ul,.km-prose ol{margin:0;padding-left:1.4em;line-height:2}
.km-prose li + li{margin-top:6px}
.km-prose strong{font-weight:700}
.km-prose figure{margin:0}
.km-prose .wp-block-table{overflow-x:auto}
.km-prose table{width:100%;border-collapse:collapse}
.km-prose th,.km-prose td{
  border-bottom:1px solid var(--line);padding:16px 0;text-align:left;vertical-align:top;
  font-size:16px;
}
.km-prose th{font-weight:700;width:12em;padding-right:24px}
.km-prose .wp-block-columns{gap:24px}

/* 本文内の専用パーツ */
.km-month{
  display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-top:56px!important;
  font:700 clamp(3rem,9vw,6rem)/1 var(--en);letter-spacing:-.03em;color:var(--blue);
}
.km-month strong{
  font:700 clamp(1.75rem,4vw,2.25rem)/1.35 var(--display);letter-spacing:.02em;color:var(--ink);
}
.km-campaign{
  background:var(--white);border:1px solid var(--line);border-radius:4px;
  padding:40px;margin-top:24px;
}
.km-campaign > * + *{margin-top:16px}
.km-campaign__meta{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  font:400 15px var(--mono);color:var(--gray);
}
.km-campaign__meta strong{
  background:var(--blue);color:#fff;padding:6px 12px;
  font:700 13px var(--mono);letter-spacing:.08em;
}
.km-campaign h3{margin-top:20px!important;font-size:clamp(1.5rem,3.2vw,2rem);line-height:1.4}
.km-campaign h4{margin-top:28px!important;padding-top:24px;border-top:1px solid var(--line)}
.km-price{
  margin-top:28px!important;background:var(--blue);color:#fff;padding:28px 32px;
  font-family:var(--mono);font-size:16px;line-height:1.7;
}
.km-price s{color:rgba(255,255,255,.8)}
.km-price strong{
  display:block;margin-top:8px;
  font:700 clamp(2rem,4.5vw,2.75rem)/1 var(--mono);color:#fff;
}
.km-color{
  padding-bottom:14px;border-bottom:1px solid var(--line);
  font-size:16px;color:var(--gray);
}
/* セクション見出し（日本語＋英字ラベル） */
.km-sechead{
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;
  margin-top:80px!important;padding-bottom:12px;border-bottom:1px solid var(--ink);
}
.km-sechead h2,.km-sechead h3{
  margin:0!important;padding:0;border:0;
  font:700 clamp(1.25rem,2.4vw,1.5rem)/1.35 var(--display);letter-spacing:.02em;color:var(--ink);
}
.km-sechead p{
  margin:0!important;flex:none;
  font:400 13px var(--mono);letter-spacing:.1em;color:var(--blue);
}

/* 定義リスト風のテーブル（会社情報・許認可） */
.km-dl table{border:0;table-layout:auto}
.km-dl th,.km-dl td{
  border:0;border-bottom:1px solid var(--line);padding:16px 0;
  text-align:left;vertical-align:top;
}
.km-dl th{
  width:11em;padding-right:32px;
  font:700 16px var(--sans);color:var(--ink);
}
.km-dl td{font:400 17px/1.8 var(--sans);color:var(--gray)}
@media (max-width:600px){
  .km-dl th,.km-dl td{display:block;width:auto;padding-right:0}
  .km-dl th{border-bottom:0;padding-bottom:4px}
}

/* アクセス（濃色ブロック） */
.km-access{
  background:var(--navy);color:var(--paper);
  padding:64px clamp(24px,4.4vw,56px);margin-top:96px!important;
}
.km-access > * + *{margin-top:24px}
.km-access h2,.km-access h3{
  margin:0!important;padding:0;border:0;color:var(--paper);
  font:700 clamp(1.75rem,4vw,2.25rem)/1.35 var(--display);letter-spacing:.02em;
}
.km-access p{color:rgba(244,244,241,.85)}
.km-access strong{color:var(--paper);font-size:21px;line-height:1.7}
.km-access a{color:var(--paper)}

/* =========================================================================
 * 営業日カレンダー
 * ====================================================================== */

.km-cal{
  max-width:560px;width:100%;margin:32px auto 0;box-sizing:border-box;
}
.km-cal *{box-sizing:border-box}
.km-cal__bar{
  display:grid;grid-template-columns:44px minmax(0,1fr) 44px;
  align-items:center;gap:8px;
  margin:0 0 16px;padding-bottom:10px;border-bottom:1px solid var(--ink);
}
.km-cal__nav{
  width:44px;height:44px;flex:none;
  display:flex;align-items:center;justify-content:center;
  background:var(--white);border:1px solid var(--line);border-radius:2px;
  font:400 18px var(--mono);color:var(--ink);cursor:pointer;
  transition:background 160ms ease-out,color 160ms ease-out,border-color 160ms ease-out;
}
.km-cal__nav:hover:not(:disabled){background:var(--blue);border-color:var(--blue);color:#fff}
.km-cal__nav:disabled{opacity:.35;cursor:default}
.km-cal__title{
  display:flex;align-items:baseline;justify-content:center;gap:10px;margin:0;
}
.km-cal__y{font:400 14px var(--mono);letter-spacing:.08em;color:var(--gray)}
.km-cal__m{font:700 24px var(--display);letter-spacing:.02em;color:var(--ink)}
.km-cal__sr{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;
}
.km-cal__stage{position:relative}
.km-cal__month{min-width:0}
.km-cal__month[hidden]{display:none}

.km-cal__table{width:100%;border-collapse:collapse;table-layout:fixed}
.km-cal__wd{
  padding:8px 0;border-bottom:1px solid var(--line);
  font:700 13px var(--sans);color:var(--gray);text-align:center;
}
.km-cal__wd.is-sun{color:var(--alert)}
.km-cal__wd.is-sat{color:var(--blue)}

.km-cal__day,.km-cal__pad{
  height:60px;padding:6px 2px;border-bottom:1px solid var(--line);
  text-align:center;vertical-align:top;background:var(--white);
}
.km-cal__pad{background:transparent;border-bottom-color:transparent}
.km-cal__day time{
  display:block;font:400 17px var(--mono);color:var(--ink);line-height:1.4;
}
.km-cal__day.is-sun time{color:var(--alert)}
.km-cal__day.is-sat time{color:var(--blue)}

.km-cal__day.is-closed{background:#F6E3DE}
.km-cal__day.is-closed time{color:var(--alert);font-weight:700}
.km-cal__day.is-closed .km-cal__mark{color:var(--alert)}

/* 臨時営業（通常は休みだが営業する日） */
.km-cal__day.is-special{background:#E4EAFB}
.km-cal__day.is-special time{color:var(--blue);font-weight:700}
.km-cal__day.is-special .km-cal__mark{color:var(--blue)}
.km-cal__mark{
  display:block;margin-top:2px;
  font:400 10px/1.3 var(--sans);letter-spacing:-.02em;color:var(--alert);
  white-space:nowrap;
}.km-cal__day.is-today{outline:2px solid var(--blue);outline-offset:-2px}
.km-cal__day.is-today time{font-weight:700}

.km-cal__legend{
  display:flex;gap:24px;flex-wrap:wrap;margin:20px 0 0;
  font-size:14px;color:var(--gray);
}
.km-cal__key{display:flex;align-items:center;gap:8px}
.km-cal__swatch{
  width:18px;height:18px;flex:none;
  background:var(--white);border:1px solid var(--line);
}
.km-cal__swatch.is-closed{background:#F6E3DE;border-color:#E0BDB3}
.km-cal__swatch.is-special{background:#E4EAFB;border-color:#B9C6F2}

@media (max-width:600px){
  .km-cal{margin-top:24px}
  .km-cal__m{font-size:21px}
  .km-cal__day,.km-cal__pad{height:52px;padding:5px 1px}
  .km-cal__day time{font-size:15px}
  .km-cal__mark{font-size:9px}
  .km-cal__legend{gap:14px;font-size:13px}
}
@media (max-width:380px){
  .km-cal__mark{display:none}
  .km-cal__day,.km-cal__pad{height:44px}
}

/* ==========================================================================
   目次と「ページ先頭へ」
   ========================================================================== */

.km-jump{
  position:fixed;right:clamp(16px,2.4vw,32px);bottom:clamp(16px,2.4vw,32px);
  z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:10px;
}
.km-jump__buttons{display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.km-jump__btn{
  display:flex;align-items:center;gap:8px;min-height:48px;padding:12px 18px;
  background:var(--ink);color:#fff;border:0;border-radius:2px;cursor:pointer;
  font:700 14px var(--sans);box-shadow:0 2px 12px rgba(14,17,22,.22);
  transition:background 160ms ease-out,transform 160ms ease-out;
}
.km-jump__btn:hover{background:var(--blue);transform:translateY(-2px)}
.km-jump__btn--toc{background:var(--blue)}
.km-jump__btn--toc:hover{background:var(--blue-dark)}
.km-jump.is-open .km-jump__btn--toc{background:var(--ink)}
.km-jump__icon{font:400 17px var(--mono);line-height:1}

.km-jump__panel{
  width:min(320px,calc(100vw - 32px));max-height:min(60vh,520px);overflow:auto;
  background:var(--white);border:1px solid var(--line);border-radius:2px;
  box-shadow:0 8px 32px rgba(14,17,22,.16);padding:20px 22px;
}
.km-jump__title{
  margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--line);
  font:400 12px var(--mono);letter-spacing:.12em;color:var(--blue);
}
.km-jump__list{list-style:none;margin:0;padding:0;counter-reset:km-toc}
.km-jump__list li{counter-increment:km-toc}
.km-jump__link{
  display:flex;gap:10px;padding:10px 0;text-decoration:none;
  font:400 15px/1.6 var(--sans);color:var(--ink);
  border-bottom:1px solid var(--line);
}
.km-jump__link::before{
  content:counter(km-toc,decimal-leading-zero);flex:none;
  font:400 12px var(--mono);color:var(--blue);padding-top:3px;
}
.km-jump__link:hover{color:var(--blue)}
.km-jump__link.is-current{font-weight:700;color:var(--blue)}
.km-jump__list li:last-child .km-jump__link{border-bottom:0}

@media (max-width:1023px){
  .km-jump{bottom:76px}                  /* 画面下の固定バーを避ける */
  .km-jump__label{display:none}
  .km-jump__btn{min-width:48px;justify-content:center;padding:12px}
}
body.km-mobmenu-open .km-jump{display:none}

/* 展示車の一覧
   台数に応じて自動で並びが変わります。1台でも5台でも、
   ブロックを増やしたり消したりするだけで整います。 */
.km-stock{
  display:grid;gap:clamp(28px,3.4vw,44px);margin-top:var(--s-blk)!important;
  grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));
}
.km-stock__item{margin:0!important;min-width:0}
.km-stock__item > * + *{margin-top:14px!important}
.km-stock__item .wp-block-image{margin:0!important}
.km-stock__item img{width:100%;aspect-ratio:4/3;object-fit:cover;background:#E8E8E4}
.km-stock__item h3{
  margin:0!important;font:700 21px/1.5 var(--display);letter-spacing:.02em;
  word-break:auto-phrase;
}
.km-stock__item p{margin:0!important;font-size:16px;line-height:1.9}

/* 1台のときは大きく引き伸ばさない */
.km-stock:has(> .km-stock__item:only-child){max-width:520px}
/* 4台のときは 2×2、5台のときは 3＋2 に */
.km-stock:has(> .km-stock__item:nth-child(4)):not(:has(> .km-stock__item:nth-child(5))){
  grid-template-columns:repeat(2,minmax(0,1fr));max-width:760px;
}
.km-stock:has(> .km-stock__item:nth-child(5)){
  grid-template-columns:repeat(3,minmax(0,1fr));
}
@media (max-width:767px){
  .km-stock,
  .km-stock:has(> .km-stock__item:nth-child(4)):not(:has(> .km-stock__item:nth-child(5))),
  .km-stock:has(> .km-stock__item:nth-child(5)){
    grid-template-columns:minmax(0,1fr);max-width:none;
  }
}

/* 最新のブログ記事を1件だけ紹介する枠 */
.km-latest{margin-top:var(--s-sec)!important;padding-top:var(--s-blk);border-top:1px solid var(--ink)}
.km-latest__head{display:flex;align-items:baseline;justify-content:space-between;gap:20px}
.km-latest__h{
  margin:0!important;padding:0;border:0;
  font:700 clamp(1.5rem,3.2vw,2.25rem)/1.35 var(--display);letter-spacing:.02em;color:var(--ink);
}
.km-latest__en{margin:0!important;font:400 13px var(--mono);letter-spacing:.12em;color:var(--blue)}
.km-latest__intro{margin:16px 0 0!important;font:400 16px/1.9 var(--sans);color:var(--gray)}

.km-latest__post{
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,10fr);gap:clamp(24px,3.2vw,40px);
  align-items:start;margin-top:var(--s-grp);
}
.km-latest__thumb{display:block;overflow:hidden;background:#E8E8E4}
.km-latest__thumb img{
  width:100%;height:100%;aspect-ratio:16/10;object-fit:cover;
  transition:transform 500ms cubic-bezier(.2,.7,.3,1);
}
.km-latest__post:hover .km-latest__thumb img{transform:scale(1.04)}

.km-latest__body{display:flex;flex-direction:column;gap:14px;min-width:0}
.km-latest__meta{
  margin:0!important;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  font:400 13px var(--mono);letter-spacing:.06em;color:var(--gray);
}
.km-latest__cat{
  padding:4px 10px;border:1px solid var(--line);border-radius:2px;
  font-family:var(--sans);font-size:12px;letter-spacing:0;color:var(--ink);
}
.km-latest__title{
  margin:0!important;font:700 clamp(1.25rem,2.6vw,1.625rem)/1.55 var(--display);
  letter-spacing:.02em;text-wrap:pretty;word-break:auto-phrase;
}
.km-latest__title a{color:var(--ink);text-decoration:none}
.km-latest__title a:hover{color:var(--blue)}
.km-latest__excerpt{
  margin:0!important;font:400 16px/1.95 var(--sans);color:var(--gray);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.km-latest__more{
  align-self:start;display:inline-flex;align-items:center;gap:10px;margin-top:4px;
  padding:14px 24px;background:var(--ink);color:#fff;text-decoration:none;border-radius:2px;
  font:700 15px var(--sans);
  transition:background 160ms ease-out,transform 160ms ease-out;
}
.km-latest__more:hover{background:var(--blue);color:#fff;transform:translateY(-2px)}

@media (max-width:767px){
  .km-latest__post{grid-template-columns:minmax(0,1fr)}
  .km-latest__more{align-self:stretch;justify-content:center}
}

.km-notice,.km-placeholder{
  background:var(--white);border-left:3px solid var(--alert);
  padding:16px 20px;font-size:15px;line-height:1.8;
}
.km-placeholder{border-left-color:var(--gray);color:var(--gray);font-family:var(--mono);font-size:13px}
.km-note{font-size:15px;line-height:1.8;color:var(--gray)}

/* 兄弟ページ */
.km-siblings{margin-top:96px;padding-top:32px;border-top:1px solid var(--line)}
.km-siblings__label{margin:0 0 16px;font:700 15px var(--mono);letter-spacing:.08em;color:var(--gray)}
.km-siblings__list{display:flex;flex-wrap:wrap;gap:12px}
.km-siblings__list a{
  display:inline-flex;align-items:center;gap:8px;text-decoration:none;
  background:var(--white);border:1px solid var(--line);color:var(--ink);
  padding:12px 20px;border-radius:999px;font:400 15px var(--sans);
  transition:border-color 160ms ease-out;
}
.km-siblings__list a:hover{border-color:var(--ink)}

/* ==========================================================================
   記事カード
   ========================================================================== */

.km-cards{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:var(--s-blk);
}
.km-cards--2{
  grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;
  max-width:1000px;margin-left:auto;margin-right:auto;
}
@media (max-width:767px){
  .km-cards--2{grid-template-columns:minmax(0,1fr);gap:32px}
}

/* ブログ一覧＋絞り込み（PCは右側、スマホは下） */
.km-journal{
  display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:56px;
  align-items:start;margin-top:48px;
}
.km-journal .km-cards--2{margin-top:0;max-width:none}
.km-journal__side{
  display:flex;flex-direction:column;gap:32px;position:sticky;top:112px;
}
@media (max-width:1023px){
  .km-journal{grid-template-columns:minmax(0,1fr);gap:48px}
  .km-journal__side{position:static;top:auto;padding-top:8px}
}

.km-side__label{
  margin:0 0 12px;font:400 13px var(--mono);letter-spacing:.12em;color:var(--blue);
}
.km-side__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.km-side__link{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:12px 14px;text-decoration:none;background:var(--white);
  border:1px solid var(--line);border-radius:2px;color:var(--ink);
  transition:background 160ms ease-out,border-color 160ms ease-out,color 160ms ease-out;
}
.km-side__link:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.km-side__link.is-current{background:var(--blue);border-color:var(--blue);color:#fff}
.km-side__name{font:700 15px var(--sans)}
.km-side__n{font:400 12px var(--mono);opacity:.65}
@media (max-width:1023px){
  .km-side__list{flex-direction:row;flex-wrap:wrap;gap:8px}
  .km-side__link{padding:10px 16px}
}

/* 月別アーカイブ */
.km-months{margin-top:0;padding-top:24px;border-top:1px solid var(--line)}
.km-months__label{
  margin:0 0 12px;font:400 13px var(--mono);letter-spacing:.12em;color:var(--blue);
}
.km-months__year + .km-months__year{margin-top:4px}
.km-months__summary{
  cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--line);
}
.km-months__summary::-webkit-details-marker{display:none}
.km-months__summary::after{
  content:"＋";margin-left:auto;font:400 15px var(--mono);color:var(--blue);
}
.km-months__year[open] > .km-months__summary::after{content:"−"}
.km-months__y{font:700 19px var(--display);color:var(--ink)}
.km-months__count{font:400 13px var(--sans);color:var(--gray)}
.km-months__list{
  list-style:none;margin:0;padding:14px 0 18px;
  display:flex;flex-wrap:wrap;gap:8px;
}
@media (min-width:1024px){
  .km-months__list{gap:6px}
  .km-months__link{padding:7px 12px}
}
.km-months__link{
  display:flex;align-items:baseline;gap:6px;text-decoration:none;
  padding:8px 14px;border:1px solid var(--line);border-radius:2px;
  background:var(--white);color:var(--ink);
  transition:background 160ms ease-out,border-color 160ms ease-out,color 160ms ease-out;
}
.km-months__link:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.km-months__link.is-current{background:var(--blue);border-color:var(--blue);color:#fff}
.km-months__m{font:700 15px var(--sans)}
.km-months__n{font:400 12px var(--mono);opacity:.65}
.km-card{
  container-type:inline-size;
  display:flex;flex-direction:column;
  background:var(--white);border:1px solid var(--line);border-radius:4px;overflow:hidden;
  transition:border-color 200ms ease-out;
  content-visibility:auto;contain-intrinsic-size:auto 420px;
}
.km-card__link{
  display:flex;flex-direction:column;height:100%;text-decoration:none;color:var(--ink);
  transition:transform 160ms ease-out;
}
.km-card:hover{border-color:var(--ink)}
.km-card:hover .km-card__link{transform:translateY(-2px)}
.km-card__thumb{aspect-ratio:16/10;overflow:hidden}
.km-card__thumb img{
  width:100%;height:100%;object-fit:cover;
  transition:transform 500ms cubic-bezier(.2,.7,.3,1),filter 400ms ease-out;
}

/* カーソルのある機器（PC）だけ、彩度を落として置き、
   カーソルを乗せたときに元の色に戻します。 */
@media (hover:hover) and (pointer:fine){
  .km-card__thumb img{filter:saturate(.35)}
  .km-card:hover .km-card__thumb img,
  .km-card:focus-within .km-card__thumb img{transform:scale(1.04);filter:saturate(1)}
}

/* 指で操作する機器（スマートフォン・タブレット）では、
   写真は最初から元の色で出します。
   代わりに、画面に入ったときだけ、ほんのり浮かび上がるようにします。 */
@media (hover:none),(pointer:coarse){
  .km-card__thumb img{filter:none}
  .km-card[data-km-reveal] .km-card__thumb{background:var(--paper)}
  .km-card[data-km-reveal] .km-card__thumb img{
    transform:scale(1.045);opacity:.82;
    transition:transform 900ms cubic-bezier(.2,.7,.25,1),opacity 700ms ease-out;
  }
  .km-card[data-km-reveal].is-in .km-card__thumb img{
    transform:none;opacity:1;
  }
}

/* カードが狭いときは、中の余白と文字も控えめにする */
@container (max-width:300px){
  .km-card__body{padding:20px}
  .km-card__title{font-size:19px}
  .km-card__excerpt{font-size:14px}
}
.km-card__thumb--none{background:repeating-linear-gradient(135deg,#dededa 0 10px,#e7e7e3 10px 20px)}
/* 代わりの写真は、記事そのものの写真ではないので少し控えめに見せる */
.km-card__thumb--fallback{background:var(--paper)}
.km-card__thumb--fallback img{opacity:.72}
.km-card:hover .km-card__thumb--fallback img,
.km-card:focus-within .km-card__thumb--fallback img{opacity:.85}
.km-card__body{padding:28px;display:flex;flex-direction:column;gap:10px;flex:1}
.km-card__meta{font-size:13px;letter-spacing:.08em;color:var(--gray)}
.km-card__cat{
  align-self:flex-start;border:1px solid var(--line);padding:3px 10px;
  font-size:13px;color:var(--gray);
}
.km-card__title{margin:0;font:700 21px/1.5 var(--display);letter-spacing:.02em;text-wrap:pretty}
.km-card__excerpt{margin:0;font:400 15px/1.9 var(--sans);color:var(--gray)}

@media (min-width:640px) and (max-width:1023px){
  .km-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:639px){
  .km-cards{grid-template-columns:minmax(0,1fr)}
}

/* ページ送り */
.km-pagination{margin-top:64px;display:flex;justify-content:center}
.km-pagination .nav-links{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.km-pagination a,.km-pagination .current{
  display:grid;place-items:center;min-width:48px;min-height:48px;padding:0 14px;
  text-decoration:none;border:1px solid var(--line);background:var(--white);
  color:var(--ink);font:400 16px var(--mono);
}
.km-pagination .current{background:var(--blue);border-color:var(--blue);color:#fff}
.km-pagination a:hover{border-color:var(--ink)}

/* 前後の記事 */
.km-prevnext{
  margin-top:96px;padding-top:32px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:1fr 1fr;gap:24px;
}
.km-prevnext__item{
  display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink);
  background:var(--white);border:1px solid var(--line);padding:24px;
  transition:border-color 160ms ease-out;
}
.km-prevnext__item:hover{border-color:var(--ink)}
.km-prevnext__item--next{text-align:right;grid-column:2}
.km-prevnext__label{font-size:13px;letter-spacing:.08em;color:var(--gray)}
.km-prevnext__title{font:700 17px/1.6 var(--sans);text-wrap:pretty}
@media (max-width:767px){
  .km-prevnext{grid-template-columns:minmax(0,1fr)}
  .km-prevnext__item--next{grid-column:1;text-align:left}
}

.km-tags{margin-top:48px;display:flex;flex-wrap:wrap;gap:8px}
.km-tags a{
  text-decoration:none;border:1px solid var(--line);background:var(--white);
  padding:8px 14px;font:400 14px var(--sans);color:var(--gray);
}
.km-empty{margin-top:48px;font-size:17px;color:var(--gray)}

/* 検索フォーム */
.km-search{margin-top:32px}
.km-search__label{display:block;font:700 16px var(--sans);margin-bottom:10px}
.km-search__row{display:flex;gap:8px;flex-wrap:wrap}
.km-search__input{
  flex:1;min-width:12em;min-height:52px;padding:14px 16px;font:400 17px var(--sans);
  background:var(--white);border:1px solid var(--line);border-radius:2px;color:var(--ink);
}
.km-search__input:focus{border-color:var(--blue)}

/* ==========================================================================
   CTA
   ========================================================================== */

.km-cta{padding:var(--s-sec) var(--pad) 0;max-width:var(--content);margin:0 auto}
.km-cta__title{
  margin:0;font:700 clamp(1.75rem,4vw,2.25rem)/1.35 var(--display);letter-spacing:.02em;
}
.km-cta__lead{margin:16px 0 0;max-width:44em;font:400 17px/1.9 var(--sans);color:var(--gray)}
.km-cta__title--sr{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;
}

/* Google マップ */
.km-map{margin:0}
.km-map__frame{
  display:block;width:100%;height:clamp(280px,38vw,420px);
  border:1px solid var(--line);background:#E8E8E4;
}
.km-map__cap{
  display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  flex-wrap:wrap;margin-top:20px;
}
.km-map__info{display:flex;flex-direction:column;gap:10px;min-width:0}
.km-map__addr{
  margin:0;font:700 19px/1.7 var(--sans);color:var(--ink);
}
.km-map__access,.km-map__parking{
  margin:0;max-width:40em;font:400 15px/1.85 var(--sans);color:var(--gray);
  text-wrap:pretty;
}
.km-map__s{display:inline-block}
.km-map__parking{
  font-family:var(--mono);font-size:14px;letter-spacing:.02em;
}
.km-map__link{
  display:inline-flex;align-items:center;gap:6px;flex:none;
  font:700 15px var(--sans);color:var(--blue);text-decoration:none;
  padding-top:4px;
}
.km-map__link:hover{text-decoration:underline}
@media (max-width:600px){
  .km-map__addr{font-size:17px}
}
.km-cta__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;margin-top:40px}
.km-cta__tel,.km-cta__mail{
  padding:36px 32px;display:flex;flex-direction:column;gap:12px;min-height:280px;
  text-decoration:none;
}
.km-cta__tel{background:var(--blue);color:#fff;transition:background 160ms ease-out}
.km-cta__tel:hover{background:var(--blue-dark);color:#fff}
.km-cta__mail{
  background:var(--white);border:1px solid var(--line);color:var(--ink);
  transition:border-color 160ms ease-out,transform 160ms ease-out;
}
.km-cta__mail:hover{border-color:var(--ink);transform:translateY(-2px);color:var(--ink)}
.km-cta__kicker{font:400 13px var(--mono);letter-spacing:.12em;opacity:.8}
.km-cta__num{font:700 clamp(21px,2.6vw,34px) var(--mono);letter-spacing:.01em;white-space:nowrap}
.km-cta__mailtitle{font:700 21px var(--sans)}
.km-cta__mailtitle .km-arrow{color:var(--blue)}
.km-cta__sub{font:400 15px/1.7 var(--sans);opacity:.9;overflow-wrap:anywhere}
.km-tel__note{
  margin-top:auto;padding-top:16px;border-top:1px solid rgba(255,255,255,.35);
  font:400 14px/1.6 var(--sans);
}
@media (max-width:1023px){
  .km-cta__grid{grid-template-columns:minmax(0,1fr);gap:24px;align-items:start}
  .km-cta__tel,.km-cta__mail{min-height:0}
}

/* ==========================================================================
   フッター
   ========================================================================== */

.km-footer{margin-top:120px;background:var(--navy);color:var(--paper);padding:80px var(--pad) 40px}
.km-footer__grid{
  display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:56px;
  padding-bottom:48px;border-bottom:1px solid rgba(244,244,241,.25);
  max-width:1280px;margin:0 auto;
}
.km-footer__brand{display:flex;flex-direction:column;gap:16px}
.km-footer__en{font:700 15px var(--mono);letter-spacing:.08em}
.km-footer__name{font:700 21px var(--sans)}
.km-footer__addr,.km-footer__hours{margin:0;font:400 17px/1.9 var(--sans);color:rgba(244,244,241,.85)}
.km-footer__hours{font-size:15px}
.km-footnav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.km-footnav .km-nav__link{
  color:var(--paper);padding:0;border-radius:0;flex-direction:row;gap:8px;
}
.km-footnav .km-nav__link:hover{background:transparent;color:#fff;text-decoration:underline}
.km-footnav .km-nav__ja{font:400 17px var(--sans)}
.km-footnav .km-nav__en{display:none}
.km-footer__social{display:flex;flex-direction:column;gap:14px}
.km-footer__privacy{
  color:rgba(244,244,241,.8);text-decoration:none;font:400 15px var(--sans);margin-top:8px;
}
.km-footer__bottom{
  display:flex;justify-content:space-between;align-items:center;gap:24px;
  padding-top:24px;flex-wrap:wrap;max-width:1280px;margin:0 auto;
}
.km-footer__bottom span{font-size:13px;letter-spacing:.06em;color:rgba(244,244,241,.7)}
@media (max-width:1023px){
  .km-footer__grid{grid-template-columns:minmax(0,1fr);gap:32px}
}

/* ==========================================================================
   スクロール時の出現
   ========================================================================== */

/* ==========================================================================
   ヒーローの立ち上がり（A：順に出す ／ B：見出しは行ごと ／ D：小見出しの罫線）
   ========================================================================== */

/* 読み込み直後に一度だけ動きます。以降のスクロールでは動きません。 */
.km-hero__kicker,
.km-hero__title,
.km-hero__lead,
.km-hero__actions,
.km-hero .km-hours-note{opacity:0}

.km-hero.is-ready .km-hero__kicker,
.km-hero.is-ready .km-hero__title,
.km-hero.is-ready .km-hero__lead,
.km-hero.is-ready .km-hero__actions,
.km-hero.is-ready .km-hours-note{
  animation:km-rise 720ms cubic-bezier(.2,.6,.2,1) both;
}
.km-hero.is-ready .km-hero__kicker{animation-delay:0ms}
.km-hero.is-ready .km-hero__title{animation-delay:80ms}
.km-hero.is-ready .km-hero__lead{animation-delay:340ms}
.km-hero.is-ready .km-hero__actions{animation-delay:440ms}
.km-hero.is-ready .km-hours-note{animation-delay:520ms}

@keyframes km-rise{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:none}
}

/* B：見出しを行ごとにせり上げる。
   JS が各行を包みます。包めなかった場合は上の km-rise がそのまま効きます。 */
.km-hero__title.has-lines{opacity:1;animation:none!important}
.km-hero__ln{display:block;overflow:hidden}
.km-hero__line{display:block;transform:translateY(105%)}
.km-hero.is-ready .km-hero__title.has-lines .km-hero__line{
  animation:km-line 820ms cubic-bezier(.2,.7,.25,1) both;
}
@keyframes km-line{
  from{transform:translateY(105%)}
  to{transform:none}
}

/* D：小見出しの文字の下に引かれる罫線
   線は文字の幅だけに引きます（親が flex なので幅を内容に合わせます）。 */
.km-hero__kicker{
  display:inline-block;position:relative;padding-bottom:7px;
  align-self:flex-start;width:fit-content;max-width:100%;
}
.km-hero__kicker::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:rgba(244,244,241,.6);
  transform:scaleX(0);transform-origin:0 50%;
}
.km-hero.is-ready .km-hero__kicker::after{
  animation:km-rule 620ms cubic-bezier(.2,.6,.2,1) 200ms both;
}
@keyframes km-rule{
  from{transform:scaleX(0)}
  to{transform:none}
}

/* ==========================================================================
   固定ページの見出し（F：下線が後から引かれる）

   下線はふだん通り最初から引いてあります。
   JavaScript が動く環境でだけ km-ul を付け、そこから動かします。
   ですので JS が止まっても下線が消えることはありません。
   ========================================================================== */

.km-prose h2.km-ul{border-bottom-color:transparent;position:relative}
.km-prose h2.km-ul::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:var(--ink);transform:scaleX(0);transform-origin:0 50%;
}
.km-prose h2.km-ul.is-ul::after{
  animation:km-underline 640ms cubic-bezier(.2,.6,.2,1) both;
}
@keyframes km-underline{
  from{transform:scaleX(0)}
  to{transform:none}
}

[data-km-reveal]{opacity:0;transform:translateY(12px)}
[data-km-reveal].is-in{
  opacity:1;transform:none;
  transition:opacity 640ms cubic-bezier(.2,.6,.2,1),transform 640ms cubic-bezier(.2,.6,.2,1);
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  [data-km-reveal]{opacity:1!important;transform:none!important}
  .km-hero__kicker,.km-hero__title,.km-hero__lead,
  .km-hero__actions,.km-hero .km-hours-note{opacity:1!important;animation:none!important}
  .km-hero__line{transform:none!important;animation:none!important}
  .km-hero__kicker::after{transform:none!important;animation:none!important}
  .km-prose h2.km-ul{border-bottom-color:var(--ink)}
  .km-prose h2.km-ul::after{display:none}
  .km-progress{display:none}
  .km-card:hover .km-card__thumb img{transform:none}
  .km-card__thumb img,
  .km-card[data-km-reveal] .km-card__thumb img{
    transform:none!important;opacity:1!important;
    transition:filter 400ms ease-out;
  }
  .km-prose h2:target{animation:none}
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*){animation:none!important}
  .km-header,.km-hero__slide,.km-cred__item{transition:none}
  .km-hero__slide.is-active{animation:none}
}

/* ==========================================================================
   Contact Form 7
   ========================================================================== */

.wpcf7 form{max-width:44em}
.wpcf7-form > p{margin:0 0 32px}
.km-field{display:flex;flex-direction:column;gap:10px;margin-bottom:32px}
.km-label{display:flex;align-items:center;gap:10px;font:700 16px var(--sans)}
.km-req{background:var(--blue);color:#fff;padding:3px 8px;font:700 12px var(--sans);border-radius:2px}
.km-opt{border:1px solid var(--line);color:var(--gray);padding:3px 8px;font:400 12px var(--sans);border-radius:2px}
.km-hint{font:400 14px/1.7 var(--sans);color:var(--gray)}
.km-row{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media (max-width:767px){.km-row{grid-template-columns:minmax(0,1fr)}}

.wpcf7 input[type="text"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="email"],
.wpcf7 select,
.wpcf7 textarea{
  width:100%;min-height:52px;padding:14px 16px;box-sizing:border-box;
  font:400 17px var(--sans);color:var(--ink);background:var(--white);
  border:1px solid var(--line);border-radius:2px;
}
.wpcf7 textarea{min-height:180px;line-height:1.9;resize:vertical}
.wpcf7 input:focus,.wpcf7 select:focus,.wpcf7 textarea:focus{border-color:var(--blue);outline:none}

.km-consent{
  background:var(--white);border:1px solid var(--line);border-radius:2px;
  padding:28px;display:flex;flex-direction:column;gap:16px;margin-bottom:32px;
}
.km-consent .wpcf7-list-item{margin:0}
.km-consent label{display:flex;align-items:center;gap:12px;font:700 16px var(--sans);cursor:pointer;min-height:48px}
.km-consent input[type="checkbox"]{width:24px;height:24px;min-height:0;flex:none;padding:0;accent-color:var(--blue)}

.wpcf7-submit{
  border:0;background:var(--blue);color:#fff;padding:20px 32px;border-radius:2px;
  font:700 17px var(--sans);min-height:56px;cursor:pointer;
  transition:background 160ms ease-out;
}
.wpcf7-submit:hover{background:var(--blue-dark)}

.wpcf7-not-valid-tip{color:var(--alert);font:400 15px var(--sans);margin-top:6px}
.wpcf7 .wpcf7-response-output{
  margin:24px 0 0;padding:16px 20px;border:0;border-left:3px solid var(--blue);
  background:var(--white);font:400 16px/1.8 var(--sans);
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output{border-left-color:var(--alert)}
