# 部品一覧

カードのチームアイコンは、一覧と同じチーム画像・色・代替アイコンを使います。目と所有者表示は枚数と同じC方式で盤面倍率の変換外へ描き、公開範囲やカードの面を変更しません。追加のJSON設定は不要です。

ホルダーの重ね表示は1列だけで使用します。行優先では編集の重ね表示設定と実行時の切替ボタンは表示せず、既存の1列用設定は保持します。切替ボタンは通常枠の内側右上で拡大ボタンの隣に表示します。1列の重ね表示は、`holderAllowToggle`が省略またはtrueで、その枠を閲覧できる参加者が切り替えられます。移動禁止・手番外でも切り替えられますが、閲覧禁止・切替禁止・非公開タブへの操作は拒否します。カードの公開範囲や並び順は変えません。拡大ボタンと同じく、PCはホバー／フォーカス、タッチは枠をタップしたときだけ操作ボタンを表示します。結果は従来どおり共有され、回答待ち・演出中・ゲーム終了後の更新制限は維持します。既存JSONの修正やデータ移行は不要です。

ボタンの「実行前に確認する」と「確認メッセージ」は、編集画面のボタン設定で対象の盤面ボタン／フェーズボタンを選んで設定します。「処理を編集」内には置きません。`automationPopup`／`automationConfirmMessage`は従来のボタン単位の保存先を維持し、処理列の保存では変更しません。確認をオフにしても確認文は残り、空白・未設定は実行時に「実行しますか？」を使用します。JSON形式・Schema・実行時の権限や秘密範囲は変更しません。

ホルダーの拡大は追加設定なしで利用できます。PCはホバー／Tabフォーカス、タッチはタップした枠だけに一時表示される右上の拡大ボタンから開きます。カード高は画面縦幅の約半分で、右上の縮小アイコンやEscで元のホルダー表示へ戻ります。元の一行／行優先・重ね表示・配置位置を使い、溢れた場合は一行なら横、行優先なら縦にスクロールします。拡大したまま通常と同じ選択・移動・許可された並び替え・カードメニューを使え、縮小後も順序と選択を維持します。手番外・回答待ち・演出中も拡大や閲覧できる説明の確認ができますが、禁止された状態変更はできません。拡大・縮小だけでは元の枠・カードのサイズ、配置、順番、公開範囲を変更しません。新しいJSON項目やデータ移行はありません。

ホルダー／スタックボックスを移動不可にしても、移動可能なピースを中へ戻せます。収納先が閲覧可能で、既存の `boxAllowCards`（カード・ピースの受入）がfalseでないことが必要です。ピースの操作制限と配置開始前の既存配置保護は維持されます。JSONの追加項目・移行はありません。

ホルダー内のカードにもピースをドラッグ配置できます。整列・スクロール後も表示されているカードのマスを対象にし、確定時に配置条件を検査します。カード移動を許可する必要はありません。本人が閲覧できるカード面が対象で、私有領域・使用不可セル・重複への配置は拒否されます。追加設定やJSON移行は不要です。

配置枠へ手動でピースを置く場合、確定時もクリック・ドラッグで指定したカード個体と配置枠を検証します。隣接・重なった別カードの枠へ置き換えません。個人タブと共有盤面の実寸、カードの回転・裏面を使い、使用不可セル、既存ピースの占有、サイズ不一致は従来どおり拒否します。JSONの項目・形式・初期値に変更はなく、既存データの修正や移行は不要です。

カード個体の可変値はcardStates[].variablesで保持し、cardDefs[].variablesの初期値へ合成します。部分変更と結合・分離で別個体の値を共有しません。チームタブの外観・手札出口面も同じ出自を解決します。[個体値と部品参照](physical-card-values.md)。

チームタブのトークンにも`tokenAffiliation: "player"`を指定できます。編集時の枠番号は全体のプレイヤー順、実行時はそのチームに所属する参加者だけを生成します。未所属者・非参加者・空チーム分は生成しません。本人限定の移動権限は同チームの他人へ広がりません。設定例は[player-team-tokens.json](examples/player-team-tokens.json)。

カードの配置枠は[実カード1枚の条件・数値参照](card-grid-values.md)にも利用できます。所有者・所在で個人枠を選び、指定面・指定配置枠に付随するピースだけを数えます。公開カードでも秘密ピースから得た値の公開制限は維持します。

## カードの説明とゲーム中の確認

カード一覧の「カードの説明」は各`cardDefs[]`の`description`（任意の文字列）です。改行を含む文章を保存し、省略・空文字は説明なしとして扱います。カードメニューの「詳細」で名前と全文を表示します。PC・スマホとも「拡大」（虫眼鏡）を使用でき、盤面の倍率や操作モードは変更しません。説明は表面の閲覧権限に従い、裏面しか見られない参加者・観戦者へ配信しません。

カードCSVは`description`列も出力・読込します。旧CSVで列がなければ既存説明を維持し、列があり値が空なら説明を消去します。サイコロCSVの項目は変更しません。[例](examples/card-variable-sort.json)。

実物の画像を表示するカード選択画面にも、各候補の「詳細」「拡大」があります。候補の選択と別の操作なので、開閉しても選択枚数は変わりません。表示するのは回答者に許可された候補の表面・説明だけで、他の回答者の候補・裏面・未選択カードは取得しません。

カードの種類・物理個体・外観の出自は別です。個体IDや出自参照を作者が生成したり、カード移動ごとに外観を複製したりしません。アプリは現在のカードが参照する外観だけを保持し、個別変更と旧形式の不明な出自は保守的に維持します。作者JSONの形式と設定項目は変更していません。

