/* ============================================================
   Auguri! ─ ベース・共通部品
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

/* 紙の地。白ではなくサイトのアイボリーにしておく（2026-09-17）。
   帯のつなぎ目が小数になったときに、後ろの地が白い筋として出るのを防ぐ（下の .band + .band を参照）。
   帯はすべて自分の地色で塗りつぶすので、ふだんこの色は見えない。 */
html { background: var(--c-ivory); -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--c-ivory);
  color: var(--c-ink);
  font-family: var(--ff-jp-body);
  font-size: var(--fs-16);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}

img, svg, video { max-width: 100%; }
img { height: auto; display: block; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4, h5, h6, p, figure, dl, dd, ul, ol, form { margin: 0; }
/* form を足したのは 2026-09-17。ブラウザの既定では <form> に下マージン（1em）が付く場合があり、
   お問い合わせのフォームの帯とフッターのあいだに白い帯ができていた（統合プレビューで発生）。 */
ul, ol { padding: 0; list-style: none; }
/* 見出しの太字は使わない（ai は全見出し Regular／Light） */
h1, h2, h3, h4, h5, h6 { font-weight: inherit; font-size: inherit; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input, textarea, select { font: inherit; color: inherit; }

/* ── アクセシビリティ ── */
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.skip {
  position: absolute; left: calc(240 * var(--s)); top: 0; z-index: 1000;
  padding: 12px 20px; background: var(--c-ink); color: var(--c-white);
  font-size: var(--fs-14); transform: translateY(-120%); transition: transform 200ms var(--e-out);
}
.skip:focus { transform: none; }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* ── キャンバス：1920 基準・中央寄せ。1920 超は地色で左右を埋める（Q11・2026-09-22 確定） ── */
.page { position: relative; width: 100%; overflow: clip; }

/* --s は「縦スクロールバーを除いた表示幅」から出す。
   100vw はスクロールバーを含むため、そのままだと帯が数 px はみ出す（横スクロールの原因）。
   body をコンテナにして 100cqw（＝body の内容幅）で割る。対象ブラウザはすべて対応済み。 */
@supports (width: 1cqw) {
  body { container-type: inline-size; --s: clamp(0.62px, calc(100cqw / 1920), 1px); }   /* 1920 超は 1920 で止める（2026-09-22） */
}
.band { position: relative; width: 100%; }
.band__in { position: relative; width: calc(1920 * var(--s)); height: 100%; margin-inline: auto; }

/* ── 帯のつなぎ目に、後ろの紙の地が細い筋になって出るのを止める（2026-09-17 高野様ご指摘・お問い合わせ） ──
   帯の高さは `1920px を画面幅で割った倍率`から出すので、ほとんどが小数になる
   （お問い合わせのフォームは中身なりの高さなので、下端が 3478.94px といった値になる）。
   小数の境目では、上の帯にも下の帯にも塗られない画素の列ができ、
   後ろにある紙の地（白）がそこから透けて **白い筋**に見える。手当ては 2 つ。

     ① 紙の地そのものをアイボリーにする（万一のぞいても白くならない）
     ② 下の帯の地色を **1px だけ上から塗りはじめ**、同じだけ中身を下げる

   ② は `margin-top:-1px` と `padding-top:1px` の組み合わせ。
   中身（.band__in と、その中の絶対配置）が基準にするのは padding の内側なので、
   1px 上げて 1px 下げた差し引きで **位置は 1px も動かない**。
   高さの数え方を content-box にしてあるので、帯の下端も動かない
   （＝次の帯がずれていく、ということが起きない）。 */
main.page > .band + .band { box-sizing: content-box; margin-top: -1px; padding-top: 1px; }

/* ── 絶対配置の共通 ── */
.band__in > *, .abs { position: absolute; }
.t { margin: 0; }
.t.nowrap { white-space: nowrap; }
.t .ln { display: block; }
.rule { pointer-events: none; }
.circle { display: block; }

/* ── 写真枠プレースホルダー（カット No 表示。差し替え後も枠寸法は CSS 側で固定） ── */
.ph { overflow: hidden; }
.ph__label {
  position: absolute; left: 0; bottom: 0;
  padding: calc(4 * var(--s)) calc(8 * var(--s));
  font-family: var(--ff-en-display); font-size: calc(12 * var(--s)); line-height: 1; letter-spacing: .06em;
  color: rgba(0,0,0,.55); background: rgba(255,255,255,.35);
  pointer-events: none;
}
/* 写真枠の通し番号（2026-09-17 高野様ご指示）
   「写真データに No をふっていくので、分かりやすいようにプレースホルダーに数字を」
   TOP から順に 1, 2, 3 …。番号のあとに **枠の大きさ**（1920px 基準の実寸）を並べる。
   文字は 8px（ご指示）。数字だけ 11px にして、ぱっと拾えるようにしてある。
   写真が入ったあとも読めるよう、濃い地に白で置く（左上＝既存のカット No は左下なので重ならない）。 */
.ph__no {
  position: absolute; left: 0; top: 0; z-index: 2;
  padding: 3px 6px 4px;
  /* **画面の幅に関わらず 8px**（--s で縮めない）。作業用の印なので、
     窓を小さくしても読めるほうが大事なため。番号だけ 11px。 */
  font-family: var(--ff-en-display); font-size: 8px; line-height: 1;
  letter-spacing: .06em; white-space: nowrap;
  font-variant-numeric: lining-nums tabular-nums;   /* 数字を大文字の高さでそろえる */
  font-feature-settings: "lnum" 1, "tnum" 1;
  color: #fff; background: rgba(28,28,26,.74);
  pointer-events: none;
}
.ph__no b {
  font-weight: 400; font-size: 11px; letter-spacing: .1em; margin-right: 5px;
}
/* 写真の動きの印（2026-09-24 高野様「今の動きが入っている最新の箇所を、画像の数字ナンバーの色を変えるなどしてわかりやすく」）
   作業用の印。番号の地の色を動きの種類ごとに変え、大きさのあとに動きの名前を添える。
   動きの付け方は変えない（見分けるのは、枠に付いている印・クラスだけ）。
   ・ズームループ …… 枠の data-motion="zoom-loop"（tools/place_photos.py の ZOOM_LOOP）
   ・ズームアウト …… photo-motion.js が付ける .pmz（TARGETS）
   ・動画 ……………… 枠の中の <video>
   ・地になる ………… 下層ページの FV（.hero__ph）。SP では「横に広がる」
   ・年がめぐる ……… TOP 受け継ぐ（inherit-motion.js が付ける .ihm-ph）
   ・大判が応える …… TOP 暮らしの品々の大判（.sl__ph）と、触れると光る 4 行（.sl__th1〜4）
   ・にじむ ………… photo-motion.js が付ける data-reveal="nijimu"（REVEAL・2026-09-24）
   ai 突き合わせ（.compare）では番号ごと隠れる。WordPress のテーマは番号を出さないので、テストサイト・本番には出ない。
   動きを減らす設定では JS が .pmz／.ihm-ph を付けないので、その 2 つは色が付かない（動いていないため） */
/* 動きごとの色（--mv）と名前（--mvl）は枠（.ph）に持たせ、番号と枠の縁で使う */
.ph[data-motion="zoom-loop"] { --mv: #1f5fa8; --mvl: "ズームループ"; }
.ph.pmz { --mv: #2e7d4f; --mvl: "ズームアウト"; }
.ph:has(> video) { --mv: #7b3fa0; --mvl: "動画"; }
.ph.hero__ph { --mv: #c0661a; --mvl: "地になる（SP 横に広がる）"; }
.ph.ihm-ph { --mv: #17808a; --mvl: "年がめぐる"; }
.ph.sl__ph { --mv: #b3263a; --mvl: "大判が応える"; }
.ph.sl__th1, .ph.sl__th2, .ph.sl__th3, .ph.sl__th4 { --mv: #c2566a; --mvl: "触れると光る"; }
.ph[data-reveal="nijimu"] { --mv: #8a6d0b; --mvl: "にじむ"; }   /* photo-motion.js の REVEAL（2026-09-24） */
/* 動きのある枠だけ：番号を大きく、地を動きの色に、枠の内側に同じ色の縁（3px） */
.ph > .ph__no { background: var(--mv, rgba(28,28,26,.74)); font-size: var(--mvfs, 8px); padding: var(--mvpd, 3px 6px 4px); }
.ph > .ph__no::after { content: var(--mvl, none); margin-left: 6px; font-family: var(--ff-jp-body); font-size: 11px; letter-spacing: .04em; }
.ph[data-motion="zoom-loop"], .ph.pmz, .ph:has(> video), .ph.hero__ph, .ph.ihm-ph, .ph.sl__ph, .ph.sl__th1, .ph.sl__th2, .ph.sl__th3, .ph.sl__th4, .ph[data-reveal] {
  --mvfs: 10px; --mvpd: 5px 9px 6px;
}
/* 枠の縁は ::before（写真 <img> より上・番号より下）。outline は写真の下に隠れるので使わない */
/* 番号札（.ph__no）がある枠だけ＝プレビューだけ。テーマは番号札を外すので、テストサイト・本番には縁も出ない */
.ph:has(> .ph__no):is([data-motion="zoom-loop"], .pmz, :has(> video), .hero__ph, .ihm-ph, .sl__ph, .sl__th1, .sl__th2, .sl__th3, .sl__th4, [data-reveal])::before {
  content: ""; position: absolute; inset: 0; z-index: 2; border: 3px solid var(--mv); pointer-events: none;
}
.ph[data-motion="zoom-loop"] > .ph__no b, .ph.pmz > .ph__no b, .ph:has(> video) > .ph__no b, .ph.hero__ph > .ph__no b, .ph.ihm-ph > .ph__no b,
.ph.sl__ph > .ph__no b, .ph.sl__th1 > .ph__no b, .ph.sl__th2 > .ph__no b, .ph.sl__th3 > .ph__no b, .ph.sl__th4 > .ph__no b, .ph[data-reveal] > .ph__no b { font-size: 14px; }
.compare .ph::before { border: 0 !important; }
.ph > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.imgbox { overflow: hidden; }
.imgbox > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* 動画の枠（2026-09-23・66 番）：<img>（ポスター）の上に同じ大きさで重ねる。動きを減らす設定・ai 突き合わせでは隠す＝ポスターが見える */
.ph > video, .imgbox > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
.compare .ph > video { display: none; }
@media (prefers-reduced-motion: reduce) { .ph > video, .imgbox > video { display: none; } }
.svgbox > svg, .svgbox > img { display: block; width: 100%; height: 100%; }

/* 比較モード：ai 突き合わせ用にラベルなど ai に無い要素を隠す */
.compare .ph__label, .compare .ph__no { display: none; }
.compare .skip { display: none; }

/* ── フォーム（お問い合わせ）── ネイティブ入力は ai の見た目（◯・⬜・下罫）を保ちつつアクセシブルに */
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.fm__radio-input, .fm__check-input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.fm__radio-input:focus-visible + span, .fm__check-input:focus-visible + .fm__check-box { outline: 2px solid currentColor; outline-offset: 2px; }
.fm__radio-input:checked + span { color: var(--c-ink); }
.fm__check-box { display: inline-block; width: calc(14 * var(--s)); height: calc(14 * var(--s)); box-shadow: inset 0 0 0 1px var(--c-ink-8b); vertical-align: -1px; background: #fff; }
.fm__check-input:checked + .fm__check-box { background: var(--c-ink); }
input.t, textarea.t { border: 0; background: transparent; padding: 0; outline-offset: 2px; color: var(--c-ink); }
input.t::placeholder, textarea.t::placeholder { color: var(--c-ink-8b); opacity: 1; }
textarea.t { resize: none; width: calc(560 * var(--s)); height: calc(150 * var(--s)); }
input.t { width: calc(560 * var(--s)); }
.fm__area { pointer-events: none; }
