/*
 * すきまっち — 表示層のスタイル。
 *
 * 情景は「下ろしたシャッターのすきまを、荷物が一瞬だけ通りすぎる」。
 * シャッターは窓の全高を覆い、見えるのはすきまの中だけである。
 * 質感はベタ塗りのフラット・ポップに統一する。グラデーション、ぼかし、
 * 光彩は使わない。唯一の立体表現は、面の下に敷く同系濃色の「厚み」で、
 * 押下時にその厚みぶんだけ沈める。ぼかしを持たないぶん、すきまを
 * 横切る荷物が画面でいちばんコントラストの高い要素になる。
 *
 * 色は必ずトークン経由で参照する。地色に対する文字色は、差し色の上でも
 * すべて --ink を使い、4.5:1 以上を保つ。
 */

/* ============================================================
   1. トークン
   ============================================================ */

:root {
  color-scheme: light;

  /* --- 地と面 --- */
  --cream: #fff3e0;
  --cream-deep: #ffe6c4;
  --card: #ffffff;

  /* --- 墨 --- */
  --ink: #2b2723;
  --ink-soft: #6b6259;

  /* --- 差し色。文字は常に --ink を載せる --- */
  --tomato: #ff5252;
  --tomato-deep: #d63b3b;
  --sun: #ffc53d;
  --sun-deep: #dfa21c;
  --mint: #17bfa0;
  --mint-deep: #0e9b81;
  --sky: #3f9bf0;
  --sky-deep: #2a7bc9;

  /* --- 観察窓 --- */
  --far-sky: #a9dff2;        /* 壁の奥。一色のべた塗りにして、荷物の輪郭だけを見せる */
  --panel-face: #ded8cc;     /* シャッターのスラット面。空とは色相で分け、太い墨の枠で切る */
  --panel-groove: #a2977f;   /* スラットの境目 */
  --slat: 1.5rem;
  /* すきまの幅。壁の裏は見えないので、この値がそのまま難度になる。初期値は狭く、
     間違えるたびにJSがこの変数を広げる。壁の幅は残りを二等分して決まる。 */
  --gap-w: 26%;
  /* 照準と荷物が通る高さ。すきまの中央に置く。両者を同じ値から取ることで、
     見る位置と実際に通る位置がずれない。 */
  --lane-y: 50%;
  --item-size: clamp(3.6rem, 17vw, 4.8rem);

  /* --- 判定 --- */
  --good: var(--mint);
  --good-deep: var(--mint-deep);
  --bad: var(--tomato);
  --bad-deep: var(--tomato-deep);

  /* --- 寸法 --- */
  --tap: 44px;
  --edge: 3px;
  --lift: 4px;
  --r-lg: 22px;
  --r-md: 16px;
  --r-sm: 12px;

  font-family:
    "Hiragino Maru Gothic ProN", "ヒラギノ丸ゴ ProN W4",
    "M PLUS Rounded 1c", "Zen Maru Gothic",
    "Hiragino Sans", "Yu Gothic", YuGothic, system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }

html {
  min-height: 100%;
  background: var(--cream);
  -webkit-text-size-adjust: 100%;
}

body {
  min-width: 280px;
  min-height: 100%;
  margin: 0;
  color: var(--ink);
  background: var(--cream);
  font-size: 16px;
  line-height: 1.6;
  overscroll-behavior: none;
}

button, input { font: inherit; }
button { color: var(--ink); cursor: pointer; }
[hidden] { display: none !important; }

