@charset "utf-8";
/* ==========================================================================
   下層ページ用スタイル。受入済み styles.css への追加のみ（上書きなし）。

   ADDITIVE ONLY. このファイルは既存セレクタを一つも再定義しない。
   すべて `lp-` 接頭辞を持つ新しいクラスで、TOP には一切影響しない
   （TOP はこのファイルを読み込みもしない — villa_lp_assets() を参照）。

   下層ページのレイアウトの大半は、親テーマで受け入れ済みの部品を
   そのまま使う: .sec / .sec-in.split / .col / .fig-main / .stack2 /
   .pano / .duo / .trio / .quad / .gal / .know / .kc / .faq / .pull /
   .src / .villa / .art / .art-next / .bc / .art-head / .glink / .hair /
   .sec-orn / .sec-ghost。10ページが同じサイトに見えるのは、
   同じ部品でできているからであって、真似ているからではない。

   ここで新しく定義するのは、TOP に存在しない7つの型だけ:

     .lp-hero    写真で始まるページ見出し（深緑プレート）
     .lp-green   任意の .sec を深緑バンドにする修飾子
     .lp-steps   番号つきの手順（見学の流れ・お迎えまで）
     .lp-time    年表・段階（歩み）
     .lp-facts   事実の定義リスト（敷地・所在地・犬種標準の数値）
     .lp-grid    写真ギャラリーのマソンリー（JSなし）
     .lp-qgroup  よくあるご質問のグループ見出し

   使う色はトークンだけ: --ivory / --ivory-2 / --green / --green-d /
   --gold / --gold-d / --gold-l / --gold-h。新しい色は導入しない。
   装飾は細い金の罫と直角のブラケットのみ。植物装飾・額縁は使わない。
   ========================================================================== */

/* ==================================================== 1. PHOTO PAGE HEAD ==
   全幅の写真の下端に、深緑のプレートが左寄りで重なる非対称の見出し。
   写真の右下にアイボリーの余白が残るので、10ページが同じ中央寄せの
   見出しで始まることがない。 */
.lp-hero{
  position:relative;
  background:var(--ivory);
  padding-bottom:clamp(30px,2.8vw,56px);
}
.lp-hero-media{background:var(--green-d);line-height:0}
.lp-hero-media img{
  display:block;width:100%;
  height:clamp(300px,38vw,560px);
  object-fit:cover;object-position:50% 44%;
}
.lp-hero-plate{
  position:relative;z-index:2;
  width:min(50em,calc(100% - 2 * var(--gut)));
  margin-block:clamp(-132px,-10vw,-88px) 0;
  margin-inline:var(--gut) auto;
  padding:clamp(30px,2.6vw,48px) clamp(26px,2.4vw,46px) clamp(28px,2.5vw,44px);
  background:linear-gradient(180deg,rgba(9,37,28,.965),rgba(6,26,19,.985));
  border:1px solid rgba(176,139,46,.55);
  box-shadow:0 22px 48px rgba(10,6,0,.34);
}
/* 直角のブラケット2つ。画像ではなく擬似要素なので追加リクエストは0。 */
.lp-hero-plate::before,
.lp-hero-plate::after{
  content:"";position:absolute;width:22px;height:22px;pointer-events:none;
  border-color:var(--gold);border-style:solid;
}
.lp-hero-plate::before{top:9px;left:9px;border-width:1px 0 0 1px}
.lp-hero-plate::after{bottom:9px;right:9px;border-width:0 1px 1px 0}

/* 'art' 変種 — 文字が焼き込まれた作品版はトリミングしない。
   画像は自分の比率のまま全体を出し、プレートは右下へ。使用する3枚
   （oyadog1 / staffdog / arinomama）はいずれも文字が左上にあるので、
   右下のプレートが文字に重なることはない。重なりは下端 20〜30px だけ。 */
.lp-hero-art .lp-hero-media img{height:auto;object-fit:contain}
.lp-hero-art .lp-hero-plate{
  margin-block:clamp(-30px,-2.4vw,-18px) 0;
  margin-inline:auto var(--gut);
}

.lp-hero-kicker{
  font-family:var(--jp-s);font-weight:700;
  font-size:clamp(15px,1.02vw,17px);letter-spacing:.14em;
  color:var(--gold-l);
}
.lp-hero-h1{
  margin-top:clamp(12px,1.1vw,18px);
  font-family:var(--jp);font-weight:700;
  font-size:clamp(30px,3.1vw,52px);line-height:1.34;letter-spacing:.035em;
  color:var(--gold-h);text-shadow:0 1px 3px rgba(0,0,0,.4);
  word-break:auto-phrase;line-break:strict;
}
.lp-hero .hair{margin-block:clamp(18px,1.5vw,26px) clamp(18px,1.6vw,26px)}
.lp-hero-lead{
  font-family:var(--jp);font-size:clamp(18px,1.22vw,20.5px);line-height:1.92;
  letter-spacing:.05em;color:#DEE9E2;max-width:var(--measure);
}

/* ======================================================= 2. DARK BAND ====
   .sec-hist と同じ深緑のグラデーション。TOP の HERITAGE バンドと
   同じ見え方になるので、下層でも「同じサイトの濃い帯」として読める。 */
