/* そなえの棚（sonae.html）だけの見た目。
   形は、Ayane が Figma で組んだ折衷案（試作 shelf_setchu.html、2026-09-28）。
   最初の画面は棚板の線と人物、黄の章に SOUBI FOOD ラインナップの大きなカード2枚、
   生成りの章に 18品の仕切り箱（1品に1升）、最後に紹介する理由と4つの約束 */

/* 短い説明の文は、語の途中で折り返さない（02_visual ⑤）。メモの長い文だけは下で normal に戻す */
main p { word-break: auto-phrase; }

/* ---------- 最初の画面：見出しは横いっぱいに2行。人物は説明の右で、棚板の線の上に立つ ---------- */
.fv { padding-top: var(--space-64); }
.fv .in {
  display: grid; grid-template-columns: minmax(0, 1fr) 240px; grid-template-areas: "h1 h1" "copy who";
  column-gap: var(--space-48); border-bottom: var(--border-width-line) solid var(--color-border-line);
}
.fv .h1 { grid-area: h1; margin-bottom: var(--space-24); }
.fv .copy { grid-area: copy; max-width: var(--layout-text-max); padding-bottom: var(--space-64); }
.fv .who { grid-area: who; align-self: end; justify-self: center; height: 280px; }
.fv + .hill { margin-top: var(--space-24); }

/* ---------- SOUBI FOOD ラインナップ（黄の章）：写真が上、名前と値段が下の大きなカード ---------- */
.lineup { padding-block: var(--space-40) var(--space-80); }
.lineup .h2 { margin-bottom: var(--space-32); }
.cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-32); }
.cards .card { display: grid; grid-template-rows: auto 1fr; }
.card .ph { position: relative; aspect-ratio: 3 / 2; overflow: hidden; border-bottom: var(--border-width-line) solid var(--color-border-line); }
.card .ph img { width: 100%; height: 100%; object-fit: cover; }
/* 仮の AI の写真に添える「写真はイメージです」（02_visual ⑨） */
.card .ph .cap { position: absolute; right: 0; bottom: 0; padding: var(--space-4) var(--space-12); background: var(--color-bg-base); font-size: var(--font-size-small); line-height: var(--line-height-small); color: var(--color-text-secondary); }
.card .ph.wait { display: grid; place-items: center; align-content: center; gap: var(--space-8); font-size: var(--font-size-small); font-weight: var(--font-weight-bold); }
.card .ph.wait img { width: 96px; height: auto; object-fit: contain; }
.card .in { display: grid; align-content: start; gap: var(--space-16); padding: var(--space-32); }
.card .t { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-8) var(--space-16); }
.card .t .tag { flex: none; }
.price { font-weight: var(--font-weight-bold); }
.price .latin { font-size: var(--font-size-h2); margin-right: var(--space-4); }

/* ---------- 防災士が選ぶ18品：1つの箱を升に仕切り、1品に1升 ----------
   升の線は、升の外側に線の太さぶんの outline を描き、升のすき間（線の太さ）を埋めて引く。
   種類で絞って升が減っても、空いたところは生成りのまま残る */
.tonari { padding-top: var(--space-48); }
.tonari .h2 { margin-bottom: var(--space-32); }
.tools { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-24); margin-bottom: var(--space-24); }
.got { display: flex; align-items: baseline; gap: var(--space-8); font-weight: var(--font-weight-bold); }
.got .latin { font-size: var(--font-size-h1); }

.items {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--border-width-line);
  border: var(--border-width-line) solid var(--color-border-line); border-radius: var(--radius-card); overflow: hidden;
  background: var(--color-bg-base);
}
.cell {
  position: relative; min-height: 280px; padding: var(--space-16);
  display: grid; grid-template-rows: auto 1fr auto; grid-template-columns: minmax(0, 1fr);
  background: var(--color-bg-base); outline: var(--border-width-line) solid var(--color-border-line);
}
.cell[hidden] { display: none; }
.cell .top { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); min-height: 28px; font-size: var(--font-size-small); font-weight: var(--font-weight-bold); color: var(--color-text-secondary); }
.cell .top .tag { color: var(--color-text-primary); }
.cell .mid { display: grid; justify-items: center; align-content: center; gap: var(--space-8); padding: var(--space-12) 0; text-align: center; }
/* 品の絵（小物の描き方で描いた絵。背景は透明） */
.cell .mid .ill { display: block; width: 128px; max-width: 100%; height: auto; margin-inline: auto; }
.cell h3 { font-size: var(--font-size-body); line-height: var(--line-height-heading); letter-spacing: var(--letter-spacing-body); }
.cell .qty { font-size: var(--font-size-small); line-height: var(--line-height-small); color: var(--color-text-secondary); text-wrap: balance; }
/* 升の幅に文節が収まらないときだけ、文節の中でも折り返す（升の線からはみ出さないため） */
.cell h3, .cell .qty { overflow-wrap: anywhere; }
.cell .bot { display: flex; justify-content: space-between; align-items: center; }