:focus { outline: none; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ============================================================
   2. 外枠
   ============================================================ */

.app {
  position: relative;
  width: min(100%, 30rem);
  min-height: 100svh;
  margin-inline: auto;
  padding:
    calc(env(safe-area-inset-top) + 1.75rem)
    calc(env(safe-area-inset-right) + 1rem)
    calc(env(safe-area-inset-bottom) + 1rem)
    calc(env(safe-area-inset-left) + 1rem);
}

@supports (min-height: 100dvh) { .app { min-height: 100dvh; } }

/* 地の上に置く唯一の装飾。水玉ひとつだけに絞り、面の数を増やさない。 */
.app__dots {
  position: fixed;
  z-index: -1;
  inset: 0;
  background-image: radial-gradient(var(--cream-deep) 2.5px, transparent 2.6px);
  background-size: 26px 26px;
}

.topbar {
  display: grid;
  grid-template-columns: var(--tap) minmax(0, 1fr) var(--tap);
  align-items: center;
  gap: .5rem;
  min-height: var(--tap);
}

.topbar::before {
  grid-column: 1;
  width: var(--tap);
  height: var(--tap);
  content: "";
}

.masthead-home {
  grid-column: 2;
  display: grid;
  place-items: center;
  justify-self: center;
  width: min(clamp(7.25rem, 39vw, 9.25rem), 100%);
  min-width: var(--tap);
  min-height: var(--tap);
  aspect-ratio: 2 / 1;
  padding: 0;
  border: 0;
  background: transparent;
  transition: transform .12s ease-out;
}

.masthead-home:hover { background: transparent; }
.masthead-home:active { transform: translateY(var(--lift)); }

.masthead-art {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 2 / 1;
  background-image: url("data:image/png;base64,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");
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}

.app-version {
  position: absolute;
  z-index: 1;
  top: calc(env(safe-area-inset-top) + .35rem);
  left: calc(env(safe-area-inset-left) + .35rem);
  padding: .12rem .24rem;
  color: var(--ink-soft);
  background: var(--card);
  border: var(--edge) solid var(--ink);
  border-radius: 999px;
  font-size: .55rem;
  font-weight: 800;
  letter-spacing: .03em;
  line-height: 1;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}

.topbar > .round-button {
  grid-column: 3;
  justify-self: end;
}

.round-button {
  display: grid;
  place-items: center;
  width: var(--tap);
  height: var(--tap);
  padding: .6rem;
  border: var(--edge) solid var(--ink);
  border-radius: 50%;
  background: var(--card);
  box-shadow: 0 var(--lift) 0 var(--ink);
  transition: transform .12s ease-out, box-shadow .12s ease-out;
}

.round-button svg {
  width: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.round-button:hover { background: var(--cream-deep); }
.round-button:active { transform: translateY(var(--lift)); box-shadow: 0 0 0 var(--ink); }

.screen { padding-block: .75rem; }

/* ============================================================
   3. ホーム
   ============================================================ */

.home {
  display: grid;
  align-content: start;
  gap: .25rem;
  min-height: calc(100svh - 5rem);
}

/* 看板はプレイ画面と同じ構成にする。シャッターが全高を覆い、見えるのはすきまの
   中だけ。看板と本番で見え方が違うと、遊ぶ前の期待がずれる。 */
.stage {
  width: min(100%, 17rem);
  margin: .5rem auto .25rem;
}

.stage__window {
  position: relative;
  height: 6.5rem;
  overflow: hidden;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--far-sky);
}

.stage__panel {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 30%;
  background-color: var(--panel-face);
  background-image:
    linear-gradient(var(--panel-groove), var(--panel-groove)),
    repeating-linear-gradient(
      180deg, transparent 0 1.1rem, var(--panel-groove) 1.1rem calc(1.1rem + 2px)
    );
  background-size: calc(.26rem + var(--edge)) 100%, 100% 100%;
  background-repeat: no-repeat, repeat;
  background-origin: border-box, padding-box;
}

.stage__panel--left {
  left: 0;
  border-right: var(--edge) solid var(--ink);
  background-position: right center, 0 0;
}

.stage__panel--right {
  right: 0;
  border-left: var(--edge) solid var(--ink);
  background-position: left center, 0 0;
}

.stage__gap {
  position: absolute;
  top: 0;
  right: 30%;
  bottom: 0;
  left: 30%;
  overflow: hidden;
}

.stage__box {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 2.2rem;
  height: 2.2rem;
  margin: -1.1rem 0 0 -1.1rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  background: var(--sun);
  animation: stage-pass 3.6s linear infinite;
}

@keyframes stage-pass {
  0%   { transform: translateX(-7rem); }
  42%  { transform: translateX(0); }
  58%  { transform: translateX(0); }
  100% { transform: translateX(7rem); }
}

.home h1 {
  margin: .5rem 0 0;
  font-size: clamp(1.85rem, 8.5vw, 2.5rem);
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -.01em;
}

.home h1 em {
  display: inline-block;
  padding: 0 .3rem;
  border-radius: var(--r-sm);
  background: var(--sun);
  font-style: normal;
}

.home__lead {
  margin: .6rem 0 1.1rem;
  color: var(--ink-soft);
  font-size: .9rem;
  line-height: 1.7;
}

.menu { display: grid; gap: .7rem; }

.menu__item {
  display: grid;
  grid-template-columns: 2.9rem 1fr 1.2rem;
  align-items: center;
  gap: .75rem;
  width: 100%;
  min-height: 4.5rem;
  padding: .7rem .85rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-lg);
  text-align: left;
  background: var(--card);
  box-shadow: 0 var(--lift) 0 var(--ink);
  transition: transform .12s ease-out, box-shadow .12s ease-out;
}