.sec.lp-green{background:linear-gradient(180deg,var(--green) 0%,var(--green-d) 100%)}
.sec.lp-green .sec-ghost{color:rgba(232,210,148,.05)}
@supports (-webkit-text-stroke:1px red){
  .sec.lp-green .sec-ghost{color:transparent;-webkit-text-stroke:1px rgba(232,210,148,.16)}
}
.sec.lp-green .sec-orn::before{color:var(--gold-l)}
.sec.lp-green .sec-orn::after{color:#C9B686}
.sec.lp-green .sub-link a{color:var(--gold-l);border-bottom-color:rgba(232,210,148,.6)}

/* ==================================================== 3. NUMBERED STEPS ==
   見学の流れ / お迎えまでの流れ。<ol> なので順序は文書構造として持ち、
   番号は counter で描く（DOM に数字テキストを二重に置かない）。 */
.lp-steps{
  display:grid;gap:clamp(16px,1.4vw,24px);
  margin-top:clamp(30px,2.6vw,46px);counter-reset:lpstep;
  max-width:calc(var(--measure) + 8em);
}
.lp-steps>li{
  position:relative;list-style:none;
  padding:clamp(22px,1.9vw,32px) clamp(22px,1.9vw,34px) clamp(20px,1.8vw,28px)
          clamp(70px,5.6vw,102px);
  background:linear-gradient(180deg,#FFFDF6 0%,#F6EFDD 100%);
  border:1px solid rgba(176,139,46,.5);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);
}
.lp-steps>li::before{
  counter-increment:lpstep;content:counter(lpstep,decimal-leading-zero);
  position:absolute;left:clamp(22px,1.9vw,34px);top:clamp(20px,1.75vw,30px);
  font-family:var(--la);font-weight:700;line-height:1;
  font-size:clamp(23px,1.9vw,32px);letter-spacing:.06em;color:var(--gold-d);
}
.lp-steps h3{
  font-family:var(--jp);font-weight:700;
  font-size:clamp(19px,1.32vw,23px);line-height:1.55;letter-spacing:.045em;
  color:#17231D;word-break:auto-phrase;
}
.lp-steps p{
  margin-top:clamp(10px,.9vw,15px);
  font-family:var(--jp);font-size:clamp(17px,1.14vw,19px);line-height:1.9;
  letter-spacing:.05em;color:#2E3F37;
}
.lp-green .lp-steps>li{
  background:rgba(255,255,255,.045);
  border-color:rgba(176,139,46,.45);box-shadow:none;
}
.lp-green .lp-steps>li::before{color:var(--gold-l)}
.lp-green .lp-steps h3{color:var(--gold-h);text-shadow:0 1px 3px rgba(0,0,0,.35)}
.lp-green .lp-steps p{color:#DEE9E2}

/* ======================================================== 4. TIMELINE ====
   dt に短い語、dd に説明。金の細い罫で区切るだけで、点や線の
   イラストは描かない。 */
.lp-time{margin-top:clamp(28px,2.4vw,44px);max-width:calc(var(--measure) + 8em)}
.lp-time>div{
  display:grid;grid-template-columns:minmax(0,12em) minmax(0,1fr);
  gap:clamp(14px,1.4vw,32px);
  padding:clamp(22px,1.9vw,32px) 0;
  border-top:1px solid rgba(176,139,46,.42);
}
.lp-time>div:last-child{border-bottom:1px solid rgba(176,139,46,.42)}
.lp-time dt{
  font-family:var(--la);font-weight:700;line-height:1.3;
  font-size:clamp(17px,1.24vw,21px);letter-spacing:.09em;color:var(--gold-d);
}
.lp-time dt em{
  display:block;margin-top:6px;font-style:normal;
  font-family:var(--jp-s);font-weight:700;font-size:clamp(15px,1.0vw,16.5px);
  letter-spacing:.1em;color:#6E5A2A;
}
.lp-time dd{
  font-family:var(--jp);font-size:clamp(17px,1.16vw,19.5px);line-height:1.9;
  letter-spacing:.05em;color:#2E3F37;
}
.lp-green .lp-time>div{border-color:rgba(232,210,148,.34)}
.lp-green .lp-time dt{color:var(--gold-l)}
.lp-green .lp-time dt em{color:#C9B686}
.lp-green .lp-time dd{color:#DEE9E2}

/* =========================================================== 5. FACTS ====
   数値と所在地。2列で、値は本文より一段大きく置く。 */
.lp-facts{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 clamp(26px,2.6vw,56px);
  margin-top:clamp(28px,2.4vw,44px);
  max-width:calc(var(--measure) + 8em);
}
.lp-facts>div{
  padding:clamp(18px,1.5vw,26px) 0;
  border-top:1px solid rgba(176,139,46,.42);
}
.lp-facts dt{
  font-family:var(--jp-s);font-weight:700;
  font-size:clamp(15px,1.0vw,16.5px);letter-spacing:.12em;color:#7D6129;
}
.lp-facts dd{
  margin-top:clamp(8px,.7vw,12px);
  font-family:var(--jp);font-size:clamp(17px,1.18vw,20px);line-height:1.8;
  letter-spacing:.045em;color:#2E3F37;
}
.lp-facts dd b{font-weight:700;color:#17231D}
.lp-green .lp-facts>div{border-color:rgba(232,210,148,.34)}
.lp-green .lp-facts dt{color:var(--gold-l)}
.lp-green .lp-facts dd,.lp-green .lp-facts dd b{color:#DEE9E2}

/* ========================================================= 6. GALLERY ====
   CSS columns のマソンリー。JavaScript を使わないので、スクリプトを
   切っても写真は全部そのまま並ぶ。写真は自分の比率のまま出す
   （object-fit:cover を使わない = 犬が切れない）。 */
.lp-grid{
  columns:3;column-gap:clamp(13px,1.2vw,20px);
  margin-top:clamp(30px,2.6vw,46px);
}
.lp-grid figure{
  break-inside:avoid;margin:0 0 clamp(13px,1.2vw,20px);
  background:var(--green-d);border:1px solid rgba(176,139,46,.45);
}
.lp-grid img{display:block;width:100%;height:auto}
.lp-grid figcaption{
  padding:clamp(11px,.95vw,16px) clamp(13px,1.1vw,18px);
  font-family:var(--jp);font-size:clamp(16px,1.0vw,17px);line-height:1.7;
  letter-spacing:.04em;color:#DCE7E0;
}

/* ==================================================== 7. FAQ GROUPING ====
   .faq（TOP と同じ dl）を4つのまとまりに分けるための見出しだけ。
   dl そのものの見た目は親テーマのまま。 */
.lp-qgroup{margin-top:clamp(52px,4.6vw,86px)}
.lp-qgroup:first-of-type{margin-top:clamp(26px,2.2vw,38px)}
.lp-qgroup-h{
  font-family:var(--jp);font-weight:700;
  font-size:clamp(22px,1.7vw,28px);line-height:1.5;letter-spacing:.05em;color:#17231D;
  margin-bottom:clamp(6px,.6vw,12px);
}
/* .faq dd is display:flex, so the answer gets its own flex item and the
   follow-up link sits inside it as a block. min-width:0 lets the item
   shrink to the column instead of forcing the row wider. */
.lp-qa-a{min-width:0}
.lp-qa-more{display:block;margin-top:clamp(12px,1.0vw,18px)}
.lp-qa-more a{
  font-family:var(--jp);font-weight:700;font-size:clamp(16px,1.04vw,17.5px);
  letter-spacing:.05em;color:#5E4712;
  display:inline-block;padding:13px 0 10px;
  border-bottom:1px solid rgba(176,139,46,.7);
}

/* ------------------------------------------------------- TAP TARGETS -----
   WCAG 2.5.8 (AA) asks for 44px. Three link styles inherited from the TOP
   sit between 30 and 38px, and the lower pages lean on all three far more
   heavily than the TOP does. These rules raise the HIT AREA only — the type
   size, colour, rule and position are unchanged, and every rule is scoped to
   .lp so the accepted TOP renders byte-identically.

   .art .cite is deliberately left alone: it is an inline citation inside a
   sentence of running copy (the WCAG 2.5.8 "Inline" exception), and the
   parent stylesheet already documents why raising it would swallow the lines
   above and below it. */
.lp .sub-link a{padding:12px 0 11px}
.lp .kc-link{padding:13px 0 10px}
.lp .lp-next-direct a{padding:12px 4px}
/* 電話・LINE・メールは連絡そのものの導線。所在地表の中でも 44px を確保する。 */
.lp-facts dd a{display:inline-block;padding:9px 0}

/* ==================================================== 8. SMALL PIECES ==== */

/* 出典・補足の小さな注記。本文と混ざらないよう左に金の罫を置く。 */
.lp-note a{
  color:var(--gold-d);font-weight:700;text-decoration:none;
  border-bottom:1px solid rgba(176,139,46,.6);
}
.lp-green .lp-note a{color:var(--gold-l);border-bottom-color:rgba(232,210,148,.6)}
.lp-note{
  margin-top:clamp(26px,2.2vw,38px);
  padding:clamp(16px,1.3vw,22px) clamp(18px,1.5vw,26px);
  border-left:3px solid rgba(176,139,46,.7);
  background:rgba(237,228,205,.4);
  font-family:var(--jp-s);font-size:clamp(16px,1.02vw,17px);line-height:1.86;
  letter-spacing:.035em;color:#4E5C56;
  max-width:calc(var(--measure) + 4em);
}
.lp-green .lp-note{background:rgba(255,255,255,.05);color:#CBD9D1}

/* 記事幅の導入文。.art-in と同じ measure に揃える。
   R4M1 · この要素は .sec-in でもあるため、親テーマの
   .sec-in{padding-inline:var(--gut)} を受け取る。--gut は
   max(--pad, (100vw - 1760px)/2) で、box-sizing は border-box。
   自分で max-width を持つ中央寄せカラムがそのまま --gut を抱えると、
   広い画面で両者が食い合う:
       1920px → gut  80px ×2 / 800px 上限 → 本文 640px
       2400px → gut 320px ×2 / 800px 上限 → 本文 160px（約9文字）
       2560px → gut 400px ×2 / 800px 上限 → 本文   0px（1文字ずつ改行）
   親テーマの .sec-in.narrow は同じ理由で既に --pad に切り替えてある
   （styles.css の section shell を参照）。ここも同じ扱いにする。
   --gut == --pad となる 1760px 以下では、この指定で描画は変わらない。 */
.sec-in.lp-intro{
  max-width:calc(var(--measure) + 8em + 2 * var(--pad));
  padding-inline:var(--pad);
  margin-inline:auto;
}
/* .sec-in を伴わない .lp-intro は存在しないが、単独で使われた場合も
   読み幅は同じであるべきなので、上限だけは据え置く。 */
.lp-intro{max-width:calc(var(--measure) + 8em);margin-inline:auto}

/* 閉じの直接連絡行。CTA ボタンの下、電話・LINE・メールの一行。 */
.lp-next-direct{
  margin-top:clamp(24px,2.0vw,34px);
  font-family:var(--jp-s);font-size:clamp(16px,1.04vw,17.5px);line-height:2.0;
  letter-spacing:.04em;color:#4E5C56;
}
.lp-next-direct a{
  display:inline-block;padding:10px 4px;color:#5E4712;
  border-bottom:1px solid rgba(176,139,46,.6);
}
.lp-next-direct span{padding:0 4px;color:var(--gold)}

/* ギャラリー・親犬ページのスライダー見出しの下に置く注記 */
.lp-galnote a,.lp-terms a{
  color:var(--gold-d);font-weight:700;text-decoration:none;
  border-bottom:1px solid rgba(176,139,46,.6);
}
.lp-green .lp-galnote a,.lp-green .lp-terms a{
  color:var(--gold-l);border-bottom-color:rgba(232,210,148,.6);
}
.lp-galnote{
  margin-top:clamp(14px,1.2vw,20px);
  font-family:var(--jp-s);font-size:clamp(16px,1.02vw,17px);line-height:1.86;
  letter-spacing:.035em;color:#5A6862;max-width:var(--measure);
}
.lp-green .lp-galnote{color:#BFD0C7}


/* ================================================= 9. R4D COMPONENTS =====
   本番から移設した6ページ（/026 /about /aboutgolden /contact /movie
   /topics）が必要とするものだけ。既存の .lp- 部品で足りるところは
   何も足していない。 */

/* ------------------------------------------------------ 記事リスト -----
   /026.html の1件。動画・見出し・日付・本文で1つのまとまり。
   .jr-list（TOP の日付リスト）とは別物: あちらは行、こちらは記事。 */
.lp-post{
  max-width:calc(var(--measure) + 10em);margin-inline:auto;
  padding-block:clamp(38px,3.4vw,64px);
  border-top:1px solid var(--orn-l);
}
/* The first entry follows the section intro directly, so it drops the rule
   but NOT the space — at padding-top:0 the date landed 12px under the last
   line of the intro paragraph and the two read as one block. */
.lp-post:first-of-type{border-top:0;padding-top:clamp(30px,2.6vw,48px)}
.lp-post-date{
  font-family:var(--la);font-size:clamp(14px,1.0vw,16px);
  letter-spacing:.2em;color:var(--gold-d);
}
.lp-post-date i{font-style:normal;padding:0 3px;opacity:.6}
.lp-post h2{
  margin-top:clamp(8px,.7vw,12px);
  font-family:var(--jp);font-weight:700;
  font-size:clamp(22px,1.7vw,30px);line-height:1.5;letter-spacing:.04em;
  color:var(--ink);word-break:auto-phrase;line-break:strict;
}
/* 記事の permalink が移行済みの entry は、本番の index と同じく見出しが
   リンクになる（content/026.php）。未移行の entry は素のテキストのまま。 */
.lp-post h2 a{
  color:inherit;text-decoration:none;
  border-bottom:1px solid rgba(176,139,46,.55);
  transition:border-color .2s ease,color .2s ease;
}
.lp-post h2 a:hover,.lp-post h2 a:focus-visible{color:#5E4712;border-color:var(--gold)}
/* 見出しを持たない 6 件の entry だけが使う、記事ページへの導線。見出しリンク
   と同じ役割なので同じ金の下罫を使い、本文の一部に見えないよう小さく置く。 */
.lp-post-more{margin-top:clamp(16px,1.3vw,22px)}
.lp-post-more a{
  font-family:var(--jp);font-size:clamp(15px,1vw,16px);letter-spacing:.05em;
  color:#5E4712;text-decoration:none;display:inline-block;padding:10px 0 9px;
  border-bottom:1px solid rgba(176,139,46,.55);
  transition:border-color .2s ease,color .2s ease;
}
.lp-post-more a:hover,.lp-post-more a:focus-visible{border-color:var(--gold)}
.lp-post .vid{margin-top:clamp(20px,1.8vw,32px)}
.lp-post-body{margin-top:clamp(20px,1.8vw,32px)}
.lp-post-body p{
  font-family:var(--jp);font-size:clamp(17px,1.12vw,19px);line-height:2.0;
  letter-spacing:.045em;color:#33403A;margin-top:1.1em;
}
.lp-post-body p:first-child{margin-top:0}

/* 1本だけの動画は本文幅で。2本並べる .vids は親テーマ側の定義のまま。 */
.vids.vids-one{grid-template-columns:1fr;max-width:calc(var(--measure) + 10em);
  margin-inline:auto;padding-inline:0}

/* ------------------------------------------------- 連絡チャネル -------
   /contact.html。3つの手段を横並びにして、どれも同じ重みで見せる。
   タップ領域は 44px ではなくカード全体。 */
.lp-ch{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--seam);background:var(--gold);
  margin-top:clamp(30px,2.6vw,50px);
}
.lp-ch a{
  display:flex;flex-direction:column;gap:10px;
  padding:clamp(26px,2.3vw,40px) clamp(20px,1.8vw,32px);
  background:var(--ivory-2);text-decoration:none;
  transition:background .18s ease;
}
.lp-ch a:hover,.lp-ch a:focus-visible{background:#FFFDF6}
/* R4M1 · 三つのカードの優先順位。電話が PRIMARY、LINE が SECONDARY、
   メールが TERTIARY。面と上罫の強さだけで段を付け、文字組みと余白は
   三枚とも同じままにしてある（読み比べられる並びを崩さないため）。 */
.lp-ch a.lp-ch-1{
  background:linear-gradient(180deg,#FCF6E2 0%,#F6ECCF 100%);
  box-shadow:inset 0 4px 0 0 var(--gold-d);
}
.lp-ch a.lp-ch-1:hover,.lp-ch a.lp-ch-1:focus-visible{background:#FFFBEC}
.lp-ch a.lp-ch-2{box-shadow:inset 0 2px 0 0 rgba(176,139,46,.55)}
.lp-ch a.lp-ch-3{box-shadow:inset 0 1px 0 0 rgba(176,139,46,.28)}
.lp-ch a.lp-ch-1 .lp-ch-k{color:#7E5F1C;font-weight:700}
.lp-ch-k{
  font-family:var(--la);font-size:clamp(13px,.95vw,15px);
  letter-spacing:.22em;color:var(--gold-d);
}
.lp-ch-t{
  font-family:var(--jp);font-weight:700;
  font-size:clamp(20px,1.5vw,26px);letter-spacing:.05em;color:var(--ink);
}
.lp-ch-p{
  font-family:var(--jp);font-size:clamp(16px,1.03vw,17.5px);line-height:1.85;
  letter-spacing:.04em;color:#4A5A52;margin-top:auto;padding-top:8px;
}

/* --------------------------------------------------- 規約・方針 -------
   /contact.html の個人情報保護方針、/about.html の特商法表記。
   本文より一段小さく、番号付きで読ませる。 */
.lp-terms{
  max-width:calc(var(--measure) + 4em);
  margin-top:clamp(24px,2.1vw,38px);
  counter-reset:lpterm;
}
.lp-terms>li{
  position:relative;padding:0 0 0 2.6em;margin-top:1.05em;
  font-family:var(--jp);font-size:clamp(16px,1.05vw,17.5px);line-height:1.95;
  letter-spacing:.04em;color:#3B4842;
}
.lp-terms>li::before{
  counter-increment:lpterm;content:counter(lpterm) ".";
  position:absolute;left:0;top:0;
  font-family:var(--la);color:var(--gold-d);letter-spacing:.06em;
}
.lp-green .lp-terms>li{color:#D6E3DC}
.lp-green .lp-terms>li::before{color:var(--gold-l)}

/* ------------------------------------------------------ 地図の枠 -------
   クリックするまで third-party へは1リクエストも出さない。
   JS が無ければただの外部リンクとして機能する。 */
/* Same treatment as the .yt video facade in the accepted stylesheet: a dark
   plate inside a champagne-gold border. A pale beige rectangle in the middle
   of the emerald band read as an element that had failed to load. */
.lp-embed{
  position:relative;margin-top:clamp(24px,2.1vw,38px);
  aspect-ratio:16/9;overflow:hidden;
  background:
    var(--crest-f) center/clamp(150px,15vw,240px) no-repeat,
    linear-gradient(180deg,#0A2A20,#04140F);
  border:3px solid transparent;
  background-origin:border-box;
  box-shadow:0 0 0 1px rgba(232,210,148,.55) inset;
}
.lp-embed.is-live{background:#04140F}
.lp-embed>iframe{width:100%;height:100%;display:block}
.lp-embed-open{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;text-decoration:none;
}
.lp-embed-lab{
  font-family:var(--jp);font-weight:700;font-size:clamp(17px,1.15vw,19.5px);
  letter-spacing:.14em;text-indent:.14em;color:var(--gold-h);
  padding:11px clamp(18px,1.4vw,26px);
  background:rgba(8,34,26,.88);border:1px solid rgba(232,210,148,.6);
}
.lp-embed-note{
  font-family:var(--jp);font-size:clamp(15px,1.0vw,16.5px);
  letter-spacing:.04em;color:#BFD0C7;
}

/* --------------------------------------------------- 更新の見出し -----
   /topics.html の日付つき項目。リンク先が未移設のものは <a> を持たない
   ので、リンクではなく項目そのものにスタイルを当てている。 */
.lp-updates{
  max-width:calc(var(--measure) + 6em);margin-top:clamp(26px,2.3vw,42px);
  border-top:1px solid var(--orn-l);
}
.lp-updates>li{
  padding:clamp(18px,1.5vw,26px) 0;border-bottom:1px solid var(--orn-l);
}
.lp-updates a{display:block;text-decoration:none}
.lp-up-date{
  font-family:var(--la);font-size:clamp(13px,.95vw,15px);
  letter-spacing:.2em;color:var(--gold-d);
}
.lp-up-date i{font-style:normal;padding:0 3px;opacity:.6}
.lp-up-t{
  display:block;margin-top:6px;
  font-family:var(--jp);font-weight:700;
  font-size:clamp(17px,1.2vw,21px);line-height:1.6;letter-spacing:.04em;
  color:var(--ink);
}
.lp-updates a:hover .lp-up-t,.lp-updates a:focus-visible .lp-up-t{color:var(--gold-d)}
.lp-up-p{
  margin-top:8px;font-family:var(--jp);
  font-size:clamp(16px,1.03vw,17.5px);line-height:1.9;letter-spacing:.04em;
  color:#4A5A52;
}
/* On the emerald band the ivory palette above is invisible — the title in
   --ink on --green-d is roughly 1.2:1. Every colour flips. */
.lp-green .lp-updates{border-top-color:rgba(232,210,148,.34)}
.lp-green .lp-updates>li{border-bottom-color:rgba(232,210,148,.34)}
.lp-green .lp-up-date{color:var(--gold-l)}
.lp-green .lp-up-t{color:var(--gold-h)}
.lp-green .lp-up-p{color:#CCDCD3}
.lp-green .lp-updates a:hover .lp-up-t,
.lp-green .lp-updates a:focus-visible .lp-up-t{color:#FFFFFF}

/* ======================================================== RESPONSIVE ===== */

@media (max-width:1199px){
  .lp-grid{columns:2}
  .lp-ch{grid-template-columns:1fr 1fr}
  .lp-ch a:first-child{grid-column:1 / -1}

  .lp-hero-plate{width:calc(100% - 2 * var(--gut))}
}

@media (max-width:699px){
  /* 写真 → プレート の縦積み。プレートは画像に重ねない:
     390px で重ねると写真がほぼ帯になり、被写体が読めなくなる。 */
  .lp-hero{padding-bottom:clamp(22px,5vw,34px)}
  .lp-hero-media img{height:clamp(210px,54vw,320px)}
  .lp-hero-plate{
    width:calc(100% - 2 * var(--pad));
    margin-block:clamp(-40px,-7vw,-26px) 0;
    margin-inline:var(--pad);
    padding:24px 20px 22px;
  }
  /* 作品版は 390px でも全体を出す。プレートは重ねない。 */
  .lp-hero-art .lp-hero-media img{height:auto}
  .lp-hero-art .lp-hero-plate{margin-block:clamp(-18px,-4vw,-10px) 0;margin-inline:var(--pad)}
  .lp-hero-h1{font-size:30px}
  .lp-hero-lead{font-size:18px}
  .lp-hero-kicker{font-size:15px}

  .lp-steps>li{padding:20px 18px 18px 62px}
  .lp-steps>li::before{left:18px;top:19px;font-size:24px}
  .lp-steps h3{font-size:20px}
  .lp-steps p{font-size:18px}

  .lp-time>div{grid-template-columns:1fr;gap:8px;padding:20px 0}
  .lp-time dt{font-size:18px}
  .lp-time dd{font-size:18px}

  .lp-facts{grid-template-columns:1fr;gap:0}
  .lp-facts dd{font-size:18px}

  .lp-grid{columns:1;margin-top:26px}
  .lp-grid figcaption{font-size:16px}

  .lp-qgroup-h{font-size:22px}
  .lp-note{font-size:16px;padding:16px 16px}
  .lp-next-direct{font-size:16px}
  .lp-next-direct a{display:block;padding:12px 0}
  .lp-next-direct span{display:none}
  .lp-galnote{font-size:16px}

  /* ---- R4D ---- */
  .lp-ch{grid-template-columns:1fr}
  .lp-post h2{font-size:22px}
  .lp-post-body p{font-size:17px}
  .lp-terms>li{font-size:16px;padding-left:2.2em}
  .lp-embed{aspect-ratio:4/3}
  .lp-up-t{font-size:18px}
  .lp-up-p{font-size:16px}
}

/* ═══════════════════════════════════ contact enquiry form (R4J) ═══════════
   Additive only. Every selector below is new; nothing above is redefined,
   so every other lower page keeps serving the bytes R4I accepted.
   ------------------------------------------------------------------------ */

.lp-form-wrap{max-width:720px;margin-inline:auto}

/* The honeypot. Off-screen rather than display:none — a bot that skips
   hidden fields is exactly the bot this is trying to catch — and paired
   with aria-hidden + tabindex="-1" in the markup so no keyboard or screen
   reader user can reach it. */
.lp-form-pot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.lp-field{margin-top:clamp(18px,1.6vw,26px)}
.lp-field>label{
  display:block;margin-bottom:8px;
  font-family:var(--jp);font-weight:700;font-size:clamp(15px,1vw,16.5px);
  letter-spacing:.06em;color:#3F3A2C}
.lp-req{
  display:inline-block;margin-left:.6em;padding:2px 8px;
  font-size:12px;font-weight:700;letter-spacing:.08em;
  color:#6B2020;background:rgba(150,40,40,.09);
  border:1px solid rgba(150,40,40,.22)}

.lp-field input[type=text],
.lp-field input[type=email],
.lp-field input[type=tel],
.lp-field textarea{
  display:block;width:100%;box-sizing:border-box;
  /* 16px is the floor: below it, iOS Safari zooms the page on focus and the
     visitor is left scrolled sideways in the middle of a conversion form. */
  font-family:var(--jp);font-size:16px;line-height:1.7;color:#2E2A1E;
  padding:13px 14px;min-height:48px;
  background:#FFFEFA;border:1px solid rgba(120,100,50,.34);border-radius:0;
  -webkit-appearance:none;appearance:none}
.lp-field textarea{min-height:170px;resize:vertical}

.lp-field input:focus-visible,
.lp-field textarea:focus-visible,
.lp-form-send:focus-visible{
  outline:2px solid var(--gold-d);outline-offset:2px;
  border-color:var(--gold-d);background:#fff}

.lp-field-note{
  margin-top:8px;font-family:var(--jp);font-size:14px;line-height:1.75;
  color:#6A6152}

/* The consent row: the box and its label sit on one line, and the whole
   label is the hit area. */
/* The consent row. The checkbox is 28px, and the label beside it is a hit
   area of its own with at least 44px of height, so the pair is comfortable
   on a phone without a 44px box dominating the layout. */
.lp-field-check{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.lp-field-check input[type=checkbox]{
  flex:none;width:28px;height:28px;margin:0;accent-color:#5E4712;cursor:pointer}
.lp-field-check>label{
  flex:1 1 15rem;margin:0;
  display:flex;align-items:center;min-height:44px;cursor:pointer;
  font-family:var(--jp);font-weight:400;font-size:15.5px;line-height:1.7;
  color:#3F3A2C}
.lp-field-check>label a{color:#5E4712;border-bottom:1px solid rgba(120,100,50,.5)}
.lp-field-check .lp-form-err{flex:1 1 100%}

/* Error and success. Colour is never the only signal: each carries its own
   words, and the field keeps its message beside it. */
.lp-form-err{
  margin-top:8px;font-family:var(--jp);font-size:14.5px;line-height:1.7;
  font-weight:700;color:#8C2020}
.lp-form-err-top{
  margin:0 0 clamp(16px,1.4vw,22px);padding:14px 16px;font-size:15.5px;
  background:rgba(150,40,40,.07);border-left:3px solid #8C2020}
.lp-field.is-err input,
.lp-field.is-err textarea{border-color:#8C2020;background:#FFFBFA}

.lp-form-ok{
  margin:0 0 clamp(18px,1.6vw,26px);padding:16px 18px;
  font-family:var(--jp);font-size:16px;line-height:1.85;color:#1A4E38;
  background:rgba(26,80,57,.07);border-left:3px solid #1A5039}

/* <button> does not inherit font or cursor from the page the way <a> does,
   so .glink needs both stated here to look and behave like the site's
   other buttons. */
.lp-form-send{
  cursor:pointer;font-family:var(--jp);width:auto;
  -webkit-appearance:none;appearance:none}

@media (max-width:820px){
  .lp-form-wrap{max-width:none}
  .lp-form-send{width:100%}
}


/* ================================================ 12. ABOUTGOLDEN HERO ===
   R4M2 · /aboutgolden.html だけの見出し。`.lp-hero-ag-` 接頭辞つきの新規
   クラスのみで、`.lp-hero` / `.lp-hero-art` / `.art-head` は一行も
   再定義しない（他ページは何も変わらない）。

   R4M3A: ユーザー正式選定の完成デザイン画像1枚を、他の下層ページの
   `.lp-hero`（パンくず直下・写真が全幅で始まり、コピーはその下）と
   同じ構図で出す。ただし `.lp-hero` 自体は他ページで使用中のため
   再定義せず、同じ形を `.lp-hero-ag-` 側に個別実装する。

   画像はPC/タブレット大= tokenshaPC.png(1672x941・横長)、
   スマホ(≤699pxの既存フォーンbreakpoint)= tokenshamobile.png
   (941x1672・縦長、別カットの縦構図)。どちらも焼き込み文字入りの
   完成品なので object-fit:cover 等の強制cropは一切かけない。
   aspect-ratio をbreakpointごとに実寸に合わせて予約するので、
   画像読み込み前後でレイアウトが跳ねない。
   コピー文言（ブランド名・H1・本文）は画像内に文字があっても削除
   せず、そのまま維持し、写真の直下に表示する。 */
.lp-hero-ag{
  position:relative;
  background:var(--ivory);
}

.lp-hero-ag-photo{
  margin:0;
  line-height:0;
  background:var(--green-d);
}
.lp-hero-ag-photo picture{display:block;line-height:0}
.lp-hero-ag-photo img{
  display:block;width:100%;height:auto;
  aspect-ratio:1672/941;
}
@media (max-width:699px){
  .lp-hero-ag-photo img{aspect-ratio:941/1672}
}

.lp-hero-ag-copy{
  max-width:var(--maxw);margin-inline:auto;
  padding-inline:var(--gut);
  padding-block:clamp(26px,2.6vw,52px) clamp(34px,3.2vw,62px);
}

/* -- 文字 ----------------------------------------------------------------- */
.lp-hero-ag-brand{
  font-family:var(--jp-s);font-weight:700;
  font-size:clamp(15px,1.02vw,17.5px);letter-spacing:.14em;color:#7D6129;
}
.lp-hero-ag-brand-jp{white-space:nowrap}
.lp-hero-ag-h1{
  margin-top:clamp(12px,1.1vw,18px);
  font-family:var(--jp);font-weight:700;
  font-size:clamp(30px,3.0vw,50px);line-height:1.34;letter-spacing:.035em;
  color:#101B15;word-break:auto-phrase;line-break:strict;
}
.lp-hero-ag-copy .hair{max-width:100%}
.lp-hero-ag-catch{
  font-family:var(--jp);font-weight:700;
  font-size:clamp(18px,1.36vw,23px);line-height:1.86;letter-spacing:.05em;
  color:#1F4736;word-break:auto-phrase;
}
.lp-hero-ag-lead{
  margin-top:clamp(14px,1.2vw,20px);
  font-family:var(--jp);font-size:clamp(16px,1.05vw,17.5px);line-height:1.95;
  letter-spacing:.045em;color:#2E3F37;
}

/* ----------------------------------------------------------- PHONE ------
   699px 以下。ここで tokenshamobile.png (縦長)に切り替わる（既存の
   フォーンbreakpointを流用）。コピーの左右余白だけ --pad に変える。 */
@media (max-width:699px){
  .lp-hero-ag-copy{
    padding-inline:var(--pad);
    /* R4M3C: top raised from clamp(18px,5vw,26px) — 19.5px at 390/21.5px at 430
       read as too tight against the photo edge. Bottom value unchanged. */
    padding-block:clamp(28px,7vw,36px) clamp(28px,2.5vw,44px);
  }
  .lp-hero-ag-h1{font-size:clamp(28px,8.2vw,36px)}
  .lp-hero-ag-catch{font-size:clamp(17px,4.7vw,20px)}
  .lp-hero-ag-lead{font-size:16px;line-height:1.9}
}

/* ================================================ 13. BREED VISUAL =======
   R4M3E · /aboutgolden.html「英国系ゴールデンレトリーバーとは」の intro と
   4カード(.know)のあいだに feature visual を1枚挟む。`.lp-breed-visual`
   接頭辞のみの新規クラスで、`.sec-know` / `.know` / `.kc` は一行も
   再定義しない。padding-inline は `.know` と同じ var(--gut)/var(--pad)を
   使うので、カード列と横幅が正確に揃う。

   PC(>699px)=eikokutoha2.png(1448x1086) / SP(<=699pxの既存フォーン
   breakpoint)=eikkutoha02.png(1240x1269、別構図の縦長)。どちらも文字が
   焼き込まれた完成品なので object-fit:cover 等の強制cropは一切かけない。
   幅100%・高さautoで、img の width/height 属性(実寸)がCLSを防ぐ。 */
.lp-breed-visual{
  padding-inline:var(--gut);
  margin-top:clamp(30px,2.8vw,48px);
}
.lp-breed-visual figure{
  margin:0;
  line-height:0;
  border:1px solid rgba(176,139,46,.55);
  border-radius:6px;
  overflow:hidden;
  box-shadow:0 14px 34px rgba(60,44,10,.16);
}
.lp-breed-visual picture{display:block;line-height:0}
.lp-breed-visual img{display:block;width:100%;height:auto}

@media (max-width:699px){
  .lp-breed-visual{padding-inline:var(--pad)}
  .lp-breed-visual figure{border-radius:4px}
}


/* ================================================ 14. TOPICS HERO ========
   R4M5 · /topics.html だけの見出し。`.lp-hero-tp-` 接頭辞つきの新規クラス
   のみで、`.lp-hero` / `.lp-hero-art` / `.lp-hero-ag` / `.art-head` は
   一行も再定義しない（他ページは何も変わらない）。接頭辞に `-tp-` を
   選んだのは、`-ar-` だと既存の `.lp-hero-art` の前方一致になって
   grep と後日の編集が危ういため。

   section 12（aboutgolden）と同じ構図: パンくず直下に完成アートワークが
   全幅で始まり、コピーはその下。違いはこのページが元から持っている
   キッカー／H1／リードの3つを出すこと。

   画像は PC/タブレット = koinuhiroPC.png(1672x941・横長)、
   スマホ(≤699px の既存フォーン breakpoint) = koinuheromobaile.png
   (941x1672・縦長)。どちらも「最新情報」と見出しが焼き込まれた完成品
   なので object-fit:cover 等の強制 crop は一切かけない。width:100% /
   height:auto で全絵を出し、aspect-ratio を breakpoint ごとに実寸で
   予約するので、読み込み前後でレイアウトが跳ねない。

   文字の二重化を避けるため、`.lp-hero-plate` 相当の重ねプレートは
   使わない。焼き込み文字の上に同じ言葉を重ねない。 */
.lp-hero-tp{
  position:relative;
  background:var(--ivory);
}

.lp-hero-tp-photo{
  margin:0;
  line-height:0;
  background:var(--green-d);
}
.lp-hero-tp-photo picture{display:block;line-height:0}
.lp-hero-tp-photo img{
  display:block;width:100%;height:auto;
  aspect-ratio:1672/941;
}
@media (max-width:699px){
  .lp-hero-tp-photo img{aspect-ratio:941/1672}
}

.lp-hero-tp-copy{
  max-width:var(--maxw);margin-inline:auto;
  padding-inline:var(--gut);
  padding-block:clamp(26px,2.6vw,52px) clamp(34px,3.2vw,62px);
}

/* -- 文字 -----------------------------------------------------------------
   アイボリー地の上なので、プレート版（`--gold-h` ＋ text-shadow）ではなく
   RULES の「明るい地の上の金文字は --gold-text(#7D6129)」に従う。 */
.lp-hero-tp-kicker{
  font-family:var(--jp-s);font-weight:700;
  font-size:clamp(15px,1.02vw,17.5px);letter-spacing:.14em;color:#7D6129;
}
.lp-hero-tp-h1{
  margin-top:clamp(12px,1.1vw,18px);
  font-family:var(--jp);font-weight:700;
  font-size:clamp(30px,3.0vw,50px);line-height:1.34;letter-spacing:.035em;
  color:#101B15;word-break:auto-phrase;line-break:strict;
}
.lp-hero-tp-copy .hair{max-width:100%;margin-block:clamp(18px,1.5vw,26px)}
.lp-hero-tp-lead{
  font-family:var(--jp);font-size:clamp(16px,1.05vw,17.5px);line-height:1.95;
  letter-spacing:.045em;color:#2E3F37;
}

/* ----------------------------------------------------------- PHONE ------
   699px 以下。ここで koinuheromobaile.png (縦長)に切り替わる（既存の
   フォーン breakpoint を流用）。コピーの左右余白だけ --pad に変える。 */
@media (max-width:699px){
  .lp-hero-tp-copy{
    padding-inline:var(--pad);
    padding-block:clamp(28px,7vw,36px) clamp(28px,2.5vw,44px);
  }
  .lp-hero-tp-h1{font-size:clamp(28px,8.2vw,36px)}
  .lp-hero-tp-lead{font-size:16px;line-height:1.9}
}


/* ============================ 15. TOPICS EDITORIAL VISUALS + GARDEN SLIDER ==
   R4M6 ・ /topics.html だけ。`.tp-` 接頭辞の新規クラスと、`.tp-gal` の
   下にスコープした `.gal-*` の上書きだけで構成する。親テーマの `.gal` /
   `.gal-card` / `.gal-btn` そのものは一行も再定義しないので、TOPの親犬・
   子犬スライダーは何も変わらない。

   ── なぜ空白が生まれていたか ─────────────────────────────────────────
   R4M5 までの 01 PUPPIES は `.sec-in.split`（`align-items:center`）で、
   右カラムが koinukazoku.png（941x1672・縦長）だった。1440px 以上では
   写真の高さが 1200px 前後になり、短い左カラムがその中央に揃うため、
   見出しの上下に数百pxの空白が出ていた。セクションのpaddingではなく
   これが原因。R4M6 で split をやめ、読み幅1本（`.sec-in.narrow`）に
   変えたので、この空白は構造的に発生しなくなる。
   あわせて、大きなビジュアルの直後に来る 01 PUPPIES の上側だけ、帯を
   `--band` から少し詰める。下側と他ページの帯は触らない。

   ── 2枚の editorial visual ───────────────────────────────────────────
   koinumid1 / koinumid2 は文字が絵に焼き込まれた完成品なので、
   ヒーローの2カットと同じ扱いにする。cover crop をかけず、
   width:100% / height:auto で全絵を出す。装飾は細い金の罫と弱い影だけ
   （絵そのものが既に装飾されているため、これ以上足さない）。
   最大幅 1140px は原寸 1448px を超えないので、拡大は起きない。
   ========================================================================= */
.tp-vis{padding-inline:var(--gut)}
.tp-vis-fig{
  max-width:1140px;margin-inline:auto;
  border:1px solid rgba(176,139,46,.45);
  background:var(--ivory-2);
  box-shadow:0 0 0 1px rgba(60,44,10,.10),0 16px 36px rgba(60,44,10,.15);
}
.tp-vis-fig picture{display:block;line-height:0}
.tp-vis-fig img{display:block;width:100%;height:auto}

/* ヒーローのコピー直下。`.lp-hero-tp-copy` の下 padding がそのまま
   ここの余白になるので、上側は足さない。 */
.tp-vis-lead{padding-block:0}
/* 問い合わせ／見学ボタンの下。 */
.tp-vis-mid{padding-block:clamp(48px,4.4vw,86px) 0}

/* 大きなビジュアルの直後の 01 PUPPIES。上側の帯だけ詰める。 */
.lp-topics #puppies{padding-block-start:clamp(48px,4.4vw,86px)}

@media (max-width:759px){
  .tp-vis{padding-inline:var(--pad)}
  .tp-vis-mid{padding-block:clamp(40px,8vw,60px) 0}
}

/* ------------------------------------------------- 子犬たちの庭での時間 --
   親テーマ §R3E のスライダー外装（`.gal-head` / `.gal-track` / `.gal-card`
   / `.gal-btn` / `.gal-prog`）をそのまま使う。外側に `.gal` を付けない
   のは意図的で、assets/js/carousel.js が `.gal` を拾うため。このページの
   スライダーは assets/js/villa-lower.js が動かし、
   prefers-reduced-motion のときは smooth scroll を要求しない。
   `.gal` が担っていた余白だけ、ここで同値を与える。

   自動再生なし・タイマーなし・外部ライブラリなし。JavaScript が無効でも
   `.gal-track` は横スクロールで9枚すべて見られる。 */
.tp-gal{margin-top:var(--gap-ph);padding-inline:var(--gut)}
@media (max-width:759px){
  .tp-gal{padding-inline:var(--pad)}
}

/* 9枚のうち8枚は 1448x1086（4:3）、koinukazoku だけ 941x1672（縦長）。
   トラックは flex なので比率がばらつくとカード高がそろわない。共通の
   4:3 枠を与え、object-fit:contain で「切らずに収める」。4:3 の8枚は
   ぴったり入るので何も起きず、縦長の1枚だけが左右に余白を持つ。
   焼き込み文字を切らないことを、crop より優先する。 */
.tp-gal .gal-card img{
  aspect-ratio:4/3;object-fit:contain;
  background:var(--green-x,#04150F);
}

/* 現在位置の表示。generated content なので文書にテキストは増えない。
   9枚に9個のドットを並べるより静かで、VILLA 既存の意匠に合う。 */
.tp-gal .gal-track{counter-reset:gcard}
.tp-gal .gal-card{counter-increment:gcard}
.tp-gal .gal-card figcaption::before{
  content:counter(gcard,decimal-leading-zero) " / 09";
  display:block;margin-bottom:8px;
  font-family:var(--la);font-weight:700;
  font-size:clamp(10.5px,.78vw,13px);letter-spacing:.26em;
  color:var(--gold-l);
}

/* 進捗バー。villa-lower.js が --x / --w を書く。JSが無ければ静止したまま
   でも読み取りの邪魔をしない幅に留める。 */
.tp-gal .gal-prog{background:rgba(176,139,46,.20)}
.tp-gal .gal-prog>i{background:linear-gradient(90deg,var(--gold),var(--gold-a) 55%,rgba(176,139,46,0))}

.tp-gal .gal-help{
  margin-top:clamp(10px,.9vw,16px);
  font-family:var(--jp-s);font-size:clamp(13px,.86vw,14.5px);
  line-height:1.8;letter-spacing:.06em;color:rgba(27,38,33,.62);
}

/* ==== 16. /living-with-golden.html · DUO 行の高さ不一致の解消 (R4M8) ======
   section 03 の `.duo.duo-nocrop` は 02arukusugata（1448x1086 = 4:3）と
   inutonokurashi（1672x941 ≒ 16:9）を等分 2 列に並べている。`.duo` は
   grid の既定 align-items:stretch なので figure の高さが揃えられ、
   `.duo.duo-nocrop figcaption{margin-top:auto}` が比率の低い右側の
   キャプションを箱の底へ押し出す。結果、写真と自分のキャプションの間に
   深緑の空白が開く。実測 1920:180px / 1440:134px / 1024:95px / 768:72px
   （699px 以下は 1 列になるので 0px）。

   これは styles.css の R3T が `.env-spread` を作った理由とまったく同じ
   欠陥で、そのコメントが記録している実測値（1920:179px / 1440:134px）と
   一致する。

   `align-items:start` では直せない。`.duo` の金の継ぎ目は
   `background:var(--gold)` を gap から覗かせる仕掛けなので、背の低い
   カードが縮むと深緑ではなく金地が露出して、いまより悪くなる。
   ここでは列幅を 2 枚の縦横比の比（1.3333 : 1.7768 ≒ 43 : 57）に合わせ、
   どちらも切らずに高さをそろえる。`.env-spread` の 57fr/43fr を左右
   反転した形で、意匠そのものは変えない。

   対象は body.lp-living-with-golden の 1 ページのみ。/kennel.html と
   /parents.html の `.duo.duo-nocrop` は 2 枚とも同比率で空白 0px なので
   触らない。分岐は styles.css が `.duo` を 1 列に畳む 699px に合わせる。 */
@media (min-width:700px){
  .lp-living-with-golden .duo.duo-nocrop{
    grid-template-columns:minmax(0,43fr) minmax(0,57fr);
  }
}

/* ==== 17. /parents.html · 親犬ページの視覚的序列 (R4M9) ==================
   ADDITIVE ONLY。すべて `body.lp-parents` の内側に限定してあるので、
   `.gal-lux` を共有している /topics.html の子犬スライダーにも、
   `.sec-in.split` `.fig-main` `.duo.duo-nocrop` を使っている他の
   9 ページにも一切届かない。マークアップ・文言・alt・href・見出しは
   このブロックでは一つも変えていない（R4M9 は CSS で序列をつける）。

   a) 01 WHY THE PARENTS の写真を、死んでいる余白の分だけ大きくする。
      `.sec-in.split` は 1.25fr : .75fr だが、左列の `.body` は
      `max-width:var(--measure)` = 42em = 800px で止まる。実測で左列は
      1920 で 1047px あり、247px が誰も使わない余白として写真から
      奪われていた（1440 は 792px なので余白ゼロ＝この分岐には入らない）。
      左列を 800px に固定して残りを写真へ渡す。本文の measure は
      1px も動かない。分岐は styles.css の「B. large-viewport breaks」と
      同じ 1500px に合わせる。

   b) 02 PARENT DOGS を、1200px 以上でコンタクトシートにする。
      8 枚すべてが配信 HTML に実在するのは従来どおりで、変わるのは
      「3 枚見えて 5 枚は矢印の向こう」から「8 枚すべてが一度に見える」
      ことだけ。親犬を見せるページで親犬が隠れている状態をやめる。
      テキストを JS 側・画像側・折りたたみ側へ移していないので、
      クロール可能なテキストは 1 文字も減らない。

      6 列に対して先頭 2 枚が 3 列ぶん、残り 6 枚が 2 列ぶん。
      3+3 / 2+2+2 / 2+2+2 でどの行も端数なく埋まり、**同じ行のカードは
      必ず同じ列幅**になる。8 枚とも 4:3（par-g1 だけは styles.css R3M が
      aspect-ratio で 4:3 に揃えている）なので、行内で画像の高さが
      食い違うことがない — R3T/R4M8 が `.duo` で踏んだ
      「写真と自分のキャプションの間に地の色が開く」欠陥が構造的に
      起こらない配置。念のため figcaption の `margin-top:auto` も
      この文脈だけ 0 に戻し、行内に差が出た場合の余りが写真の下では
      なくカード自身の地の下端に落ちるようにしてある。

      1199px 以下は従来の横スクロールのまま（スマートフォンでの
      横送りは既存の挙動が最良なので触らない）。
   ── R4M11 による廃止 ────────────────────────────────────────────────
   (a) と (b) のルールは **削除した**。どちらも R4M11 が置き換えた
   マークアップを前提に書かれていたからで、残すと害になる。

   (a) `#why .sec-in.split` は、写真が右カラムにあったときの左右分割を
       広げるルール。R4M11 で 01 は読み幅 1 本（`.sec-in.narrow`）になり、
       3 枚はその下の `.par-cas` へ移ったので、このセレクタは
       何にも一致しない。
   (b) `#parents-track` を 6 列グリッドにして矢印と進捗バーを消すルール。
       同じ id は R4M11 のスライダーが引き継いでいるので、残すと
       1200px 以上でスライダーがグリッドに戻され、矢印が消える。
   ------------------------------------------------------------------ */

/* ==== 18. /parents.html · 中盤 3 枚のカスケードと 8 枚スライダー (R4M11) ==
   ADDITIVE ONLY。新規の `.par-cas-*` / `.pgal-*` と、その内側に限った
   `.gal-head` / `.gal-h` / `.gal-note` / `.gal-btn` の上書きだけでできている。
   親テーマの `.gal` / `.gal-track` / `.gal-card` / `.gal-lux` そのものは
   一行も再定義していないので、TOP の親犬・子犬スライダーと
   /topics.html の `.tp-gal` は何も変わらない。

   外側のコンテナに `.gal` を付けていないのは意図的で、
   assets/js/carousel.js が `.gal` を拾うから。このページのスライダーは
   assets/js/villa-lower.js が単独で動かす（二重駆動を防ぐ）。

   色はトークンだけ：--ivory / --ivory-2 / --green / --green-d / --green-x /
   --gold / --gold-d / --gold-l / --gold-h / --gold-a。新しい色は導入しない。

   共通の大前提: 3 枚も 8 枚も、画像の上には何も重ならない。
   装飾（金のマット、外側にずらした金の枠、金の弧、紋、番号）は
   すべて画像の**外**にあるので、焼き込み文字に一度も掛からない。
   画像はどの幅でも object-fit:contain で全体を出す（トリミングなし）。
   aspect-ratio で枠を先に予約するので CLS は出ない。
   ------------------------------------------------------------------ */

/* ---- 18-A. 中盤 3 枚 · PREMIUM EDITORIAL CASCADE --------------------- */
.par-cas{
  position:relative;
  margin-top:var(--gap-ph);
  padding-inline:var(--gut);
  background:radial-gradient(86% 58% at 84% 6%,
    rgba(14,53,39,.062),rgba(14,53,39,0) 64%);
}
.par-cas-in{
  position:relative;z-index:2;
  max-width:1560px;margin-inline:auto;
  display:grid;row-gap:clamp(34px,6vw,58px);
  counter-reset:parcas;
}

/* 図版。金のマットと細い金の罫、控えめな影だけ。
   絵そのものがすでに装飾された完成品なので、これ以上足さない。 */
.par-cas-fig{margin:0;counter-increment:parcas;position:relative}
.par-cas-fig picture{
  display:block;line-height:0;position:relative;z-index:1;
  padding:clamp(6px,.6vw,12px);
  background:linear-gradient(150deg,#FFFDF6,#F3EAD5 46%,#FFFDF6);
  border:1px solid rgba(176,139,46,.55);
  box-shadow:0 0 0 1px rgba(60,44,10,.10),0 20px 44px rgba(40,29,6,.17);
}
.par-cas-img{
  display:block;width:100%;height:auto;
  aspect-ratio:4 / 3;object-fit:contain;background:var(--green-x);
}
.par-cas-fig figcaption{
  margin-top:clamp(14px,1.1vw,20px);
  padding-top:clamp(11px,.95vw,17px);
  border-top:1px solid rgba(176,139,46,.45);
  font-family:var(--jp);font-size:clamp(16px,1.06vw,18.5px);
  line-height:1.82;letter-spacing:.04em;color:#2E3F37;
  max-width:34em;
  /* .h2 と同じ理由。日本語は空白がないので、箱が尽きた場所で切られると
     「ご覧くださ / い。」になる。句のさかいめで折る。 */
  word-break:auto-phrase;line-break:strict;
}
/* 番号。generated content なので文書にテキストは増えない。 */
.par-cas-fig figcaption::before{
  content:counter(parcas,decimal-leading-zero);
  display:block;margin-bottom:9px;
  font-family:var(--la);font-weight:700;
  font-size:clamp(12px,1.05vw,19px);letter-spacing:.26em;color:var(--gold-d);
}

/* ------- 768–1199px : 重なりを持たない左右振り分け ------------------ */
@media (min-width:768px) and (max-width:1199px){
  .par-cas-in{row-gap:clamp(42px,5vw,74px)}
  /* px の上限を併せて置くのは、1199px でこの一列の図版が 975px まで育ち、
     1200px の 12 列カスケード（先頭 732px）との差が大きくなりすぎるため。
     上限を入れると 1199 -> 1200 の段差が 240px から 128px に縮む。 */
  .par-cas-1{width:min(88%,860px);margin-inline:0 auto}
  .par-cas-2{width:min(80%,700px);margin-inline:auto 0}
  .par-cas-3{width:min(85%,780px);margin-inline:auto}
  .par-cas-fig figcaption{max-width:32em}
  .par-cas-2 figcaption{margin-inline-start:auto}
}

/* ------- 1200px 以上 : EDITORIAL CASCADE ------------------------------
   12 列の上で、幅（8 / 6 / 7）と列位置（左端 / 右端 / 1 列内側）と
   キャプションの左右（右 / 左 / 右）と縦位置（下 / 中 / 上）をすべて
   変える。同じ幅・同じ高さの箱が一つもないので、
   1440 / 1920 で「横に並んでいるだけ」には構造的にならない。

   縦の重なりは取らない。三枚とも焼き込み文字が四隅まで入っているので、
   重ねると必ずどこかの文字を隠すことになる。重なるのは、画像の外側に
   ずらした金の罫（::before）だけ。 */
@media (min-width:1200px){
  .par-cas{padding-block:clamp(8px,.8vw,20px) 0}
  .par-cas-in{row-gap:0}

  .par-cas-fig{
    --off:clamp(13px,1.15vw,22px);
    display:grid;
    grid-template-columns:repeat(12,minmax(0,1fr));
    column-gap:clamp(22px,1.8vw,38px);
    align-items:end;
  }
  .par-cas-fig figcaption{
    margin-top:0;max-width:30em;
    border-top:0;padding-top:0;
    border-inline-start:1px solid rgba(176,139,46,.5);
    padding-inline-start:clamp(16px,1.3vw,26px);
  }
  /* 外側にずらした金の罫。額装の印象を作るだけの罫で、
     列間の gap と帯の余白にしかはみ出さない。 */
  .par-cas-fig::before{
    content:"";z-index:0;pointer-events:none;
    align-self:stretch;justify-self:stretch;
    border:1px solid rgba(176,139,46,.5);
  }

  .par-cas-1 picture,
  .par-cas-1::before{grid-area:1 / 1 / 2 / 9}
  .par-cas-1 figcaption{grid-area:1 / 9 / 2 / 13;align-self:end;
    margin-bottom:clamp(16px,1.5vw,30px)}
  .par-cas-1::before{
    margin:var(--off) calc(-1 * var(--off)) calc(-1 * var(--off)) var(--off);
  }

  .par-cas-2{margin-block-start:clamp(38px,3.2vw,64px)}
  .par-cas-2 picture,
  .par-cas-2::before{grid-area:1 / 7 / 2 / 13}
  /* 02 だけはキャプションが図版の左にあるので、金の罫も内側＝右へ。
     帯の左端に罫が浮かずに、写真へ寄って見える。 */
  .par-cas-2 figcaption{
    grid-area:1 / 1 / 2 / 6;align-self:center;
    margin-inline-start:auto;text-align:right;
    border-inline-start:0;padding-inline-start:0;
    border-inline-end:1px solid rgba(176,139,46,.5);
    padding-inline-end:clamp(16px,1.3vw,26px);
  }
  .par-cas-2::before{
    margin:calc(-1 * var(--off)) var(--off) var(--off) calc(-1 * var(--off));
  }

  .par-cas-3{margin-block-start:clamp(48px,4.0vw,80px)}
  .par-cas-3 picture,
  .par-cas-3::before{grid-area:1 / 2 / 2 / 9}
  .par-cas-3 figcaption{grid-area:1 / 9 / 2 / 13;align-self:start;
    margin-top:clamp(24px,2.2vw,46px)}
  .par-cas-3::before{
    margin:var(--off) calc(-1 * var(--off)) calc(-1 * var(--off)) var(--off);
  }

  /* 帯の背景層。金の弧と VILLA の紋。どちらも z-index:0 で
     図版（z-index:2 の .par-cas-in）の後ろ。.sec が overflow:hidden なので
     横スクロールにはならない。 */
  .par-cas::before{
    content:"";position:absolute;z-index:0;pointer-events:none;
    right:calc(50% - 2px);top:clamp(190px,17vw,340px);
    width:clamp(430px,42vw,780px);aspect-ratio:1;
    border:1px solid transparent;border-radius:50%;
    border-top-color:rgba(176,139,46,.52);
    border-right-color:rgba(176,139,46,.20);
    transform:rotate(-16deg);
  }
  .par-cas::after{
    content:"";position:absolute;z-index:0;pointer-events:none;
    left:0;bottom:-3%;
    width:clamp(210px,20vw,380px);aspect-ratio:1;
    background:var(--crest) no-repeat center/contain;opacity:.06;
  }
}

/* ------- 767px 以下 : 1 カラム、写真を大きく ------------------------ */
@media (max-width:767px){
  .par-cas{padding-inline:var(--pad)}
  .par-cas-fig picture{padding:5px}
  .par-cas-fig figcaption{font-size:16px;line-height:1.78;max-width:none}
}

/* ---- 18-B. 敷地で撮影した 8 枚 · PREMIUM SLIDER ---------------------
   大判のメイン画像 1 枚 + サムネイルレール。
   骨格はプレーンな横スクローラで、scroll-snap だけで
   swipe もスクロールバー操作も成立する。JavaScript が失敗しても
   8 枚とも残る。矢印・サムネイル・現在位置は hidden で配信し、
   villa-lower.js が見えるようにする。 */
.pgal{
  --pgal-total:"08";
  position:relative;overflow:hidden;
  margin-top:var(--gap-ph);
  padding-block:clamp(46px,4.4vw,86px);
  padding-inline:var(--gut);
}
.pgal-lux{
  background:
    linear-gradient(180deg,rgba(247,242,228,.16),rgba(247,242,228,0) clamp(46px,5vw,104px)),
    linear-gradient(0deg,rgba(247,242,228,.11),rgba(247,242,228,0) clamp(40px,4.4vw,92px)),
    radial-gradient(120% 74% at 20% 0%,rgba(26,80,57,.78),rgba(4,21,15,0) 66%),
    linear-gradient(180deg,var(--green) 0%,var(--green-d) 56%,var(--green-x) 100%);
  border-block:1px solid rgba(232,210,148,.42);
}
.pgal-lux::before{
  content:attr(data-la);position:absolute;z-index:0;pointer-events:none;
  right:2.5%;top:-.10em;
  font-family:var(--la);font-weight:700;line-height:.86;letter-spacing:.05em;
  font-size:clamp(84px,12.5vw,232px);color:rgba(232,210,148,.05);
}
@supports (-webkit-text-stroke:1px red){
  .pgal-lux::before{color:transparent;-webkit-text-stroke:1px rgba(232,210,148,.15)}
}
.pgal-lux::after{
  content:"";position:absolute;z-index:0;pointer-events:none;
  left:-5%;bottom:-16%;width:clamp(220px,26vw,460px);aspect-ratio:1;
  background:var(--crest) no-repeat center/contain;opacity:.075;
}
.pgal>*{position:relative;z-index:2}

/* ------- 見出し周り。親テーマの共用部品をこの中だけ深緑に合わせる */
.pgal .gal-head{
  padding-bottom:clamp(14px,1.2vw,22px);
  border-bottom:1px solid rgba(232,210,148,.26);
}
.pgal .gal-h{color:var(--gold-h)}
.pgal .gal-h::after{
  background:linear-gradient(90deg,var(--gold-h),var(--gold-a) 55%,rgba(232,210,148,0));
}
.pgal .gal-note{color:#C6D6CD;opacity:1}
.pgal .gal-note a{color:var(--gold-l)}
.pgal .gal-nav{align-items:center}
.pgal .gal-btn{
  width:clamp(50px,3.6vw,60px);height:clamp(50px,3.6vw,60px);
  border-color:var(--gold-d);
  background:linear-gradient(180deg,#FBF1D2 0%,#EFDFAB 52%,#DCC488 100%);
  box-shadow:0 0 0 1px rgba(232,210,148,.42),0 8px 20px rgba(0,0,0,.38);
}
.pgal .gal-btn:hover:not(:disabled){background:var(--gold-h);border-color:var(--gold-h)}
.pgal .gal-btn:focus-visible{outline-color:var(--gold-h)}

/* 現在位置。数字は custom property と generated content で描くので、
   文書には 1 文字も増えない。JavaScript がなければ hidden のまま。 */
.pgal-count{
  display:inline-flex;align-items:baseline;
  margin-inline-end:clamp(10px,1vw,20px);
  font-family:var(--la);font-weight:700;
  font-size:clamp(15px,1.1vw,20px);letter-spacing:.2em;
  color:var(--gold-l);white-space:nowrap;
}
.pgal-count[hidden]{display:none}
.pgal-count::before{content:var(--now,"01");color:var(--gold-h)}
.pgal-count::after{content:"\00a0/\00a0" var(--pgal-total)}

/* ------- トラックとスライド ------------------------------------------ */
.pgal-track{
  display:flex;gap:clamp(16px,1.5vw,28px);
  margin-top:clamp(20px,1.8vw,34px);
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  scrollbar-width:thin;padding-bottom:12px;
  counter-reset:pgs;
}
.pgal-track:focus-visible{outline:2px solid var(--gold-h);outline-offset:4px}
.pgal-track::-webkit-scrollbar{height:8px}
.pgal-track::-webkit-scrollbar-track{background:rgba(232,210,148,.13)}
.pgal-track::-webkit-scrollbar-thumb{background:rgba(232,210,148,.52)}
@media (prefers-reduced-motion:reduce){
  .pgal-track,.pgal-thumbs{scroll-behavior:auto}
}

.pgal-slide{
  flex:0 0 100%;margin:0;scroll-snap-align:start;
  display:flex;flex-direction:column;align-items:center;
  counter-increment:pgs;
}
.pgal-slide picture{
  display:block;line-height:0;width:100%;max-width:1100px;
  padding:clamp(7px,.62vw,13px);
  background:linear-gradient(150deg,rgba(232,210,148,.17),rgba(232,210,148,.05));
  border:1px solid rgba(232,210,148,.5);
  box-shadow:0 0 0 1px rgba(0,0,0,.26),0 26px 58px rgba(0,0,0,.42);
}
.pgal-slide img{
  display:block;width:100%;height:auto;
  aspect-ratio:4 / 3;object-fit:contain;background:var(--green-x);
}
.pgal-slide figcaption{
  width:100%;max-width:1100px;
  margin-top:clamp(14px,1.2vw,22px);
  padding-top:clamp(12px,1vw,18px);
  border-top:1px solid rgba(232,210,148,.26);
  font-family:var(--jp);font-size:clamp(16px,1.02vw,17.5px);
  line-height:1.72;letter-spacing:.04em;color:#D9E6DE;
}
.pgal-slide figcaption::before{
  content:counter(pgs,decimal-leading-zero) " / " var(--pgal-total);
  display:block;margin-bottom:8px;
  font-family:var(--la);font-weight:700;font-size:clamp(10.5px,.78vw,13px);
  letter-spacing:.26em;color:var(--gold-l);
}

/* ------- サムネイルレール -------------------------------------------
   width:fit-content + margin-inline:auto なので、入る幅では中央揃え、
   入らない幅では先頭から横スクロールになる（justify-content:center を
   使うと、あふれたときに先頭のサムネイルに届かなくなる）。 */
.pgal-thumbs{
  display:flex;gap:clamp(8px,.7vw,14px);
  width:fit-content;max-width:100%;margin:clamp(18px,1.6vw,30px) auto 0;
  overflow-x:auto;overscroll-behavior-x:contain;
  scrollbar-width:none;padding-bottom:2px;
}
.pgal-thumbs[hidden]{display:none}
.pgal-thumbs::-webkit-scrollbar{display:none}
.pgal-thumb{
  flex:0 0 auto;width:clamp(96px,8.2vw,150px);
  padding:0;margin:0;line-height:0;cursor:pointer;
  border:1px solid rgba(232,210,148,.34);
  background:rgba(2,16,11,.6);opacity:.6;
  transition:opacity .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.pgal-thumb img{display:block;width:100%;height:auto;aspect-ratio:4 / 3;object-fit:cover}
.pgal-thumb:hover{opacity:.92}
.pgal-thumb:focus-visible{outline:2px solid var(--gold-h);outline-offset:3px}
.pgal-thumb.is-on{
  opacity:1;border-color:var(--gold-h);
  box-shadow:0 0 0 1px var(--gold-a),0 8px 20px rgba(0,0,0,.42);
}
@media (prefers-reduced-motion:reduce){
  .pgal-thumb{transition:none}
}

/* ------- 767px 以下 ---------------------------------------------------- */
@media (max-width:767px){
  .pgal{padding-inline:var(--pad)}
  .pgal-lux::before{font-size:clamp(64px,20vw,120px);right:4%}
  .pgal .gal-head{flex-direction:column;align-items:flex-start;gap:14px}
  .pgal .gal-nav{width:100%;padding-bottom:0}
  .pgal-count{margin-inline-end:auto}
  .pgal .gal-btn{width:56px;height:56px}
  .pgal-slide picture{padding:4px}
  .pgal-slide figcaption{font-size:16px;line-height:1.78;margin-top:12px}
  .pgal-thumbs{margin-inline:0;gap:7px}
  .pgal-thumb{width:84px}
}


/* ==== 19. /kennel.html · H1 とリードのあいだの完成アートワーク (R4M15) ====
   `.lp-hero-tp-copy` の内側、H1 の罫とリード文のあいだに
   hanshokujo22（1672x941・文字が焼き込まれた完成品）を 1 枚挿む。

   外装は section 15 の `.tp-vis-fig` をそのまま使う（細い金の罫・
   アイボリーの地・弱い影・最大幅 1140px・cover crop なし）。
   /topics.html が同じ種類の完成アートワークに使っている外装で、
   新しい意匠を増やさずに済む。`.tp-vis-fig` 自体はここでも
   一行も再定義しない。

   ここで足すのは余白だけ。`figure` は styles.css で margin:0 に
   リセットされているので、上下ともここで与える（上は
   `.lp-hero-tp-copy .hair` の下マージンに乗る）。高さはマニフェストの
   width/height 属性が予約するので、読み込み前後でレイアウトは跳ねない。

   `.lp-hero-tp-vis` を出すのは 'hero_inset' キーを持つページだけで、
   今日それは /kennel.html しかない。/topics.html と /parents.html の
   ヒーローは markup も CSS も動かない。 */
.lp-hero-tp-vis{margin-block:clamp(10px,1.0vw,18px) clamp(26px,2.4vw,44px)}


/* ==== 20. /kennel.html ・ 01 THE GROUNDS の 2 枚を 1 つの wide tier へ (R4M16A) ====
   R4M16 の受入レビューで出た 1 点。`tairanadake`（1672x941・
   文字が焼き込まれた完成品）が 01 THE GROUNDS の two-up の
   写真側に入っているため、PC ではグリッドの .75fr 分しか
   幅がなく、1440 で 469px しか出ていなかった。焼き込まれた
   「静けさが、景色の質を変えていく。」が読めない大きさで、
   直後の R4M16 パノラマ帯（フルブリードで 1440px）との差も
   大きすぎた。間に 243px の空白も残っていた — 背の低い
   figure が align-items:center でコピー列の真ん中に寄っていたため。

   直し方は 1 つだけ。このセクションの two-up をやめ、
   コピー → 大型ビジュアル → パノラマ帯 という縦の並びにして、
   2 枚の絵に同じ最大幅を与える。新しい意匠は足していない —
   `.sec-pup .pano.pano-in`（styles.css A6）がすでに使っている
   「max-width と margin-inline:auto で帯を中央の大きな板にする」形を
   このページの 2 枚へそのまま当てている。

   幅は min(1280px, 100% - 2 * var(--pad))。--pad は 3.8vw なので
   1386px 以上で 1280px に張り付き、それ以下は画面幅に追従して
   縮む。スマホでは --pad が 20px なので、左右 20px の安全余白が残る。
   2 枚は同じ式を持つので、どの幅でも左右の端がそろう。
   `.fig-main` の金枠 3px 分だけ、写真そのものは 6px 細い。

   画像は拡大していない。マニフェストの 1672 段（元画像と同じ
   pixel 数）が srcset に元からあり、content/kennel.php の `sizes` を
   実寸へ直したことで PC がそれを取る。1672 より大きい派生は
   作れない — 元画像が 1672x941 しかないため。AI 拡大はしない。

   パノラマ帯の PC/SP 出し分け（R4M16）は一切動かない。ここは
   幅しか触っておらず、どのカットを取るかは `<source media>` が決める。

   スコープは body.lp-kennel の #ground だけ。子セレクタ（>）で
   直下の 2 つに限っているので、`.sec-in.split` の既定（styles.css）も、
   他 14 ページの two-up も、同ページの 02 INSIDE / 03 WHY IT MATTERS も
   動かない。 */
.lp-kennel #ground > .sec-in.split{
  grid-template-columns:minmax(0,1fr);
  gap:clamp(32px,3.4vw,56px);
  max-width:min(1280px,calc(100% - 2 * var(--pad)));
  padding-inline:0;
  margin-inline:auto;
}
.lp-kennel #ground > .pano.pano-band{
  max-width:min(1280px,calc(100% - 2 * var(--pad)));
  margin-inline:auto;
  margin-top:clamp(36px,3.8vw,64px);
}


/* ==== 21. /about.html ・ ヒーローのスマホ用アートディレクション (R4M21A / R4M21B) ====
   `/about.html` だけ。`body.lp-about` にスコープした `@media` ブロック 1 つ
   だけで、`.lp-hero` / `.lp-hero-media` / `.lp-hero-plate` そのものは一行も
   再定義しない。写真ヒーローの他ページは何も変わらない。

   699px 以下（サイトの既存フォーン breakpoint。新しい値は作っていない）で
   `kenshaheromobile.png`（941x1672・縦長）に切り替わる。これは焼き込み文字
   入りの完成ポスターで、原本を 1 行ずつ実測した層は次のとおり。

     y    0- 750  写真。庭と相模湾、右上に VILLA ロックアップ、
                  左上に `A Special Place in Nature`。左右は金枠。
     y  751- 756  写真の金枠を下辺で閉じる金の罫線。文字はない。
     y       757  ブレンド 1 行。
     y  758- 981  クリームのタイトル帯。「英国ゴールデンレトリバーVILLA」と
                  「自然のやさしさに包まれた、特別な場所」の 2 行。
     y  982-1671  テラス席の写真と下部の英字装飾。

   R4M21A は実寸の `aspect-ratio:941/1672` を予約して全絵を出していた。
   焼き込み文字を 1 文字も切らない点は正しかったが、スマホで 2 つの問題が
   残った。

     1. 高さ。390px でヒーロー画像だけで 693px、プレートを含めると 1067px。
        このサイトが他の写真ヒーローに与えているスマホの画像高は
        `clamp(210px,54vw,320px)` で、その 3 倍近くあった。
     2. 文言の重複。758-981 の帯はヘッダーのブランド
        「英国ゴールデンレトリバー VILLA」を巨大な活字で繰り返し、
        その 2 行目はプレートの kicker「静岡県伊東市宇佐美・相模湾を
        望む丘の上」と同じ役割のタグライン。さらにその英訳が
        `A Special Place in Nature` として同じ画面にもう一度出ていた。
        スマホ 1 画面に、同じ意味・同じ役割の言葉が 3 度。

   R4M21B はこの 2 つを一つの変更で同時に解く。予約する比率を `941/755`
   にし、`object-position` を上端揃えにする。予約した箱は原本より横長なので
   既存の `object-fit:cover` の倒率は幅だけで決まり、見えるのは常に
   `941 x 755` ―― つまり y 0-754 ―― になる（幅によらず一定）。

     ・ 重複していた帯（758 以降）は画面から完全に外れる。余裕 3 行。
     ・ 写真を閉じる金の罫線（751-756）は残るので、四辺の枠が閉じた
       完結した一枚に見える。罫線に文字はないので重複にはならない。
     ・ 高さは 360 / 375 / 390 / 430 で 289 / 301 / 313 / 345px。ヒーロー全体
       （画像＋プレート）は 390px で 1067px → 687px。

   残る焼き込み文字は VILLA ロックアップ（作品の署名）と
   `A Special Place in Nature`（英字の装飾）の 2 つだけで、どちらも
   プレートの kicker / H1 / lead と日本語で突き合わない。
   ページ側の文言は 1 文字も変えていない（title / meta description / H1 /
   kicker / lead / alt / ld+json / 内部リンクはすべて byte 同一）。
   重複の解消はアートディレクションだけで行っている。

   実寸の `aspect-ratio` で箱を予約する点は R4M21A と同じなので、読み込み前から
   高さが決まり、レイアウトは跡ねない（実測 CLS 0.0000）。幅は 100% のままなので
   横スクロールも発生しない。

   700px 以上には一行も足していない。PC / タブレットは従来どおり
   `.lp-hero-media img` の帯（`cover` ・ `object-position:50% 44%` ・
   `height:clamp(300px,38vw,560px)`）のままで、`kenshaheroPC` が配信される。
   R4M21B は PC を 1 ピクセルも動かさない。

   プレートは重ねないまま（`margin-block:0`）。切り出した一枚の下辺は
   金の罫線で閉じており、既定の `margin-block:clamp(-40px,-7vw,-26px)` だと
   その罫線を 27px ほど覚す。R4M21A から変更なし。 */
@media (max-width:699px){
  body.lp-about .lp-hero-media img{
    height:auto;
    aspect-ratio:941/755;
    object-fit:cover;
    object-position:50% 0;
  }
  body.lp-about .lp-hero-plate{margin-block:0}
}


/* ==== 22. /visit.html ・ 「見学でご覧いただけるもの」に実写を入れる (R4M22) ====
   R4M22 ・ /visit.html の #see だけ。

   この節は本文自身が「VILLAではそのすべてを実際にご覧いただけます」と
   書いているのに、親犬 / 子犬 / 育っている環境 / 相談スペース の 4 枠が
   テキストだけだった。各カードの頭に既存の実写を 1 枚ずつ置く。

   共有側は 1 行も書き換えない。`.know` / `.kc` / `.kc h3` / `.kc p` /
   `.kc-link` は styles.css の「S9. KNOW GRID」にあり、TOP S9（8 枚）・
   /aboutgolden.html・/living-with-golden.html が同じ宣言を使っている。
   ここで足すのは `body.lp-visit` ＋ `.visit-see` の二重スコープを持つ
   宣言だけなので、他の 3 面には物理的に届かない。

   PC の列数だけは visit で変える。共有の既定は 4 列で、これは 8 枚を
   2 段に組む TOP S9 のための値。visit は 4 枚なので 1 段 4 列になり、
   1440px でカード幅が 330px ほどになって写真が小さくなる。2 列に固定すると
   2x2 になり、同じ幅で写真が倍になる（RULES「写真を大きく見せる」）。
   1199px 以下は共有側が既に 2 列、699px 以下は 1 列なので、そこは
   同じ値を再宣言して打ち消し合わないようにするだけ。

   写真の枠は `aspect-ratio:4/3`。4 枚とも原本が 1024x768 か 1448x1086 の
   4:3 なので、`object-fit:cover` は実際には 1 ピクセルも切らない
   （crop 縦 0.0% / 横 0.0%）。比を固定してあるので、将来 4:3 以外へ
   差し替えてもレイアウトは跳ねない。高さは <img> の width/height と
   aspect-ratio の両方で読み込み前に確定するので CLS は増えない。

   `.kc` の padding はカード本体から `.visit-see-body` へ移す。写真だけは
   カードの内枠いっぱいに出したいので、`.visit-see-card` 側を 0 にして
   figure を上端に置き、文字だけに元と同じ padding を与える。
   `.kc p{flex:1}` を効かせ続けるため、`.visit-see-body` 自身を
   flex-column にしてある（そうしないと本文量の違うカードで
   `.kc-link` の下端が揃わない）。

   `.kc::after` の金の角飾りは visit だけ消す。共有側では右上 9px に出る
   装飾だが、写真の上に乗ると絵柄に埋もれて意図が伝わらない。カードには
   金の枠線・写真下の金の罫線・`.kc-link` の金の下線が残るので、
   ornament の語彙は落ちていない。 */
body.lp-visit .know.visit-see{
  grid-template-columns:repeat(2,minmax(0,1fr));
  max-width:calc(1200px + 2 * var(--gut));
  margin-inline:auto;
}
body.lp-visit .visit-see .visit-see-card{padding:0}
body.lp-visit .visit-see .visit-see-card::after{content:none}
body.lp-visit .visit-see .visit-see-fig{
  margin:0;
  line-height:0;
  border-bottom:1px solid rgba(176,139,46,.5);
}
body.lp-visit .visit-see .visit-see-fig img{
  display:block;width:100%;height:auto;
  aspect-ratio:4 / 3;
  object-fit:cover;object-position:50% 50%;
}
body.lp-visit .visit-see .visit-see-body{
  display:flex;flex-direction:column;flex:1;
  padding:clamp(24px,2.0vw,36px) clamp(22px,1.8vw,32px) clamp(22px,1.8vw,30px);
}

@media (max-width:1199px){
  body.lp-visit .know.visit-see{max-width:none}
}

/* 699px 以下。共有側の `.know{grid-template-columns:1fr}` は
   `.know.visit-see` より詳細度が低いので、ここで同じ 1 列を宣言し直す。
   文字は共有側の `.kc h3{20px}` / `.kc p{18px}` / `.kc-link{18px}` が
   そのまま効くので、スマホの文字サイズは R4M21B までと同じ。 */
@media (max-width:699px){
  body.lp-visit .know.visit-see{grid-template-columns:1fr}
  body.lp-visit .visit-see .visit-see-body{padding:22px 20px 20px}
}
