/* 脳トレゲーム「里の お買いもの」（kaimono）。クラスは gm-kaimono- で 始める。決まりは docs/games-contract.md
   見た目（2026-10-09 仕上げ）: 夜の 里の 夜市の 屋台。紅白の 日よけ・ちょうちん（画像 kaimono/lantern.webp）・
   木の 板壁と 棚・石の 道。看板・正解！・おしい！ は 文字ごと 画像（scripts/art/gen-game-kaimono.mjs）。
   夜の 里は ライト・ダークとも 同じ 見た目（styles.css の v2.4 と 同じ 考え方） */
.gm-kaimono { --km-gold: #f2c14e; --km-wood: #5a3418; --km-wood-d: #2e1a0c; gap: 6px; overflow: hidden; padding-bottom: 0; }

/* ---- ひと言（1行。漆の 帯に 白い 字） ---- */
.gm-kaimono-talkbox { flex: none; }
.gm-kaimono-line { display: flex; align-items: center; gap: 6px; min-height: 48px; margin: 0; padding: 4px 12px 4px 4px; border-radius: 999px; background: linear-gradient(180deg, rgb(42 13 20 / .94), rgb(26 8 14 / .94)); box-shadow: inset 0 0 0 2px rgb(242 193 78 / .85), 0 3px 8px rgb(0 0 0 / .45); color: #fff; font-weight: 700; font-size: var(--fs-md); line-height: 1.3; }
.gm-kaimono-line.is-ok { color: #ffe39a; box-shadow: inset 0 0 0 2px #ffe08a, 0 0 12px rgb(255 214 107 / .6); }
.gm-kaimono-line.is-ng { color: #ffd2b0; }
.gm-kaimono-face { flex: none; width: 40px; height: 40px; border-radius: 50%; overflow: hidden; background: #fff8e6; box-shadow: 0 0 0 2px var(--km-gold); }
.gm-kaimono-face .face { display: block; width: 100%; height: 100%; }

/* ---- はじめの 画面: 看板・やまとじい・値段の 板 ---- */
.gm-kaimono-intro { gap: 8px; justify-content: flex-start; }
.gm-kaimono-sign { flex: none; display: block; width: min(86%, 340px); height: auto; margin: 2px auto 0; filter: drop-shadow(0 6px 10px rgb(0 0 0 / .5)); }
.gm-kaimono-introhost { flex: 1 1 auto; min-height: 0; position: relative; display: flex; align-items: flex-end; }
.gm-kaimono-hostimg { flex: none; height: 100%; max-height: 220px; min-height: 0; width: auto; margin-left: -4px; filter: drop-shadow(0 6px 10px rgb(0 0 0 / .5)); animation: float 3s ease-in-out infinite; }
.gm-kaimono-introsay { flex: 1 1 auto; min-width: 0; margin: 0 0 12px -10px; }
.gm-kaimono-introsay .gm-kaimono-line { border-radius: 22px; }
.gm-kaimono-table { flex: none; padding: 10px; border-radius: 18px; background: linear-gradient(180deg, #6b3d1c, #4a2810); box-shadow: inset 0 0 0 3px var(--km-gold), inset 0 0 0 5px #3a1e0a, 0 6px 14px rgb(0 0 0 / .5); }
.gm-kaimono-table-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 0; list-style: none; }
.gm-kaimono-table-list.n3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gm-kaimono-table-list li { display: flex; flex-direction: column; align-items: center; min-width: 0; padding: 0; border: 8px solid transparent; border-image: url(../assets/ui/skin/tile.webp) 46 fill / 8px stretch; }
.gm-kaimono-table-list img { width: 52px; height: 52px; object-fit: contain; filter: drop-shadow(0 2px 2px rgb(0 0 0 / .25)); }
.gm-kaimono-table-price { font-size: var(--fs-lg); font-weight: 700; color: #4a2a12; line-height: 1.15; white-space: nowrap; font-variant-numeric: tabular-nums; }
.gm-kaimono-table-price small, .gm-kaimono-menu small { font-size: .72em; font-weight: 700; margin-left: 1px; }

/* ---- 値段の 帯（遊んで いる 間 いつも 見える。木の 板） ---- */
.gm-kaimono-menu { flex: none; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 2px; margin: 0; padding: 4px 6px; list-style: none; border-radius: 14px; background: linear-gradient(180deg, #6b3d1c, #4a2810); box-shadow: inset 0 0 0 2px var(--km-gold), 0 3px 8px rgb(0 0 0 / .45); }
.gm-kaimono-menu li { display: flex; flex-direction: column; align-items: center; min-width: 0; }
.gm-kaimono-menu img { width: 32px; height: 32px; object-fit: contain; filter: drop-shadow(0 1px 1px rgb(0 0 0 / .4)); }
.gm-kaimono-menu span { font-size: var(--fs-sm); font-weight: 700; line-height: 1.15; color: #ffefc4; white-space: nowrap; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }

/* ---- 進み具合（舞台の 右上。金の 小判） ---- */
.gm-kaimono-meta { position: absolute; right: 6px; top: 6px; z-index: 8; display: flex; align-items: center; gap: 6px; padding: 2px 4px 2px 10px; border-radius: 999px; background: rgb(26 8 14 / .85); box-shadow: inset 0 0 0 2px rgb(242 193 78 / .8); }
.gm-kaimono-count { font-weight: 700; font-size: var(--fs-md); line-height: 1.2; color: #fff; white-space: nowrap; }
.gm-kaimono-count small { font-size: var(--fs-xs); color: #e8d3a6; }
.gm-kaimono-dots { display: flex; gap: 3px; margin: 0; padding: 0; list-style: none; }
.gm-kaimono-dot { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: rgb(255 255 255 / .12); box-shadow: inset 0 0 0 2px rgb(242 193 78 / .5); font-weight: 700; font-size: 13px; line-height: 1; color: #fff; }
.gm-kaimono-dot.is-ok { background: radial-gradient(circle at 35% 30%, #fff6c8, #f2c14e 55%, #a8741c); color: #5a2a00; box-shadow: 0 0 6px #ffd66b; }
.gm-kaimono-dot.is-ng { background: #3a2a4a; color: #fff; box-shadow: inset 0 0 0 2px #9a8aa3; }

/* ---- 舞台（夜市の 屋台） ---- */
.gm-kaimono-stagewrap { position: relative; flex: 1 1 auto; min-height: 190px; }
.gm-kaimono-stage {
  --s: 56px; --c: 160px; --scroll: 0px; --row0: 40%; --row1: 60%;
  position: absolute; inset: 0; overflow: hidden;
  border-radius: 18px;
  background: #1a0e08;
  box-shadow: 0 0 0 3px var(--km-gold), 0 0 0 5px #3a1e0a, 0 8px 18px rgb(0 0 0 / .55);
  user-select: none; -webkit-user-select: none;
}
.gm-kaimono-stage.is-ok { box-shadow: 0 0 0 3px #ffe08a, 0 0 0 5px #3a1e0a, 0 0 22px rgb(255 214 107 / .7); }
/* 板壁（たての 板。ちょうちんの 明かりで 上が 暖かい） */
.gm-kaimono-wall {
  position: absolute; left: 0; right: 0; top: 0; bottom: 14%; z-index: 0;
  background:
    radial-gradient(ellipse 70% 55% at 50% 22%, rgb(255 170 80 / .38), transparent 70%),
    repeating-linear-gradient(90deg, rgb(0 0 0 / .32) 0 2px, transparent 2px 46px) var(--scroll) 0 / 46px 100%,
    repeating-linear-gradient(90deg, #6a3e1e 0 23px, #5c3418 23px 46px) var(--scroll) 0 / 46px 100%;
}
/* 紅白の 日よけ（下は まるい 縁）。棚と 一緒に 流れて「進んで いる」ことを 見せる */
.gm-kaimono-awning {
  position: absolute; left: 0; right: 0; top: 0; height: 10%; z-index: 3;
  background: linear-gradient(180deg, rgb(255 255 255 / .18), transparent 40%, rgb(0 0 0 / .18)), repeating-linear-gradient(90deg, #d42a44 0 26px, #fff3dc 26px 52px) var(--scroll) 0 / 52px 100%;
  box-shadow: inset 0 5px 0 #8a1024, 0 4px 6px rgb(0 0 0 / .35);
}
.gm-kaimono-awning::after {
  content: ''; position: absolute; left: 0; right: 0; top: 100%; height: 12px;
  background: radial-gradient(circle at 13px 0, #d42a44 12px, transparent 13px) var(--scroll) 0 / 52px 12px repeat-x, radial-gradient(circle at 39px 0, #fff3dc 12px, transparent 13px) var(--scroll) 0 / 52px 12px repeat-x;
  filter: drop-shadow(0 3px 2px rgb(0 0 0 / .3));
}
/* ちょうちん（日よけの 下に 並ぶ。棚と 一緒に 流れる） */
.gm-kaimono-lanterns { position: absolute; left: 0; top: 7%; width: 100%; height: 13%; z-index: 1; will-change: transform; }
.gm-kaimono-lanterns img { position: absolute; top: 0; height: 100%; width: auto; transform: translateX(-50%); filter: drop-shadow(0 0 10px rgb(255 140 60 / .75)); }
/* 木の 棚 2段（金の ふち） */
.gm-kaimono-board { position: absolute; left: -2%; right: -2%; height: 10px; z-index: 2; border-radius: 3px; background: linear-gradient(180deg, #c99a5a, #8a5a2a 60%, #5a3418); box-shadow: 0 -2px 0 #f2c14e inset, 0 5px 6px rgb(0 0 0 / .45); }
.gm-kaimono-board-0 { top: var(--row0); }
.gm-kaimono-board-1 { top: var(--row1); }
/* 石の 道（棚と 同じ 速さで 流れる） */
.gm-kaimono-ground {
  position: absolute; left: 0; right: 0; bottom: 0; height: 17%; z-index: 0;
  background:
    radial-gradient(ellipse 22px 8px at 26px 55%, rgb(150 130 120 / .55) 96%, transparent) var(--scroll) 0 / 60px 100% repeat-x,
    radial-gradient(ellipse 16px 6px at 52px 25%, rgb(120 100 95 / .5) 96%, transparent) var(--scroll) 0 / 60px 100% repeat-x,
    linear-gradient(#5a4a48, #3a2e2c);
  border-top: 3px solid #2a1a10;
}

.gm-kaimono-rows { position: absolute; inset: 0; z-index: 4; will-change: transform; }
.gm-kaimono-item { position: absolute; width: var(--s); height: var(--s); object-fit: contain; pointer-events: none; filter: drop-shadow(0 3px 2px rgb(0 0 0 / .45)); }
.gm-kaimono-falls { position: absolute; inset: 0; pointer-events: none; }
.gm-kaimono-falls .gm-kaimono-item { left: 0; top: 0; will-change: transform, opacity; }
.gm-kaimono-falls-back { z-index: 5; }
.gm-kaimono-cart { position: absolute; width: var(--c); height: var(--c); z-index: 6; will-change: transform; }
.gm-kaimono-cart::before { content: ''; position: absolute; left: 20%; right: 2%; bottom: 15%; height: 7%; border-radius: 50%; background: rgb(0 0 0 / .45); filter: blur(4px); }
.gm-kaimono-cart.is-bump .gm-kaimono-cart-img, .gm-kaimono-cart.is-bump .gm-kaimono-stack { animation: gm-kaimono-bump .22s ease-out; }
@keyframes gm-kaimono-bump { 40% { transform: translateY(3%); } }
.gm-kaimono-cart-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; visibility: hidden; z-index: 1; filter: drop-shadow(0 2px 3px rgb(0 0 0 / .35)); }
.gm-kaimono-cart-img.is-on { visibility: visible; }
.gm-kaimono-stack { position: absolute; inset: 0; z-index: 0; }
.gm-kaimono-piled { position: absolute; width: var(--ss); height: var(--ss); object-fit: contain; filter: drop-shadow(0 2px 1px rgb(0 0 0 / .3)); }
.gm-kaimono-piled.is-new { animation: gm-kaimono-plop .34s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes gm-kaimono-plop { from { transform: translateY(-40%) scale(.7); } to { transform: none; } }
.gm-kaimono-falls-front { z-index: 7; }

/* level 4 から: 止まったら カゴに ふろしきを かけて 中を 隠す（覚えて 答える） */
.gm-kaimono-cover {
  position: absolute; left: 57%; top: 18%; width: 46%; height: 36%; z-index: 2;
  display: none; place-items: center; border-radius: 45% 45% 14px 14px;
  background: radial-gradient(circle at 30% 35%, rgb(255 255 255 / .55) 0 6%, transparent 7%) 0 0 / 34% 34%, #2f8f6b;
  border: 2px solid #1f6a4f; box-shadow: 0 3px 0 rgb(0 0 0 / .18);
}
.gm-kaimono-cover span { color: #fff; font-size: calc(var(--c) * .14); font-weight: 700; line-height: 1; text-shadow: 0 2px 0 rgb(0 0 0 / .25); }
.gm-kaimono-cart.is-covered .gm-kaimono-cover { display: grid; animation: gm-kaimono-plop .3s ease-out both; }
.gm-kaimono-cart.is-covered .gm-kaimono-stack { visibility: hidden; }

/* 値札の ポップアップ（入った ときだけ。金の 札）・はずれの 札・きらめき */
.gm-kaimono-fx { position: absolute; inset: 0; z-index: 9; pointer-events: none; }
.gm-kaimono-pop {
  position: absolute; left: 0; top: 0; display: flex; align-items: center; gap: 2px;
  padding: 2px 14px 2px 6px; border-radius: 999px;
  background: linear-gradient(180deg, #fff6c8, #f2c14e); color: #4a1a08; box-shadow: inset 0 0 0 2px #a8741c, 0 4px 8px rgb(0 0 0 / .45);
  font-weight: 700; font-size: var(--fs-xl); line-height: 1.2; white-space: nowrap; will-change: transform, opacity;
}
.gm-kaimono-pop img { width: 1.5em; height: 1.5em; object-fit: contain; }
.gm-kaimono-pop small { font-size: .7em; margin-left: 1px; }
.gm-kaimono-miss {
  position: absolute; left: 0; top: 0; padding: 0 10px; border-radius: 999px;
  background: rgb(40 30 50 / .9); color: #e8dcf0; box-shadow: inset 0 0 0 2px #9a8aa3;
  font-weight: 700; font-size: var(--fs-sm); line-height: 1.6; white-space: nowrap;
}
.gm-kaimono-spark { position: absolute; width: 0; height: 0; }
.gm-kaimono-spark i { position: absolute; left: -6px; top: -6px; width: 12px; height: 12px; background: #fff3a8; clip-path: polygon(50% 0, 61% 38%, 100% 50%, 61% 62%, 50% 100%, 39% 62%, 0 50%, 39% 38%); animation: gm-kaimono-fly .6s cubic-bezier(.15, .7, .3, 1) both; }
.gm-kaimono-spark i:nth-child(2n) { background: #ffd66b; width: 9px; height: 9px; }
@keyframes gm-kaimono-fly { from { transform: rotate(var(--a)) translateY(0) scale(.4); opacity: 1; } to { transform: rotate(var(--a)) translateY(calc(var(--d) * -1)) scale(1); opacity: 0; } }

/* 正解！／おしい！（大きな 文字と 光の 輪・粒） */
.gm-kaimono-big { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; transition: opacity .25s; }
.gm-kaimono-big > * { grid-area: 1 / 1; }
.gm-kaimono-big img { width: min(80%, 320px); height: auto; filter: drop-shadow(0 6px 10px rgb(0 0 0 / .6)); animation: gm-kaimono-bigin .45s cubic-bezier(.2, 1.6, .4, 1) both; }
.gm-kaimono-big.is-ng img { width: min(66%, 260px); animation-name: gm-kaimono-drop; animation-duration: .4s; }
.gm-kaimono-big.is-out { opacity: 0; }
@keyframes gm-kaimono-bigin { from { transform: scale(.2) rotate(-8deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes gm-kaimono-drop { from { transform: translateY(-30px); opacity: 0; } 70% { transform: translateY(4px); } to { transform: none; opacity: 1; } }
.gm-kaimono-rays { width: 110%; aspect-ratio: 1; border-radius: 50%; background: repeating-conic-gradient(rgb(255 236 150 / .55) 0 10deg, transparent 10deg 22deg); -webkit-mask: radial-gradient(closest-side, #000 30%, transparent); mask: radial-gradient(closest-side, #000 30%, transparent); animation: gm-kaimono-spin 2s linear both; }
@keyframes gm-kaimono-spin { from { transform: rotate(0); opacity: 0; } 15% { opacity: 1; } to { transform: rotate(50deg); opacity: .6; } }
.gm-kaimono-burst { width: 0; height: 0; position: relative; }
.gm-kaimono-burst i { position: absolute; left: -8px; top: -8px; width: 16px; height: 16px; border-radius: 50%; animation: gm-kaimono-fly var(--t) cubic-bezier(.15, .7, .3, 1) both; }
.gm-kaimono-burst i.is-coin { background: radial-gradient(circle at 35% 30%, #fff6c8, #f2c14e 55%, #a8741c); box-shadow: 0 0 6px #ffd66b; }
.gm-kaimono-burst i.is-star { background: #fff3a8; border-radius: 0; clip-path: polygon(50% 0, 61% 38%, 100% 50%, 61% 62%, 50% 100%, 39% 62%, 0 50%, 39% 38%); }
.gm-kaimono-burst i.is-petal { width: 12px; height: 9px; border-radius: 60% 40%; background: #ffb3cf; }

/* 答え合わせ（舞台の 上に 重ねる。クリームの 札に 金の ふち） */
.gm-kaimono-check {
  position: absolute; left: 8px; right: 8px; top: 8px; z-index: 10;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 8px 10px 10px; border-radius: 16px;
  background: linear-gradient(180deg, #fffaf0, #f6e6c4); color: #4a2a12;
  box-shadow: inset 0 0 0 2px var(--km-gold), 0 8px 18px rgb(0 0 0 / .5);
  max-height: calc(100% - 16px); overflow-y: auto; overscroll-behavior: contain;
  animation: gm-kaimono-in .25s ease-out both;
}
.gm-kaimono-check[hidden] { display: none; }
@keyframes gm-kaimono-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.gm-kaimono-check-h { margin: 0; font-size: var(--fs-sm); font-weight: 700; color: #6a4a2e; }
.gm-kaimono-check-list { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 10px; margin: 0; padding: 0; list-style: none; }
.gm-kaimono-check-list li { display: flex; flex-direction: column; align-items: center; }
.gm-kaimono-check-list img { width: 42px; height: 42px; object-fit: contain; }
.gm-kaimono-check-list span { font-size: var(--fs-sm); font-weight: 700; color: #4a2a12; line-height: 1.1; white-space: nowrap; }
.gm-kaimono-check-list small { font-size: .8em; }
.gm-kaimono-formula { margin: 2px 0 0; font-size: var(--fs-xl); font-weight: 700; line-height: 1.3; color: #8a1024; text-align: center; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.gm-kaimono-check-miss { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 2px 4px; margin: 0; font-size: var(--fs-xs); color: #6a4a2e; }
.gm-kaimono-check-miss span { margin-right: 4px; }
.gm-kaimono-check-miss img { width: 28px; height: 28px; object-fit: contain; opacity: .75; }
.gm-kaimono-result { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 2px 16px; margin: 0; font-weight: 700; font-size: var(--fs-lg); line-height: 1.3; }
.gm-kaimono-result small { font-size: .78em; }
.gm-kaimono-res { white-space: nowrap; }
.gm-kaimono-res.is-ok { color: var(--ok); }
.gm-kaimono-res.is-ng { color: var(--ng); }

/* ---- ドック（高さを 変えない: 走って いる 間も 4択と 同じ 高さ）・答えの 札 ---- */
.gm-kaimono-dock { min-height: calc(var(--tap-lg) * 2 + 10px + 22px); align-content: center; }
.gm-kaimono-dock:has(> .btn-primary) { min-height: 0; }
.gm-kaimono-dock-note { margin: 0; text-align: center; color: #fff; text-shadow: 0 1px 3px rgb(10 5 30 / .9); font-size: var(--fs-md); font-weight: 700; }
.gm-kaimono-opts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.gm-kaimono-opt {
  position: relative; display: flex; align-items: center; justify-content: center; min-height: var(--tap-lg); padding: 0 4px;
  border: 12px solid transparent; border-image: url(../assets/ui/skin/tile.webp) 46 fill / 12px stretch; background: none;
  color: #4a2a12; font-weight: 700; font-size: var(--fs-xl); line-height: 1; font-variant-numeric: tabular-nums; white-space: nowrap;
  filter: drop-shadow(0 4px 4px rgb(0 0 0 / .4)); transition: transform .1s ease-out, filter .15s, opacity .15s;
  animation: gm-kaimono-optin .3s var(--ease) both; animation-delay: calc(var(--k) * 50ms);
}
@keyframes gm-kaimono-optin { from { transform: translateY(10px) scale(.92); opacity: 0; } to { transform: none; opacity: 1; } }
.gm-kaimono-opt small { font-size: .62em; font-weight: 700; margin-left: 2px; }
.gm-kaimono-opt:active:not(:disabled) { transform: translateY(3px) scale(.97); }
.gm-kaimono-opt:focus-visible { outline: 3px solid #fff3a8; outline-offset: 2px; }
.gm-kaimono-opt:disabled { opacity: .45; }
.gm-kaimono-opt.is-ok, .gm-kaimono-opt.is-answer { opacity: 1; filter: drop-shadow(0 0 0 #ffe08a) drop-shadow(0 0 10px #ffd66b); color: #23773f; animation: gm-kaimono-yes .4s cubic-bezier(.2, 1.6, .4, 1); }
.gm-kaimono-opt.is-ng { opacity: 1; color: #b24f06; animation: gm-kaimono-shake .4s ease-out; }
@keyframes gm-kaimono-yes { from { transform: scale(.9); } to { transform: none; } }
@keyframes gm-kaimono-shake { 20% { transform: translateX(-6px); } 40% { transform: translateX(6px); } 60% { transform: translateX(-4px); } 80% { transform: translateX(3px); } }
.gm-kaimono-optmark { position: absolute; left: -6px; top: 50%; transform: translateY(-50%); width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; font-size: 16px; color: #fff; background: #23773f; }
.is-ng > .gm-kaimono-optmark { background: #b24f06; }

/* 文字「大」「特大」: ひと言を 詰め、舞台を 残す */
html.text-large .gm-kaimono-line, html.text-xlarge .gm-kaimono-line { font-size: var(--fs-sm); line-height: 1.25; }
html.text-xlarge .gm-kaimono-menu span { font-size: 14px; }
html.text-xlarge .gm-kaimono-menu img { width: 26px; height: 26px; }
html.text-xlarge .gm-kaimono-dock { min-height: calc(52px * 2 + 10px + 22px); }  /* 走る 間と 4択で 舞台の 大きさを 変えない */
html.text-xlarge .gm-kaimono-opt { min-height: 52px; font-size: var(--fs-lg); }
html.text-xlarge .gm-kaimono-table-list img { width: 40px; height: 40px; }
html.text-xlarge .gm-kaimono-formula { font-size: var(--fs-lg); }
html.text-xlarge .gm-kaimono-stagewrap { min-height: 160px; }
html.text-xlarge .gm-kaimono-pop { font-size: var(--fs-lg); }

@media (prefers-reduced-motion: reduce) {
  .gm-kaimono-piled.is-new, .gm-kaimono-check, .gm-kaimono-opt, .gm-kaimono-hostimg, .gm-kaimono-cart.is-bump * { animation: none !important; }
  .gm-kaimono-rays, .gm-kaimono-burst, .gm-kaimono-spark { display: none; }
  .gm-kaimono-big img { animation-duration: .01s; }
}
html.reduce-motion .gm-kaimono-hostimg { animation: none; }
.gm-kaimono-slow .gm-kaimono-opt { animation: none; }

/* 小さい 画面（360×640 など）: 看板と 品書きを 詰める */
@media (max-height: 660px) {
  .gm-kaimono-intro { gap: 6px; }
  .gm-kaimono-sign { width: min(76%, 300px); }
  .gm-kaimono-table { padding: 8px; }
  .gm-kaimono-table-list img { width: 42px; height: 42px; }
}