.menu__item:active { transform: translateY(var(--lift)); box-shadow: 0 0 0 var(--ink); }
.menu__item--mint { background: var(--mint); }
.menu__item--sun { background: var(--sun); }
.menu__item--sky { background: var(--sky); }

.menu__icon {
  display: grid;
  place-items: center;
  width: 2.9rem;
  height: 2.9rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  background: var(--cream);
}

.menu__icon svg { width: 1.4rem; }

.menu svg {
  fill: none;
  stroke: var(--ink);
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.menu__item--mint .menu__icon svg path { fill: var(--ink); stroke: none; }

.menu__body strong,
.menu__body small { display: block; }
.menu__body strong { font-size: 1.05rem; font-weight: 800; }
.menu__body small { font-size: .74rem; line-height: 1.5; }
.menu__arrow { width: 1.2rem; }

.link-button {
  min-height: var(--tap);
  margin-top: .9rem;
  padding: .4rem .6rem;
  border: 0;
  border-radius: var(--r-sm);
  background: transparent;
  font-weight: 800;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

.link-button:hover { background: var(--cream-deep); }
.link-button--small { margin: 0; font-size: .82rem; }

/* こたえかたの切替え。ホームに1つだけ置き、全モードへ効かせる。 */
.answer-style {
  margin-top: 1rem;
  padding: .75rem .85rem .6rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--card);
}

.answer-style__title { margin: 0; font-size: .82rem; font-weight: 800; }
.answer-style .tabs { margin: .5rem 0 0; }

.answer-style__note {
  margin: .5rem 0 0;
  color: var(--ink-soft);
  font-size: .74rem;
  line-height: 1.5;
}

/* ============================================================
   4. プレイ画面
   ============================================================ */

.game {
  display: grid;
  align-content: start;
  min-height: calc(100svh - 5rem);
}

.hud {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: .75rem;
  margin: 0;
}

.hud__count, .hud__score { margin: 0; }

.hud__mode {
  display: inline-block;
  margin-bottom: .2rem;
  padding: .12rem .55rem;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--card);
  font-size: .7rem;
  font-weight: 800;
}

.hud__count strong {
  display: block;
  font-size: 1.7rem;
  font-weight: 800;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.hud__count small { margin-left: .2rem; font-size: .78rem; font-weight: 700; }

.hud__score { text-align: right; }
.hud__score span { display: block; font-size: .7rem; font-weight: 700; color: var(--ink-soft); }
.hud__score output { font-size: 1.5rem; font-weight: 800; font-variant-numeric: tabular-nums; }

.meter {
  height: .85rem;
  margin: .6rem 0 .8rem;
  padding: 2px;
  overflow: hidden;
  border: var(--edge) solid var(--ink);
  border-radius: 999px;
  background: var(--card);
}

.meter i {
  display: block;
  width: 10%;
  height: 100%;
  border-radius: 999px;
  background: var(--tomato);
  transition: width .25s ease-out;
}

/* --- 検品窓 --- */

.scanner { margin: 0; }

.scanner__window {
  position: relative;
  height: clamp(11rem, 32dvh, 15.5rem);
  overflow: hidden;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-lg);
  background: var(--far-sky);
}

/* 左右の壁は下ろしたシャッター。窓の全高を覆い、荷物はこの裏を通って、すきまに
   いる間だけ見える。幅はすきまの残りを二等分して決まる。
   スラットは幅を取り、境目だけを濃い線で切る。線を細かく刻むと横縞の面積が増えて
   目が奥へ引かれ、すきまを見張る邪魔になる。すきま側には縦のガイドレールを1本置く。
   レールは border-box 基準で敷き、墨の枠の下まで届かせる。padding-box 基準だと枠との
   あいだにスラット面が1本の細い線として残る。 */