/* 防災士のメモ：開くと升いっぱいに白い面で重ね、閉じる「メモ」は右下に残す */
.cell details.memo p {
  position: absolute; inset: 0; z-index: 3; overflow: auto;
  padding: var(--space-16) var(--space-16) var(--space-64);
  background: var(--color-surface-card); font-size: var(--font-size-small); line-height: var(--line-height-small);
  word-break: normal; /* 狭い面に長い文を詰めるので、文節で折り返さない */
}
.cell details.memo[open] summary { position: absolute; z-index: 4; right: var(--space-16); bottom: var(--space-16); background: var(--color-surface-card); }

/* そろえた升に押す判（ティールの小さな印）。見せ場はこのページでここだけ（02_visual ⑪）。
   判の位置は升の中身の右端から測る（絵の右端から測ると、升の幅が狭いときにはみ出す） */
.icw { position: relative; justify-self: stretch; }
.stamp {
  /* 品の絵を隠さないよう、升の右上に寄せて、絵の右上の角にかかる位置に押す */
  position: absolute; right: calc(var(--space-8) * -1); top: calc(var(--space-16) * -1);
  width: 76px; height: 76px; display: grid; place-items: center;
  border: var(--border-width-line) solid var(--color-accent-info); border-radius: var(--radius-circle);
  background: var(--color-bg-base); color: var(--color-text-link);
  font-size: var(--font-size-small); font-weight: var(--font-weight-bold); line-height: 1;
  opacity: 0; pointer-events: none; transform: rotate(-12deg) scale(.6);
}
.stamp::before { content: ""; position: absolute; inset: var(--space-4); border: var(--border-width-hairline) solid var(--color-accent-info); border-radius: var(--radius-circle); }
.cell.on .stamp { opacity: 1; transform: rotate(-12deg) scale(1); }
/* 開いたときに、もとから印のある升で判が動かないよう、最初の印を付けてから動きを付ける */
.items.ready .stamp { transition: transform var(--duration-fast) steps(2), opacity var(--duration-fast); }

.fine { max-width: var(--layout-text-max); margin-top: var(--space-16); font-size: var(--font-size-small); line-height: var(--line-height-small); color: var(--color-text-secondary); }

/* ---------- 紹介する理由と4つの約束 ---------- */
.stance-sec { padding-top: var(--space-32); }
.stance { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: var(--space-64); }
.stance .h2 { margin-bottom: var(--space-24); }
.rules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: var(--border-width-line) solid var(--color-border-line); }
.rules li { padding: var(--space-24) var(--space-24) var(--space-24) 0; border-bottom: var(--border-width-line) solid var(--color-border-line); }
.rules li:nth-child(2n) { padding: var(--space-24) 0 var(--space-24) var(--space-24); border-left: var(--border-width-line) solid var(--color-border-line); }
.rules h3 { margin-bottom: var(--space-8); font-size: var(--font-size-body); line-height: var(--line-height-heading); letter-spacing: var(--letter-spacing-body); }
.rules p { font-size: var(--font-size-small); line-height: var(--line-height-small); }

/* ---------- スマホ ---------- */
@media (max-width: 1023px) {
  .fv { padding-top: var(--space-40); }
  .fv .in { grid-template-columns: minmax(0, 1fr); grid-template-areas: "h1" "copy" "who"; }
  .fv .h1 { margin-bottom: var(--space-16); }
  .fv .copy { padding-bottom: 0; }
  .fv .who { justify-self: end; height: 200px; margin: var(--space-16) var(--space-8) 0 0; }

  .cards { grid-template-columns: minmax(0, 1fr); gap: var(--space-24); }
  .card .in { gap: var(--space-12); padding: var(--space-24) var(--space-16); }

  .items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cell { min-height: 248px; padding: var(--space-12) var(--space-8); } /* 9文字の名前が1行に入るよう、左右は8px */
  .cell .top { flex-wrap: wrap; }
  .cell .mid .ill { width: 96px; }
  .cell details.memo p { padding: var(--space-12) var(--space-12) var(--space-64); }
  .cell details.memo[open] summary { right: var(--space-8); bottom: var(--space-12); }
  .stamp { top: calc(var(--space-12) * -1); right: calc(var(--space-4) * -1); width: 68px; height: 68px; }

  .stance { grid-template-columns: minmax(0, 1fr); gap: var(--space-32); }
  .rules { grid-template-columns: minmax(0, 1fr); }
  .rules li, .rules li:nth-child(2n) { padding: var(--space-16) 0 var(--space-24); border-left: 0; }
}