ゲームのサムネイルは部品画像とは別です。`metadata.thumbnail` の選択・サーバー保存時に長辺960px以内・品質85のJPEGへ変換し、切抜き・拡大はしません。透過は白、アニメーションは先頭フレーム。`thumbnailOriginal` は復元用参照、`thumbnailEncoding` は `jpeg-960-q85-v1`。カード・ピース・ルール画像の形式は維持します。[例](examples/thumbnail-jpeg.json)。

部品とカード個体は別の型です。取得可能な属性と戻り型は[完全表](reference-contract.md)、秘密変数のpublicationと表示ON/OFFの違い・配置失敗時の進行は[実装パターン](authoring-patterns.md)を参照してください。画面にない架空の項目を追加せず、未実装のマス一覧配列化とは区別します。

通知・確認は盤面部品を追加せず、通常処理の`notice`として設定します。非モーダルのウィンドウで、タイトル・本文・表示対象・ボタン文言を持ちます。選択肢と回答変数は不要。既存ボタンの事前実行確認やchoiceとは別です。[通知・確認](action-reference.md#通知確認)。

カードの `canMove:false` は手動移動だけを禁止し、選択可否とは独立します。本人の手札のクリック・複数・範囲選択は選択権限があれば可能で、選択カードを処理から移動できます。他人の手札・公開範囲・選択権限は緩和しません。カード変数の複数キー整列は部品定義順を変更せず、`sort.cardSortKeys` で指定します。[処理仕様](action-reference.md)、[例](examples/card-variable-sort.json)。

トランプの標準テンプレートは54枚、97.7×148.3。表裏の画像を個別に拡大・位置調整し、カード枠で切り抜く。[初期値例](examples/trump-default-layout.json)。テンプレート明示適用／新規初期データだけに使用し、保存済みのレイアウトや汎用カードの推奨寸法は変更しない。

全体設定の変数は数値／文字を選べる（型省略は従来の数値）。文字の初期値は空・改行も可。テキスト部品は既存の文章と変数の組み合わせで全体文字変数を表示し、状態別表示は追加しない。サイコロ部品の面・確率設定は従来どおり。複数指定は部品設定ではなく`dice`処理の`diceTargets`で行う。[例](examples/global-text-batch-dice.json)。

カードのピース配置枠は、従来の固定行列の占有・セル変数参照に加えて、移動処理から0始まりの行・列を明示できる。部品の保存形は変更しない。別タブ／非表示倉庫からのピース所属変更と面は成功時だけ確定し、失敗個体は元の状態を維持する。マス一覧の一時配列化は未実装。[処理引数](action-reference.md#ピースの指定マス配置)。

上部・盤面ボタンの表示／活性条件では、本人の手札・ボックス・盤面の選択カードを数えられる。カードセット・個別カード・変数で絞込可能。ボックス自体の選択は収納カードの選択ではない。例：`examples/selected-cards-button.json`。

盤面を見る向きを変更しても、ボックスのプレイヤー名ラベルだけは閲覧者に正立する。下・上からは横書き、左・右からは縦書きでアイコンを上に表示する。長い名前は枠の辺に収まらなければアイコンから全文を確認する。ラベルの配置中心・代表枠・名前表示ON/OFFとボックスの保存座標は変えない。追加のJSON項目は不要。

タブ設定の「盤面を見る向き」は全員同じ／プレイヤーごと／チームごと。チーム機能無効ならチーム方式は表示しない。プレイヤーは最大人数分の座席、チームは定義済みチームIDへbottom/right/left/topを指定する。既定は下から。確認・ゲーム画面では盤面と部品全体が回転し、手札・メニュー・一覧は回らない。`Tab.viewpoint`の例は`examples/board-viewpoint.json`。

ターンマーカーの「複数可」は複数人の同時手番に対応します。手番のみ操作ONなら所有者全員が操作可能で、全解除すると変更操作は既定禁止です。チームのメンバー全員を対象にできます。現在基準のターン指定は複数可なら選択順・選択数を設定し、順番基準の単独指定だけは省略できます。

通常タブの非表示は倉庫用の画面設定であり秘密権限ではありません。倉庫内の公開カード・部品は処理から取得できます。本人／チーム限定カードや非公開面、所有者付きタブの権限は別に保護します。

一時値の公開範囲は保存前にも検証します。限定公開の値やその値に依存する条件結果を全員公開のログ・変数・共有処理へ渡す明確な矛盾は保存エラー、対象者・カード状態等で変化するものは保存可能な警告です。警告には該当処理へのリンクがあります。実行時の安全チェックは維持し、該当処理・参照元・公開先・停止理由を表示します。秘密の値・回答・カード内容は表示しません。公開が意図された場合に限り、既存の `temporaryPublish:true`（variable/message/logのみ）を編集者が明示します。自動的に公開設定へ変更せず、警告を消すために公開を有効化しないでください。保存形式の項目・版は変わりません。自動送信や専用送信機能はありません。

別タブのホルダーに入れたカード・ピースは、移動先ホルダーの`tab`と`holderId`へ所属します。非表示タブの予備札は、そのタブを公開せず必要な札だけ盤面へ出せます。出た札の表裏・公開範囲は通常の移動・入庫規則に従います。

## 全部品共通のプレイヤー設定

テキスト、タイマー、カウンターを含む全11種類で、通常タブの「プレイヤー設定」→「プレイヤーごとに作成する」を使えます。保存フィールドは`playerBoxGroupId`・`playerBoxSlot`・`playerBoxShowName`を共用します。既存ボックスのIDと設定を維持します。最大人数分の位置を編集し、参加人数分だけ実行します。共有の見た目・書式・初期値・処理を継承し、状態は個別です。名前表示OFFも新規枠へ継承し、各枠で変更できます。所有者だけでは閲覧・操作の許可を追加しません。

透明背景のテキストは編集時だけ青い点線で範囲を示します。空文字でも表示し、確認・ゲーム画面では消えます。通常の背景設定は変更せず、補助枠の保存項目はありません。

処理から取得する部品（part）は「部品ID」を文字列として参照できます（property.path:["id"]）。ボックス等の実行部品を区別するもので、カードの種類・定義を示すIDではありません。タブ・参照の公開範囲を維持します。例はexamples/integrated-temporary-actions.json。

## リザルト設定（部品ではないゲーム設定）

順位・成績の新規入力は形式に合う変数を選択する。個人はプレイヤー変数、協力は全体変数、チームはチーム変数・メンバー合計。順位は数値のみ。未選択は保存不可。プレビューに視点選択はない。有効な条件・文章は「完了」でも保持し、不完全な入力は閉じず案内する。

ゲーム設定→リザルト設定で、個人・チーム・協力、順位基準、明示公開する成績、文章、達成項目を設定する。既存のNumericValue／CommonCondition／LogMessagePart[]を使う。チーム未設定時はチーム戦を選ばない。処理のgameEndが表示契機で、ゲーム画面の手動中断では出ない。盤面部品のkindとしてresultを追加しない。[データ仕様](game-data-spec.md#リザルト設定)と[サンプル](examples/result-screen.json)参照。

## 処理編集のデータ構造

処理中の一時値は部品そのものの新項目ではありません。Action.temporaryBindingsから登録済みの引数へ接続し、操作スコープを持たない表示条件へ後続処理の値を指定しません。具体的な一時値・戻り値の形式は[処理仕様](action-reference.md)を参照してください。

処理編集の「このゲームのデータ構造」で、実際の変数・部品・タブ・フェーズ名と型を確認できます。ゲーム直下のプレイヤー[]・チーム[]・タブ[]・部品[]・全体変数[]・人数別変数[]・マーカー[]・フェーズ[]をたどります。設定欄も同じ構造を使い、引数に合わない型、空一覧、未使用のチームは出しません。変数の参照は変数名→値、カード対象は場所→カード[]→条件→並び順→選択数、収納先は場所で終わります。編集時点で未確定の参加者・手札や、ルームの秘密データを取得する機能ではありません。ツリーは表示専用でJSONへ保存せず、既存のPlayerTarget／CardSelector／CardLocation／値参照へ変換します。現行JSON Schemaは形式20／処理形式4です。


編集・確認画面は2026-10-19に一本化しました。マイゲームの「編集する」と各ボタンの処理編集はメソッド形式、確認・実部屋はスクロール盤面を使います。旧UI用のクエリや処理コード文字列をJSONへ生成しないでください。新規JSONはschemaVersion 20／operationSchemaVersion 4です。一時変数は通常の変数変更・配列繰り返しと型付き引数へ統合し、専用プログラムActionは使用しません。部品は登録済みの参照・項目だけを公開し、未対応のプロパティは選択肢へ出しません。既存Actionはv19→v20移行で保持します。


カードのレイアウト寸法は部品のwidth／height（px）です。「カードサイズ」の幅・高さ入力はこれらだけを更新し、全カード・表裏で共有します。レイヤーのx／y／width／heightは従来の百分率のまま保持し、fontSizeやcardDefsを変更しません。完全枠外レイヤーは明示的な整理操作でだけ削除します。サイコロはこの追加UIの対象外です。

## 保存エラーの修復リンクとリセット

保存時の未選択検査は、正式な処理配列（actions／initialActions／elseActionsおよび進行イベントのstart／end）と条件式の参照に限定する。カード・サイコロのテンプレートlayersのtype:variableや、盤面部品のkind:box等を処理・値参照として扱わない。表示項目のために架空の処理設定を要求しない。

編集画面の保存エラーには、部品・ボタン・初期処理・フェーズイベント・共通処理の名称を含む「開く」リンクを出す。内部では検査時の構造化パスを現在のゲームに照合して所有者と処理IDを解決し、翻訳済みエラー文を解析して配列位置を推測しない。入れ子の処理も既存ダイアログで選択・表示し、新画面では対象行へフォーカス・スクロールする。通信エラーなど修復先を特定できないものに誤ったリンクを出さない。移動だけでデータを変更しない。sourceが空の変数処理は編集専用の未選択として開き、対象変数を選ぶまでは保存を許可しない。

リセットの新規編集はゲーム全体だけとし、方式・参照元・プレイヤー・対象種類は表示しない。実行前確認は維持する。新規メソッドはリセット（）で、JSONは既存のtype:reset、mode省略またはgameを使う。過去の対象限定リセットを黙って全体リセットへ変更することは危険なため、読み込み・実行互換を残し、「ゲーム全体のリセットに変更」を押した時だけ対象指定を除去する。新規JSONやAI生成で対象限定方式を提案しない。JSON形式19／処理形式3は変更しない。


## 部分設定・文章・処理順の編集

編集中の専用設定（通知・選択表示・入力表示・操作権限・カード文章操作）は必須の兄弟項目が未設定でも処理行を表示する。保存時の検査は維持し、不足項目を行内の未選択から設定できる。通知の表示場所だけは実行器の既定値（画面上部/toast）を使うため、秒数や通知種類のみを確定してもその既定値を補って保存できる。その他の必須項目を推測して保存しない。1行の変換エラーはその行に表示し、他の行や分岐を隠さない。未完成時は保存不可で、戻る・取消・コード確認を維持する。

プレイヤーの条件なしは「全プレイヤー」と表示し、選ぶと並び順へ進む。カード条件の「条件なし」とは区別する。プレイヤー情報の「プレイヤー名（文字）」は既存の player-name 参照であり、内部コードは .名前 とする。変数の .変数.名前 と混同しない。メッセージ・ログの「組み立てる」で文字と変数・参照値を順に追加し、「この文章にする」で一度だけ反映する。途中の閉じるは元の文章を保持する。

処理行の専用ハンドルはPointer Eventsで同じブロック内のドラッグ並び替えを行う。分岐とループは中身ごと動かし、ID・未登録の保持項目を維持する。上下移動と戻る／進むも残す。通常の入力やスクロールはドラッグ開始に使わない。編集画面・設定・処理ダイアログの？から既存の60秒診断を開ける。診断は編集イベントと文字数など数値メタデータだけを記録し、文章・ゲームJSON・名前・認証情報を送らない。送信はユーザー操作のみ。JSON形式19／処理形式3は変更しない。


## 自明な選択の省略・条件追加・処理行操作

一つに決まる対象（実行者・表示者・ボタン所有者・ループ中・単独ターン指定（複数不可または順番基準）・単独所持マーカー）は選んだ時点で確定し、並び順・選択数・追加の確定を省略する。ANDで単一対象を絞る場合も一件以下だが、ORで別候補を加えると複数になる。最大／最小は同点があり得るため単一扱いしない。引数だけが一件限定なら並び順を残して選択数の画面だけ省略する。一人の手札という収納先は一件でも、その中のカードは複数なのでカードの並び順・選択数は別に指定する。新規の条件・AND／OR追加は条件全体を未選択にし、最初と同じ条件ナビゲーションを開く。比較式や対象値を自動挿入しない。処理行は複製・上へ・下へを持ち、同じブロック内で移動する。複製は直下へ追加して入れ子の処理・分岐に新IDを付け、参照先IDと未登録の保持項目は維持する。並び替えと戻る／進むは元のIDを維持する。既存条件が変換できない場合は元データを保持してエラー表示し、空の分岐として上書きしない。既存JSONを読み込んだだけで対象指定を書換えず、新規・再指定の単一対象は既存のactor/turn等の形式で保存する。JSON形式19／処理形式3は変更しない。

## 条件導線と保存制約（2026-10-18）

条件編集は参照先→判定→値の段階選択を使用する。マーカー条件はマーカー→所持／未所持→対象プレイヤーを選び、条件行に対象プレイヤー・マーカー名・所持有無を表示する。全条件／いずれか・常に成立／不成立・値比較・フェーズ所属ボタンのフェーズ条件は新規候補に出さず、AND／OR／NOT／括弧と参照選択へ統合する。既存条件と内部のsource順序は読み込みで変更しない。sourceは新規の並び順候補に出さず、元の順とも表示しない。所属フェーズを持たない盤面ボタンではフェーズ→実行中／実行中ではないも選べる。新規カード・収納先選択は名前の昇順。新規プレイヤー選択はターン順昇順、単一マーカーは表示と確定値とも選択数1。並び替え値は対象の変数、同値は候補の取得順を維持する。未選択の編集はルール確定不可。保存済み処理でも必須対象が欠けていれば、配布データ作成とサーバー公開で拒否し、処理の経路・不足項目を返す。文字列としての「未選択」は拒否しない。JSON形式19／処理形式3は変更しない。

テキスト部品のプレイヤー名・プレイヤー変数参照、ボタンの表示条件・操作条件も共通のPlayerTargetを使います。新しい対象のcondition/selection形式は[処理仕様](action-reference.md#共通対象クエリ)を参照してください。個体カードと収納先（手札・ボックス・山札・ゴミ箱）は異なる型です。

盤面背景は幅100%・縦自動の倍率で上端から繰り返します。盤面を高くしても部品の実寸・上端からの実位置は変えません。高さハンドルは盤面の下側の枠外にあり、ライブ表示中の一時値を部品や処理へ保存しないでください。

部品の盤面寸法は任意の `background.width` / `background.height`（それぞれ100〜10000の整数px）またはタブの背景から解決します。省略した軸はsizeの既定寸法です。x,yは引き続き百分率、width,heightは論理pxです。編集で盤面を縮めた場合、initialViewsの各端末の高さとyを新盤面内へ自動調整して保存します。部品は縮めず、実位置を維持します。初期表示の `initialViews` はカメラ設定であり、部品の寸法・座標・公開条件を変更しません。詳細はgame-data-spec.mdとexamples/board-initial-view.json。

テキスト部品は任意の `textParts` で文章と変数を組み合わせられます。形式はログの `logParts` と同じ1〜30項目（text / player-name / value）。actorは表示者、turnは手番を基点とする指定。変数のvisible=falseでも明示的に指定すれば表示します。未解決値は「—」。先頭の文字書式を動的文章全体へ継承します。省略時は従来の固定nameと部分書式です。例: `examples/composed-values.json`。

ホルダー内のカード・ピースもcanRotateに従い、操作メニューとホイールで回転できます。回転だけで収納先・順番は変えません。ターンマーカーのturnPlayerOnlyは省略false。ONでは手番以外の操作既定値を禁止しますが、閲覧・選択・本人の手札内並び替えは除外し、処理の明示権限を優先します。

プレイヤー／チームタブの盤面ボタンは参加者ごとに生成された実行時IDで動き、設定したメッセージや移動処理を実行します。JSONには元の部品ID・参照を記載し、生成IDを手作業で埋め込まないでください。ボックス内カード上のピースも、ボックスを移動元とするピース処理の対象です。

カード・ダイスのレイアウトは同じ編集部品を使います。枠線はゲーム中の表示範囲であり、レイヤーは負の座標や100%を超えるサイズにも配置できます。編集画面は枠外も表示し、「枠外・重複項目の整理」の削除操作のときだけ完全に枠外のレイヤーを削除します。部分重複は保持し、ゲーム中・一覧見本では枠内だけ表示します。現在のレイヤーに個別回転設定はありません。

カードの限定表示バッジ（目・プレイヤー・チーム）はカード外側に表示します。目は公開バッジ程度の小さい表示です。バッジのためにホルダー・手札の高さや行間を広げず、スクロール量にも加算しません。この配置に新しい部品JSON項目はありません。

ボックスの初期表示は今後の入庫にだけ適用します。収納済みのカードをその場で公開する場合は `reveal` 処理を使います。場所・順序・個体IDを変えず、ボックスの初期設定は維持します。公開済みカードはホルダー／手札の非公開初期設定によって再び隠しません。

新規ゲームの背景グリッドはOFFです。既存の `background.grid` とタブ背景の設定は変更しません。カード・ホルダーの手動めくり／シャッフル演出は音量設定と独立し、ホルダーでは表裏を保ちます。処理単位の `showAnimation` は action-reference.md を参照してください。ONのカード移動音は1処理1回です。演出中でもスクロール・視点などの閲覧は可能ですが、部品・カードの更新はできません。

プレイヤーボックスは複製時にも最大人数分を1つの独立グループとして扱い、先頭枠IDを新しい `playerBoxGroupId` とします。同じプレイヤーの枠同士が4画面px以内で接する場合は名前表示だけをまとめます。名前が収まらない枠はアイコン表示とし、ホバー／タップで名前を出します。所有者限定で対象がボックス所有者と一致するカードはプレイヤー画像だけを省略し、目のバッジは残します。これらのラベル表示にJSON項目はありません。

ボックスの表示設定は入庫時の初期値です。開始時・別の箱への入庫時にカード自身へ保存し、入庫後の手動・処理による公開範囲変更を描画で上書きしません。並べ替え・再接続では再適用せず、出庫しても現在の表裏・公開範囲を維持します。再入庫時は再適用します。プレイヤー／チーム、通常タブ／専用タブ、ホルダー／スタックに共通です。全体設定はカードの物理的な表裏を維持し、それ以外は表を基準に閲覧者を限定します。

トークンは縁のある円形チップとして描画し、中央の画像は内側の円で切り抜きます。通常のプレイヤー／チームトークンはマウスオーバーで所有者名を表示し、匿名トークンは部品名だけを表示します。自分の匿名トークンには外周ハイライトだけを付け、右下の黄色い印は表示しません。カード・ピース・トークンの移動は共通の共有ゴーストと操作ロックを使用します。共有ポインタOFFでも匿名ゴーストとロックは有効です。

サイコロCSVは面の定義・固定重み・文字／数値変数だけを変更します。画像・面テンプレートは保持し、ピース配置マスは存在しません。

- `card`: カード。カード一覧、表裏、変数、テンプレートを持つ。`cardTemplate.layers[]` の配列順は背面から前面で、編集画面の重なり順一覧は上ほど前面に表示する。入力・描画領域は最前面固定。カード一覧CSVは既存の `cardDefs[]` / `variableDefs[]` の名前・枚数・文字/数値変数をIDで更新・追加し、画像とピース配置マスは対象外。トランプのマークと数字は文字変数 `suit` / `rank` に持たせ、CSVでも `var:text:suit` / `var:text:rank` を使う。カード部品の `handExitFace` は、その部品の全カードに共通する手札から手動で出すときの `front` / `back` / `choose`（省略時 `back`）。限定表示のプレイヤーボックスはボックス設定を優先する。
- `box`: カード置き場。`stack` または `holder`。
  - プレイヤーボックスの`playerBoxShowName`はboolean、省略時true。各座席の名前・アイコン表示だけを制御し、共有サイズ等の同期でも個別値を保持する。接続群の代表はONの枠だけから選び、全OFFなら表示しない。カードの公開設定や目アイコンには影響しない。背景と枠線が両方OFFの場合の淡青点線は編集専用で保存しない。
  - チームボックスは通常タブ上で `teamBoxGroupId` と1からの `teamBoxSlot` を持つ。先頭枠のIDを共通IDにし、名前・サイズ・設定は全枠共通、位置と`teamBoxShowName`は個別に保存する。`teamBoxShowName`は任意booleanで省略時true、falseの枠ではチーム名とアイコンを表示しない。カードの公開範囲は変更しない。実行時は参加中のチームだけを展開する。`teamBoxInitialVisibility` は `all` / `team` / `non-team`（省略時 `all`）。`teamBoxOwnerId` と `teamBoxVisibility` は実行時の所有者・可変表示状態。チームタブ内のボックスは枠を複製せず、そのタブの所有チームと開始時表示を使う。
  - 編集画面でカード・ピースのサイズに合わせる場合、参照幅+10（左右各5px）、参照高さ+10（上下各5px）を `width` / `height` に保存する。以後の参照部品のサイズ変更には自動追従しない。
  - `holder` 内のカード・ピースは、収まる場合に縦横中央へ配置する。入りきらない場合は先頭を隠さずスクロールできる。
  - `boxShuffle` を `true` にするとシャッフルボタンを表示する。`boxShufflePosition` は `outside-top`（枠外・上）、`outside-right`（右）、`outside-left`（左）、`outside-bottom`（下）の4択。ボタンは指定した辺から5px離してカードとの重なりを避ける。省略時はスタックが下、ホルダーが右。旧データの枠内指定は下へ移す。
- `board`: メイン盤面やプレイヤーボード。
- `button`: 盤面に配置してゲーム固有処理を実行するボタン。`buttonShape` は `square` / `circle`、`buttonText` は表示文字（空文字なら画像のみ）、`buttonTextColor` は文字色（`#RRGGBB`、省略時は白）、`buttonFontSize` は文字サイズ（1～200 px、省略時は標準）、`front` は画像参照です。`name` は管理用の名前として残します。`displayCommonCondition` / `activeCommonCondition` を省略すると、それぞれ常に表示／条件上は常に操作可能です。処理は `actions` に設定します。
- `text`: 固定説明文字。
- `dice`: 面一覧と共通の表レイアウトを持つサイコロ。`diceFaces[]` の各面は安定した `id`、`name`、確率の重みになる `copies`（1以上）、`variables` を持つ。`diceVariableDefs[]` で文字・数値・画像の型を定義し、`diceTemplate` で共通の背景・画像・固定テキスト・変数レイヤーを定義する。新規作成時は画像型の `image` 変数に1～6の画像を設定し、共通レイアウトの画像変数レイヤーで表示する。編集画面とゲーム画面は同じレイアウトを使い、点や数字を自動で重ねない。裏面、描画・入力領域、ピース配置マスは使用しない。`value` は1から始まる面一覧の番号、`sides` は面の件数。`diceCanRoll: false` はプレイヤーによる手動の振りだけを禁止し、処理による振り・変更には影響しない。旧データの `diceFaces` がない数字サイコロは `sides` 件の等確率面と初期画像を補って表示する。
- `counter`: 得点、資源、体力などの数値。
- `timer`: カウントアップまたはカウントダウン。`timerShowDuringCardEdit: true` なら描画・入力画面の上部バー直下にも現在時間を表示する。省略・`false` なら表示しない。
- `trash`: 捨てたカードを保管するゴミ箱。

盤面ボタンの `backgroundEnabled` は省略／`true` で従来の背景、`false` で背景色・枠線・影を透明にします。文字・画像・操作範囲は維持します。編集画面だけ青い点線で範囲を表示し、確認・ゲーム画面には点線を出しません。空文字の `buttonText` と画像なしを組み合わせれば、見えない操作領域にもできます。透明化は表示条件・権限とは別です。

操作手順：盤面ボタンを選択→部品設定の「背景を表示する」をオフ。隣の「？」で説明を確認できます。オンに戻すと設定済みの背景色へ戻ります。背景オフの間は背景色の選択欄が無効になり、保存済みの色は消しません。上部のフェーズボタンにはこの背景設定を適用しません。例：[タブ内ボタン](examples/tab-buttons.json)の「通知」は透明背景と紺色の文字を組み合わせています。

推奨サイズは、カード100×140、カウンター120×48以上、タイマー180×48以上、盤面ボタン88×88以上、サイコロ60×60以上、ゴミ箱70×90以上です。丸・四角の盤面ボタンは縦横同じサイズで配置します。

盤面の `text` は `name` と `formattedText`、盤面ボタンは `buttonText` と `buttonFormattedText`、カード・サイコロの固定文字レイヤーは `text` と `formattedText` を併用できます。`formattedText` は `{ text, font?, bold?, underline? }` の配列で、順に連結した文字が元の文字列と一致する場合だけ適用します。動的な名前・変数・入力レイヤーはレイヤー全体の `font`・`bold`・`underline` を指定します。

## トークン（token）

丸型の移動部品。`tokenAffiliation` は `none`（既定）、`player`、`team`。`none` は `tokenCount`（1～99、既定1）と `front` の画像を指定する。通常タブでは所属付きは最大プレイヤー人数／設定チーム数の枠を配置する。チームタブのplayer所属は、そのチームの参加者分だけ生成する。ゲーム中は参加中の枠だけ表示する。`tokenAnonymous: true` では所属アイコンの代わりに `front` を表示し、所有者・同チームにだけローカルのハイライトを出す。匿名表示は通信上の完全秘匿を保証しない。

各族の先頭は `tokenGroupId === id`、`tokenSlot: 1`。兄弟は同じgroupIdと1からのslotを持ち、位置だけ別に設定する。widthとheightは同じ直径で、サイズ・設定は族内共通。`tokenMovement` は `none`、`owner`、`anyone`（既定）。`owner` はプレイヤー本人／同じチームのメンバー、所属なしでは不可。観戦者は移動不可。`tokenOwnerId` は実行時に割り当て、制作JSONには保存しない。処理の移動は手動移動可否と独立。

盤面の表示既定: スマホ縦の未設定範囲は左上・全幅×100px、PC・スマホ横は盤面全体。明示範囲を優先し、全体指定は全体フィット。新規タブは950×500px、既存サイズ・初期表示は保持。表示範囲と手札スクロールは処理の座標や権限を変更しません。

カード・ピースの `canRotate: true` は、ゲーム中の対象上のホイール回転と操作メニューの回転を許可します（操作権限の検証も適用）。ホルダー内でも同じ回転刻みを使い、回転中は盤面スクロールを止めます。回転不可の部品・空白はスクロール、Ctrl／Meta付きと縦差分0のホイールは回転しません。新しいJSON項目はありません。


## プレイヤー参照の対象指定（2026-10-17）

ボタンのdisplayCommonCondition／activeCommonConditionのbutton-stateで、手札枚数・プレイヤー変数・手札全体の条件・マーカー所有にplayersを指定できる。選択中カードは本人専用のまま。[JSON仕様](game-data-spec.md#プレイヤー参照の対象指定2026-10-17)を参照。

部品の処理条件はaction-reference.mdの共通条件を使用します。プレイヤー変数の文字比較と条件分岐のAND／ORは同じ処理形式で、カード／ダイス等の部品データ形式自体は変更しません。

進行処理の組み方は[公開実装パターン](authoring-patterns.md#タイマー確認終局)を参照。phaseは同一sourceでも終了→開始を実行。messageParts（LogMessagePart配列）は実行時に解決し、messageConfig.severityはerror/warning/message。PlayerTarget.player-variableのoperator=max/minは数値の同点全員を返す。loopはmode=count/while/playersとbranches[0].actions、loopBreakで最内ループを終了、loop-playerで対象を参照する。実行中のruntimeLoopState/runtimeLoopFramesは作者JSONに保存しない。最大1000反復・10000ステップ・100フェーズ移動で停止する。旧データは変換不要、新操作を旧クライアントで実行する互換性は保証しない。


カード収納先はUI上の共通分類で、手札・山札・ボックス・捨て札を指す新しい部品kindではない。処理では既存のCardLocationを指定する。手札の所有者と収納先を一つの表示で選んでも、プレイヤー・チームの所属や公開範囲は変えない。


編集画面の赤い［未選択］は編集中だけの表示です。ゲームJSONへ未選択という文字・値・フィールドを出力しないでください。対象・回数・値を指定してから既存の型へ変換します。既存の省略値とJSON Schemaの既定値は変更しません。繰り返しは従来のloop.mode=count／while／playersとcount・condition・playerTargetを使います。例と生成プロンプトのJSON形式、schemaVersion19／operationSchemaVersion3は維持します。
通常の処理は、処理の入れ子と式の深さを独立に64まで使用できます（ルート0）。横並びは深さに含めず、別の項目数・実行予算で制限します。詳細はaction-reference.mdの一時変数処理を参照してください。

実カードの公開状態はreveal処理で全員・本人・本人以外・チーム・チーム以外へ変更できる。ボックスの入庫時初期設定とは独立。カード入力レイヤーの内容はcardTextChangeのmessagePartsで生成でき、描画は変更しない。

## テキスト部品の参照名・表示内容・縁取り

kind:textのnameは編集可能な部品名（処理の参照候補）。textContentは固定の表示文字、textPartsは動的な文章で、実行表示ではtextPartsを優先する。textContent未指定の旧データはnameを固定文字として表示し、部品名を初めて変更するとき旧表示をtextContentへ保持する。空文字は空表示。formattedTextは表示内容の書式であり、部品名の書式ではない。

textOutlineは文字の輪郭のON/OFF（省略OFF）、textOutlineColorは#RRGGBB（省略#ffffff）、textOutlineWidthは0.5〜5px（省略1）。部品の外枠ではない。編集・確認・ゲーム画面で共通描画し、固定・変数混合の文章どちらにも適用する。カウンターの既存textOutlineの意味は変更しない。例：examples/text-component-name-and-outline.json。
ターンマーカーの複数可ONとチーム有効時は、処理の「進行範囲」をチームにして独立に進められます。全体の開始時は従来どおり先頭1人で、各チームの初回手番は処理で明示付与します。全解除後も直前位置を保持しますが、所有者が空なら手番のハイライト・操作権限はありません。[処理仕様](action-reference.md#チーム別の独立進行と全解除後の再開)を参照。

## プレイヤー選択と表示部品

選択ウィンドウの`players`候補は名前・アイコンで表示しますが、回答は参加プレイヤーIDです。後続でテキスト等へ結果を反映する際は、名前一致で対象を探さず、登録済みのプレイヤー`id`属性で照合します。既存のテキスト部品の設定や所有者指定は変更しません。[サンプル](examples/player-choice-continuation.json)。

## プロジェクトL用の部品接続

操作はフェーズ別ボタンへ統一する。回数は通常の変数・条件で管理し、汎用のセーブポイント・条件／配置検査・操作制限を組み合わせる。旧設定は読込時だけ変換し、進行中の旧部屋は新規開始する。私有記録と秘密情報の参加者別配信を維持する。

## 場所からカードを選ぶ

カード部品・手札・箱などの場所を choice の cardSelector へ指定し、後続処理の game.input.cards を move のカード指定へ接続できます。カードの種類と物理個体を区別し、未選択札の公開を広げません。[処理仕様と例](action-reference.md#場所付きカード選択の結果)。

rotation（数値、度）は省略時0。回転しないボックスにも適用されます。[省略互換のサンプル](examples/omitted-rotation.json)。

公開範囲の警告検査は編集画面の「サーバーに保存」を押した時だけ行います。編集中・ドラッグ後の自動警告検査はありません。保存試行時の警告は分類と該当処理リンクを表示し、次の編集で古い結果を隠します。警告だけなら保存可能、保存不可エラーは保存を停止します。サーバー側の保存検証と実行時の秘密情報・権限検証は維持します。JSON項目・初期値・Schema・データ版の変更はありません。


実カードを手札・ホルダー・盤面で直接選択する場合は、場所付きカード選択に `choice.display:"surface"` を指定します。複数枚を選んで上部バーで一度に確定できます。ピース・独自候補には使えません。省略時は従来の一覧表示です。サーバーの候補・枚数・公開範囲・継続処理の検査は同じです。詳細は [カード個体の選択](physical-card-values.md) を参照してください。

## ピース共通サイズと画像の表示

共通サイズ変更はピース・カード配置マスの実寸へ反映し、カード本体の幅・高さ・座標を変更しません。枠がはみ出す場合はカードサイズやレイアウトを明示的に調整します。編集の数値入力は途中値を保持し、Enter・フォーカス解除・ポインター退出で8〜120pxへ補正して確定します。途中の0〜7は保存値ではありません。JSON・Schemaの範囲や項目は従来どおりです。ピース・マーカー・表示変数の画像は縦横比を保ったcontain表示とし、円形切抜きはしません。余白は各部品の背景設定に従います。

## ゲーム内のプレイヤー色・チーム色

編集は「プレイヤー設定→プレイヤーの色」と「チーム設定→識別色」。自動設定はどちらも初期・省略OFF。ONは標準パレット、OFFは手動色を使い、切替で手動色を失わない。

`settings.playerColors`は`{ "automatic": false, "colors": ["#123456", "#abcdef"] }`。colorsは開始時プレイヤー順の0始まり配列で最大20件、各値は#と6桁の16進色。省略枠は標準色。同色指定可。人数上限を減らしても後ろの配色は保持し、ゲーム開始後の手番順・リセット・再接続で確定済み参加者色を変更しない。

`settings.teams.automaticColors`は省略false。ONは定義のteams配列順から標準色を解決し、既存の`teams[].color`を上書きしない。OFFはその手動色を使う。チーム手番順や所属の並べ替えでは色は変わらない。旧JSONは従来のプレイヤーパレットと手動チーム色を維持。schemaVersion20／operationSchemaVersion4の任意項目追加で、DB・旧データ移行は不要。[完全な例](examples/participant-colors.json)。

## ホルダー内の表示位置

ボックスの「収納方法→並べて収納（ホルダー）」で「上下の表示位置：上／中央／下」「左右の表示位置：左／中央／右」を選べます。未設定は中央・中央です。1列と行優先の両方に適用し、行優先では各行の左右位置と行全体の上下位置を揃えます。収まらない場合は開始側へ寄せて従来の横／縦スクロールで閲覧できます。カードの順番・個体・向き・公開範囲は変えません。

`holderHorizontalAlign` は `left | center | right`、`holderVerticalAlign` は `top | center | bottom`。どちらも省略は `center`。`holderLayout`、`holderOverlap`とは独立した任意項目です。通常・個人・チームのホルダーで共用します。単一JSONの保存・読込・書出で保持し、Schema 20／処理形式4のままです。[サンプル](examples/holder-alignment.json)。

チームタブ内の本人の `tokenAffiliation:"player"` トークンは、同じ所属チームタブ内での手動移動に限り自動モード・手番外でも利用できます。カード権限を流用せず `tokens:move` で判定し、明示的な禁止と `canMove:false` / `tokenMovement:"none"`、所有者限定、回答待ち・終了・秘密情報の制限は維持します。一般のチームタブ操作や他人・チーム所属の駒、別タブへの移動には手番例外を広げません。追加JSON項目・個別変換は不要です。例は `examples/player-team-tokens.json`。
# 山札を選ぶ処理

場所付き実カードchoiceのActionへ `topOnly:true` を指定すると、各山・収納先の先頭1枚だけが候補になります。裏向きカードは表を公開せず裏面だけで選びます。条件はallとし、並べ替え・件数指定・候補変数条件は併用不可。[仕様と例](physical-card-values.md#山札の一番上だけを選ぶ)。

カードの拡大画面は処理の `showCard` からも開けます。任意メッセージを同じ画面へ添えられます。対象者が現在閲覧できるカード個体から表示し、非公開の面・説明は見せません。[処理仕様](action-reference.md#カードを拡大表示showcard)。

外部JSONの「読込」は、元の画像形式、公開Schema、処理の設定・参照・公開範囲を検証し、エラーを場所と理由の一覧で表示します。エラーがあるファイルは取り込まず、編集中のゲームを保持します。作者のSVG・外部画像URL・一時画像参照は使用できません。PNG・JPEG・WebP・GIFを埋め込んでください。正式な組込み画像の参照は既存の例外です。保存済み下書きを修復するために開く操作とは区別します。

## 本人の所有カード内訳

個人ボックスの定義IDと組込手札を `settings.cardInventory` へ指定できます。通常ボックスの所在判定と同じ範囲を、本人向けに集計します。共有市場は指定できません。設定形式・一時所有者・移行は[データ仕様](game-data-spec.md#本人の所有カード内訳)、[完全な例](examples/card-inventory.json)を参照してください。

## カウンターのゲーム中の手動操作

カウンター本体を選び「ゲーム中の設定」→「ゲーム中に操作できる」を設定します。`counterControlsEnabled`はboolean、省略時trueです。falseではゲーム・確認画面に＋／−を出さず、手動の値変更を禁止します。値の表示は維持し、ボタン・フェーズ等のcounter処理からの増減・代入は可能です。ONでも手番・回答待ち・既存の操作権限は検査します。OFFを一時的な操作許可で迂回できません。例：[counter-controls.json](examples/counter-controls.json)。旧JSONは変更不要です。