.scanner__panel {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  width: calc((100% - var(--gap-w)) / 2);
  background-color: var(--panel-face);
  background-image:
    linear-gradient(var(--panel-groove), var(--panel-groove)),
    repeating-linear-gradient(
      180deg, transparent 0 var(--slat), var(--panel-groove) var(--slat) calc(var(--slat) + 2px)
    );
  background-size: calc(.34rem + var(--edge)) 100%, 100% 100%;
  background-repeat: no-repeat, repeat;
  background-origin: border-box, padding-box;
  transition: width .3s ease-out;
}

.scanner__panel--left {
  left: 0;
  border-right: var(--edge) solid var(--ink);
  background-position: right center, 0 0;
}

.scanner__panel--right {
  right: 0;
  border-left: var(--edge) solid var(--ink);
  background-position: left center, 0 0;
}

/* 壁の間のすきま。ここだけが見え、荷物の見える範囲を決める。 */
.scanner__gap {
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc((100% - var(--gap-w)) / 2);
  width: var(--gap-w);
  overflow: hidden;
  transition: left .3s ease-out, width .3s ease-out;
}

/* 見る場所を先に固定させる照準。荷物が出ている間は JS が隠す。 */
.scanner__guide {
  position: absolute;
  top: var(--lane-y);
  left: 50%;
  width: 1.7rem;
  height: 1.7rem;
  transform: translate(-50%, -50%);
}

.scanner__guide i {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: var(--edge);
  margin-top: calc(var(--edge) / -2);
  border-radius: 999px;
  background: var(--ink);
}

.scanner__guide i:last-child { transform: rotate(90deg); }

.scanner__item {
  position: absolute;
  z-index: 0;
  top: calc(var(--lane-y) - var(--item-size) / 2);
  left: 0;
  width: var(--item-size);
  height: var(--item-size);
  min-width: var(--item-size);
  min-height: var(--item-size);
  color: var(--ink);
  will-change: transform;
}

/* 荷物と候補の絵。素材はSVGファイルを img で読むので、比率を保って収める。 */
.object-icon { display: block; width: var(--item-size); height: var(--item-size); object-fit: contain; }
.scanner__item .object-icon { width: 100%; height: 100%; }

/* 秒読みはシャッター中央へ重ねる。地色を持つ白い札にして、空とシャッターの
   どちらの上でも読めるようにし、「ゴー！」も一行のまま保つ。 */
.scanner__count {
  position: absolute;
  z-index: 3;
  top: 50%;
  left: 50%;
  width: max-content;
  min-width: 5.5rem;
  max-width: calc(100% - 2rem);
  padding: .1rem 1rem .25rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-lg);
  color: var(--ink);
  background: var(--card);
  text-align: center;
  font-size: clamp(2.4rem, 13vw, 3.6rem);
  font-weight: 800;
  line-height: 1.25;
  white-space: nowrap;
  transform: translate(-50%, -50%);
}

.scanner__feedback {
  position: absolute;
  z-index: 3;
  top: 44%;
  left: 50%;
  width: calc(100% - 1rem);
  max-width: 18rem;
  min-height: 5.25rem;
  margin: 0;
  padding: .2rem .5rem;
  display: grid;
  grid-template-columns: minmax(3rem, 4.25rem) minmax(0, 1fr);
  align-items: center;
  gap: .5rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  color: var(--ink);
  background: var(--card);
  font-size: clamp(.8rem, 3.8vw, 1rem);
  font-weight: 800;
  line-height: 1.3;
  overflow-wrap: anywhere;
  transform: translate(-50%, -50%);
}

/* 回答後も正解の絵を同じ領域に予約し、名前だけの場合と高さを変えない。 */
.round-feedback__icon {
  display: block;
  width: clamp(3rem, 18vw, 4.25rem);
  height: clamp(3rem, 18vw, 4.25rem);
  max-width: 100%;
  aspect-ratio: 1;
  object-fit: contain;
  justify-self: center;
}

.round-feedback__label {
  min-width: 0;
  text-align: left;
  overflow-wrap: anywhere;
}

