:root {
  color-scheme: light;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Hiragino Sans", "Noto Sans JP", sans-serif;
  --accent: #1f6feb;
  --panel: #f3f5f8;
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body { background: #fff; color: #222; }

.app {
  display: grid;
  grid-template-columns: minmax(320px, 660px) minmax(320px, 1fr);
  gap: 12px;
  height: 100%;
  padding: 10px;
}
@media (max-width: 1000px) {
  .app { grid-template-columns: 1fr; height: auto; }
}

.capture header { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.capture h1 { font-size: 1.1rem; margin: 0; }
.capture p { margin: 6px 0; }
.lead { font-size: .95rem; }
.hint { color: #555; font-size: .85rem; }

.stage { position: relative; width: 100%; max-width: 640px; aspect-ratio: 4 / 3; background: #111; border-radius: 6px; overflow: hidden; }
.stage canvas { width: 100%; height: 100%; display: block; }
.stage .notice {
  position: absolute; inset: auto 0 0 0; padding: 6px 10px;
  background: rgba(0, 0, 0, .6); color: #fff; font-size: .85rem;
}
.stage .notice:empty { display: none; }

.controls { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; margin: 8px 0; font-size: .9rem; }
.controls label { display: inline-flex; align-items: center; gap: 4px; }
button, input[type="file"]::file-selector-button {
  font: inherit; padding: 4px 12px; border-radius: 6px; border: 1px solid #bbb; background: #fafafa; cursor: pointer;
}
button.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
button:disabled { opacity: .5; cursor: default; }
.powered { font-size: .8rem; color: #666; }

/* サンプルは正方形に描かれるので、枠も幅に合わせた正方形にして上下に余白を作らない（高さは画面の半分まで）。残りは全部一覧に回す */
.panes { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 12px; min-height: 0; }
.panes #demo { aspect-ratio: 1 / 1; height: auto; max-height: calc(50vh - 16px); }
.panes iframe { width: 100%; height: 100%; border: 0; border-radius: 6px; background: var(--panel); }
@media (max-width: 1000px) { .panes { grid-template-rows: auto 80vh; } .panes #demo { max-height: 60vh; } }

/* 切り出し結果の確認 */
dialog { border: 0; border-radius: 10px; padding: 16px; box-shadow: 0 8px 30px rgba(0, 0, 0, .3); }
dialog::backdrop { background: rgba(0, 0, 0, .35); }
.preview { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; }
dialog { max-width: calc(100vw - 16px); max-height: calc(100vh - 16px); overflow: auto; }
/* 市松模様は枠の側に敷く（canvas に敷くと、縁取りの影が絵ではなく四角全体に付いてしまう）。
   枠は登録される画像と同じ大きさ（胴体 148×200、腕 100×180）にする。マスは画像の 4 画素分（2 倍表示で 8px）の正方形で、どちらの大きさも割り切れる */
.preview .frame {
  box-sizing: content-box; width: fit-content; line-height: 0; border: 1px solid #ccc;
  background: repeating-conic-gradient(#ddd 0 25%, #fff 0 50%) 0 0 / 16px 16px;
}
/* プレビューは 2 倍で見せる（登録される画像は元の大きさのまま）。画素はぼかさずに拡大する */
.preview .frame canvas { display: block; }
/* canvas 自体を 2 倍の大きさで作る（app.js の drawPreview） */
.preview .stats { font-size: .8rem; color: #555; margin-top: 4px; }
.adjust { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin: 10px 0; font-size: .9rem; }
.stepper { display: inline-flex; align-items: center; gap: 6px; }
.stepper output { min-width: 2.6em; text-align: center; font-variant-numeric: tabular-nums; }
.actions { display: flex; gap: 10px; justify-content: flex-end; }
.status { min-height: 1.2em; font-size: .9rem; color: #444; margin-top: 6px; }
.status.error { color: #c00; }

/* 一覧 */
.list { padding: 8px; }
.list h1 { font-size: 1rem; margin: 0 0 4px; }
.list .note { font-size: .85rem; color: #555; margin: 0 0 8px; }
.list .bar { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; font-size: .9rem; }
.list .bar input[type="number"] { width: 5em; font: inherit; }
.list .bar { flex-wrap: wrap; }
.cards { display: flex; flex-wrap: wrap; gap: 8px; }
.card { position: relative; width: 148px; height: 200px; }
.card img { position: absolute; }
.card .body { left: 0; top: 0; }
.card .arm-r { left: 53px; top: 30px; }
.card .arm-l { left: -5px; top: 30px; transform: scaleX(-1); }
.card .meta { position: absolute; left: 4px; top: 0; font-weight: bold; font-size: 1.2rem; line-height: 1.3; text-shadow: 0 0 3px #fff, 0 0 3px #fff; }
.card .meta a { display: block; color: var(--accent); }
.card .meta a:first-of-type { margin-top: 2.6em; }