.next-round-button {
  position: absolute;
  z-index: 3;
  top: 72%;
  bottom: auto;
  left: 50%;
  min-width: 7rem;
  min-height: var(--tap);
  padding: .45rem 1rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--sun);
  font-weight: 800;
  box-shadow: 0 var(--lift) 0 var(--ink);
  transform: translate(-50%, -50%);
}

.next-round-button:active {
  box-shadow: 0 0 0 var(--ink);
  transform: translate(-50%, calc(-50% + var(--lift)));
}

.scanner__prompt {
  margin: .5rem 0 0;
  color: var(--ink-soft);
  text-align: center;
  font-size: .78rem;
  font-weight: 700;
}

/* --- 回答 --- */

.answer { padding-top: .8rem; }

.answer__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .5rem;
  margin-bottom: .55rem;
}

.answer__head h2 { margin: 0; font-size: 1.05rem; font-weight: 800; }

.answer__timer {
  min-width: 4rem;
  text-align: right;
  font-size: .9rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.choices {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}

.choice {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 0;
  min-height: clamp(5.5rem, 15dvh, 7rem);
  padding: .5rem;
  overflow: hidden;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--card);
  box-shadow: 0 var(--lift) 0 var(--ink);
  transition: transform .12s ease-out, box-shadow .12s ease-out, background-color .15s ease-out;
}

.choice:not(:disabled):hover { background: var(--cream-deep); }
.choice:not(:disabled):active { transform: translateY(var(--lift)); box-shadow: 0 0 0 var(--ink); }

.choice:disabled { cursor: default; background: var(--cream-deep); }

.choice[data-state="correct"] { background: var(--good); box-shadow: 0 var(--lift) 0 var(--good-deep); }
.choice[data-state="wrong"] { background: var(--bad); box-shadow: 0 var(--lift) 0 var(--bad-deep); }
.choice[data-state="selected"] { background: var(--sun); box-shadow: 0 var(--lift) 0 var(--sun-deep); }
.choice[data-state="dim"] { opacity: .45; }

/* 数字キー1〜4での回答に対応する番号。位置だけで意味を持たせない。 */
.choice::after {
  content: attr(data-key);
  position: absolute;
  top: .3rem;
  left: .35rem;
  display: grid;
  place-items: center;
  width: 1.35rem;
  height: 1.35rem;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--cream);
  font-size: .68rem;
  font-weight: 800;
}

.choice .object-icon { width: min(76%, 5.2rem); height: min(76%, 5.2rem); color: var(--ink); }

/* もじで答えるときの候補。名前が長くても2行で収め、札の高さを揃える。 */
.choice__name {
  max-width: 100%;
  padding: 0 .3rem;
  color: var(--ink);
  text-align: center;
  font-size: clamp(.9rem, 4.2vw, 1.15rem);
  font-weight: 800;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.game-status {
  min-height: 1.5rem;
  margin: .65rem 0 0;
  color: var(--ink-soft);
  text-align: center;
  font-size: .82rem;
  font-weight: 700;
}

.game-status[data-tone="good"] { color: var(--mint-deep); }
.game-status[data-tone="bad"] { color: var(--tomato-deep); }

/* ============================================================
   5. 結果
   ============================================================ */

.result {
  display: grid;
  justify-items: center;
  align-content: center;
  min-height: calc(100svh - 5rem);
  text-align: center;
}

.result__stamp {
  position: relative;
  display: grid;
  place-items: center;
  width: 5.5rem;
  height: 5.5rem;
  border: var(--edge) solid var(--ink);
  border-radius: 50%;
  background: var(--sun);
  box-shadow: 0 var(--lift) 0 var(--ink);
}

/* 出来ばえは色だけで伝えない。JS が data-result を与え、CSS は色と添え字を替える。 */
.result__stamp[data-result="great"] { background: var(--sun); }
.result__stamp[data-result="good"] { background: var(--mint); }
.result__stamp[data-result="soso"] { background: var(--card); }
.result__stamp[data-result="win"] { background: var(--sun); }
.result__stamp[data-result="draw"] { background: var(--mint); }
.result__stamp[data-result="lose"] { background: var(--card); }

.result__stamp::after {
  content: attr(data-label);
  position: absolute;
  bottom: -1.05rem;
  padding: .1rem .55rem;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--cream);
  font-size: .66rem;
  font-weight: 800;
  white-space: nowrap;
}

.result__stamp:not([data-label])::after { content: none; }

.result__stamp svg {
  width: 3rem;
  fill: none;
  stroke: var(--ink);
  stroke-width: 6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.result__mode {
  margin: 1.1rem 0 0;
  padding: .15rem .7rem;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--card);
  font-size: .74rem;
  font-weight: 800;
}

.result h1 { margin: .5rem 0 0; font-size: 2rem; font-weight: 800; }

.result__score { margin: .5rem 0 1.1rem; }
.result__score strong {
  font-size: clamp(3.2rem, 16vw, 4.6rem);
  font-weight: 800;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.result__score span { margin-left: .3rem; font-weight: 800; }

.result__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .7rem;
  width: 100%;
  margin: 0 0 1.1rem;
}

.result__stats div {
  padding: .7rem .5rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--card);
}

.result__stats dt { font-size: .72rem; font-weight: 700; color: var(--ink-soft); }
.result__stats dd { margin: .2rem 0 0; font-size: 1.15rem; font-weight: 800; }

.result__notice {
  min-height: 1.6rem;
  margin: 0 0 1rem;
  color: var(--ink-soft);
  font-size: .82rem;
  line-height: 1.6;
}

.result__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .7rem;
  width: 100%;
}

/* ============================================================
   6. ボタン
   ============================================================ */

.button {
  min-height: var(--tap);
  padding: .6rem .9rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--card);
  font-weight: 800;
  box-shadow: 0 var(--lift) 0 var(--ink);
  transition: transform .12s ease-out, box-shadow .12s ease-out, background-color .15s ease-out;
}

.button:hover { background: var(--cream-deep); }
.button:active { transform: translateY(var(--lift)); box-shadow: 0 0 0 var(--ink); }
.button--go { background: var(--tomato); }
.button--go:hover { background: var(--tomato-deep); }
.button:disabled { cursor: not-allowed; background: var(--cream-deep); opacity: .6; }
.button:disabled:active { transform: none; box-shadow: 0 var(--lift) 0 var(--ink); }

/* ============================================================
   7. ランキング専用画面
   ============================================================ */

.ranking-screen {
  display: grid;
  align-content: start;
  gap: .8rem;
  min-height: calc(100svh - 5rem);
}

.ranking-screen__head {
  display: flex;
  align-items: center;
  gap: .5rem;
}

.ranking-screen__head > .round-button { flex: none; }

.ranking-screen__head > div { min-width: 0; }

.ranking-screen__eyebrow {
  margin: 0;
  color: var(--ink-soft);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .08em;
}

.ranking-screen__head h1 { margin: 0; font-size: 1.7rem; font-weight: 800; line-height: 1.25; }

.ranking-screen__status {
  margin: .8rem 0;
  padding: .6rem .75rem;
  border: 2px solid var(--ink);
  border-radius: var(--r-sm);
  background: var(--card);
  font-size: .8rem;
  font-weight: 700;
}

.ranking-screen__content {
  display: grid;
  gap: .8rem;
  min-width: 0;
}

.ranking-screen__foot {
  margin: .1rem .2rem 0;
  color: var(--ink-soft);
  font-size: .7rem;
  line-height: 1.6;
}

.panel {
  margin-top: .8rem;
  padding: .9rem;
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-md);
  background: var(--card);
}

.panel__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
}

.panel h2,
.panel h3 { margin: 0; font-size: 1rem; font-weight: 800; }

.panel__note {
  margin: .6rem 0 0;
  color: var(--ink-soft);
  font-size: .78rem;
  line-height: 1.6;
}

.account-panel {
  display: grid;
  gap: .65rem;
}

.profile-form {
  display: grid;
  gap: .3rem;
}

.profile-form label {
  font-size: .76rem;
  font-weight: 700;
}

.profile-form__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .5rem;
}

.profile-form input {
  min-width: 0;
  min-height: var(--tap);
  padding: .5rem .7rem;
  color: var(--ink);
  background: var(--cream);
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  font-weight: 800;
}

.profile-form__guidance {
  min-height: 1.2rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: .72rem;
  line-height: 1.5;
}

.recovery-details {
  border-top: 2px solid var(--cream-deep);
}

.recovery-details summary {
  min-height: var(--tap);
  padding: .6rem .1rem .1rem;
  cursor: pointer;
  font-weight: 800;
}

.recovery-details__content {
  display: grid;
  gap: .65rem;
  padding-top: .4rem;
}

.recovery-code {
  display: grid;
  gap: .4rem;
}

.recovery-code__row,
.recovery-form__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .5rem;
}

.recovery-code__value {
  min-width: 0;
  padding: .55rem .65rem;
  overflow-wrap: anywhere;
  color: var(--ink);
  background: var(--cream);
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .72rem;
  letter-spacing: .08em;
}

.recovery-code__status {
  min-height: 1.4rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: .72rem;
  line-height: 1.5;
}

.recovery-reissue {
  display: grid;
  gap: .3rem;
  padding-top: .65rem;
  border-top: 2px solid var(--cream-deep);
}

.recovery-reissue__note,
.recovery-reissue__status {
  min-height: 1.2rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: .72rem;
  line-height: 1.5;
}

.recovery-form {
  display: grid;
  gap: .3rem;
  padding-top: .65rem;
  border-top: 2px solid var(--cream-deep);
}

.recovery-form label {
  font-size: .76rem;
  font-weight: 700;
}

.recovery-form input {
  min-width: 0;
  min-height: var(--tap);
  padding: .5rem .7rem;
  color: var(--ink);
  background: var(--cream);
  border: var(--edge) solid var(--ink);
  border-radius: var(--r-sm);
  font-weight: 800;
  letter-spacing: .08em;
}

.form-error {
  min-height: 1.2rem;
  margin: 0;
  color: var(--tomato-deep);
  font-size: .76rem;
  line-height: 1.5;
}

.form-error:empty { display: none; }

.tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .4rem;
  margin: .8rem 0 0;
}

.tabs button {
  min-height: var(--tap);
  border: 2px solid var(--ink);
  border-radius: var(--r-sm);
  background: var(--cream);
  font-weight: 800;
}

.tabs button[aria-pressed="true"] { background: var(--sun); }

.chip {
  padding: .2rem .6rem;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--cream);
  font-size: .7rem;
  font-weight: 800;
  white-space: nowrap;
}

.ranking {
  min-height: 3rem;
  margin: .7rem 0 0;
  padding-left: 1.9rem;
  font-size: .84rem;
}

.ranking li {
  display: flex;
  justify-content: space-between;
  gap: .6rem;
  padding: .4rem .2rem;
  border-bottom: 2px solid var(--cream-deep);
  overflow-wrap: anywhere;
}

.ranking li strong { flex: none; margin-left: auto; font-weight: 800; }

.ranking-challenge { width: 100%; margin-top: .7rem; }

/* ============================================================
   8. 画面サイズと動きの調整
   ============================================================ */

@media (max-height: 700px) {
  .home { min-height: calc(100svh - 5.5rem); }
  .stage { width: 12rem; margin-bottom: 0; }
  .stage__window { height: 5rem; }
  .stage__box { width: 1.8rem; height: 1.8rem; margin-left: -.9rem; }
  .home h1 { font-size: 1.7rem; }
  .home__lead { margin-block: .5rem .8rem; font-size: .82rem; }
  .menu { gap: .55rem; }
  .menu__item { min-height: 3.9rem; }
  .scanner__window { height: 10rem; }
  .choice { min-height: 5.5rem; }
}

@media (min-width: 48rem) {
  .app { width: min(100%, 33rem); }
  .home { align-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }

  .stage__box { transform: translateX(0); }
}

/* 結果共有。外部サービスのスクリプトを読み込まず、操作時だけ共有する。 */
.result-share { width: 100%; max-width: 26rem; margin: .4rem 0 .8rem; }
.result-share__native { width: 100%; margin-bottom: .55rem; }
.result-share__links { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }
.result-share button, .result-share a {
  display: flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px; text-decoration: none;
  font-size: .85rem; letter-spacing: normal; color: inherit;
}
.result-share [hidden] { display: none; }
.result-share__status { margin: .45rem 0 0; font-size: .75rem; line-height: 1.5; }
.result-share__status:empty { display: none; }
.result-share textarea { width: 100%; margin-top: .5rem; font: inherit; font-size: .8rem; }
