/* チペクエスト(β)。raid.css と同じ調子(暗い背景・細い枠線)。 */
/* リンク窓の高さいっぱいを使う。子の数(通知・エラーの有無)で崩れないよう
   グリッドの行指定ではなく flex + flex:1 で「残りぜんぶ」を渡す。
   .cq-panel 自体は常に非スクロールの基準(position:relative)に固定し、
   スクロールは内側の .cq-panel-body だけに持たせる。ここがスクロールすると、
   inset:0 で重ねている .cq-modal(背面シャドウ)がスクロール量ぶんズレて
   下端より先が露出してしまうため。 */
/* touch-action:manipulation(R17): ボタン連打がダブルタップズームに化けないように */
.cq-panel{position:relative;display:flex;flex-direction:column;height:100%;padding:14px;overflow:hidden;background:var(--surface);color:var(--text);touch-action:manipulation}
/* 全画面(cq-mode。スマホは常にこの窓が画面いっぱい)は没入感重視: 白いページ面を出さない。
   パネル全体をゲームの闇色で塗り、角丸ステージの四隅や縁から背景が覗かないようにする。
   窓(reaction-window)自体も同じ闇色にする: PCで幅を狭めるなどして窓寸法に端数pxが出ると、
   パネルと窓境界の間に窓の背景(白)が右端・下端の細い線になって覗くため(実症状)。 */
.reaction-window.cq-mode{background:#101223;border-color:#2a2f45}
.reaction-window.cq-mode .reaction-window-body{padding:0}
.reaction-window.cq-mode .cq-panel{background:#101223;color:#e9edf6}
.reaction-window.cq-mode .cq-head{border-bottom-color:#2a2f45}
.reaction-window.cq-mode .cq-head small{color:#8f96ad}
.reaction-window.cq-mode .cq-head h3{color:#f2ecdc}
.cq-panel-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;overflow-y:auto}
.cq-panel-body>.cq-home{display:grid;gap:10px}
.cq-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px;border-bottom:1px solid var(--line)}
.cq-head small{display:block;color:var(--muted);font:.58rem ui-monospace,monospace;letter-spacing:.12em}
.cq-head h3{margin:2px 0 0;font-size:1rem}
.cq-badge{padding:3px 8px;border:1px solid var(--accent);color:var(--accent);font-size:.62rem;font-weight:800}
.cq-notice{margin:0;padding:8px 10px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font-size:.68rem}
.cq-notice.warning{border-color:#c88b1d;background:#fff4cf;color:#6c4700}
.cq-error{margin:0;padding:8px 10px;border:1px solid var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface-2));color:var(--danger);font-size:.68rem;font-weight:700}
/* モーダル内エラー(R17c)。闇色のモーダル上でも読めるよう明るい下地を明示 */
.cq-modal-error{margin:8px 10px 0;border-radius:6px}

.cq-stats{display:flex;flex-wrap:wrap;gap:6px}
.cq-stats span{display:flex;align-items:baseline;gap:5px;padding:7px 9px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:.64rem}
.cq-stats b{font-size:.86rem}

/* ホーム: 暗いグラデーションの舞台にドールを大きく置き、左上に所持情報を重ねる */
/* 上padding大きめ: ドールの絵は標準枠の上へはみ出せる(R6の二層方式)ので、
   背の高いドールが箱の上端で見切れないよう余白を確保する(R8) */
.cq-stage-home{position:relative;display:grid;justify-items:center;align-content:end;gap:6px;min-height:320px;padding:56px 12px 16px;overflow:hidden;border:1px solid #2a2f45;border-radius:6px;
  background:radial-gradient(120% 90% at 50% 108%,#2f2350 0%,#1b1b33 42%,#0c0d18 100%)}
/* 足元の淡い光。舞台の中心にドールが立っているように見せる */
.cq-stage-home::after{content:'';position:absolute;left:50%;bottom:44px;width:190px;height:52px;transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(50% 50% at 50% 50%,rgb(150 130 255 / 22%),transparent 70%)}
.cq-hud{position:absolute;top:10px;left:10px;display:grid;gap:3px;justify-items:start;z-index:2}
.cq-hud span{display:flex;align-items:baseline;gap:5px;padding:3px 8px;border:1px solid rgb(216 180 90 / 40%);border-radius:3px;background:rgb(8 9 16 / 72%);color:#cbd2e0;font-size:.58rem}
.cq-hud b{color:#ffe9a8;font-size:.72rem;font-variant-numeric:tabular-nums}
.cq-hud-warn{border-color:rgb(224 120 90 / 55%)!important}
.cq-hud-warn b{color:#ffb59a}
/* ドールは冒険中と同じようにゆっくり上下する。クリックでぴょんと跳ねる */
.cq-doll{position:relative;z-index:1;display:grid;justify-items:center;cursor:pointer;user-select:none}
.cq-hero-sprite{display:block;image-rendering:pixelated;background-repeat:no-repeat;animation:cq-bob 2.6s ease-in-out infinite}
/* DOMスプライトの二層構造(R6): 親=枠寸法の箱(レイアウト・タイルの実寸)、
   子=枠内座標に絶対配置するセル画像。overflow:visible なので枠からはみ出した絵も
   canvas(冒険画面)と同じようにそのまま見える(枠サイズの背景方式では必ず切れていた) */
.cq-sprite-box{position:relative;overflow:visible}
.cq-sprite-box>b{position:absolute;display:block;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}
/* 輝き(R8→R9)。ドールをカードに見立て、主役は表面を流れる光沢(.cq-shine)。
   オーラは控えめな脈動に留める。filterは箱(親)に掛ける:
   子(セル画像)のインラインfilter(色プリセットのhue-rotate)をアニメで潰さないため */
.cq-sparkle{animation:cq-sparkle-glow 2.8s ease-in-out infinite}
@keyframes cq-sparkle-glow{
  0%,100%{filter:drop-shadow(0 0 2px rgb(255 232 160 / 40%))}
  50%{filter:drop-shadow(0 0 4px rgb(255 238 180 / 55%))}}
@media(prefers-reduced-motion:reduce){.cq-sparkle{animation:none;filter:drop-shadow(0 0 3px rgb(255 232 160 / 45%))}}
/* 輝きの光沢レイヤー(R9)。セル画像と同じ位置・サイズに重ね、スプライト自身をマスクに
   使うことでドールの不透明ピクセルの上だけをカードの光沢が走る(位置・マスクの
   mask-image/-position/-size はJS側 spriteStyle().shine がインラインで入れる)。
   帯の動き(background-position)はドール選択タイルの光沢(cq-rarity-shine)と同じ */
.cq-sprite-box>b.cq-shine{background-image:linear-gradient(115deg,transparent 35%,rgb(255 255 255 / 50%) 47%,rgb(255 240 190 / 42%) 50%,rgb(255 226 150 / 30%) 53%,transparent 65%);
  background-size:240% 100%;background-position:170% 0;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;
  animation:cq-rarity-shine 2.8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.cq-sprite-box>b.cq-shine{animation:none;background-image:none}}
/* アイテム屋(R20) */
.cq-items-balance{margin:0 0 8px;color:#c9d0e2;font-size:.72rem}
.cq-items-balance b{color:#ffe9a8;font-size:.9rem}
.cq-item-card{display:grid;gap:6px;padding:12px;border:1px solid #4b4570;border-radius:8px;background:#1d1a3a;color:#e9edf6}
.cq-item-card strong{font-size:.82rem}
.cq-item-card small{color:#aab2c5;font-size:.64rem;line-height:1.5}
.cq-item-active{color:#8af0a0!important;font-weight:700}
/* パーティ情報(R20) */
.cq-member-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.cq-member-list li{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #4b4570;border-radius:6px;background:#1d1a3a;color:#e9edf6}
.cq-member-list li div{display:grid;gap:2px;min-width:0}
.cq-member-list li small{color:#aab2c5;font-size:.62rem}
.cq-member-nodoll{width:44px;height:60px;border:1px dashed #4b4570;border-radius:4px}
.cq-diary-actions{display:flex;gap:6px}
/* 再生速度(R20) */
.cq-speed-set{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:.62rem}
/* ドール選択のソート切替(R19) */
.cq-sort-row{display:flex;gap:6px;margin-bottom:8px}
.cq-sort-row button{padding:5px 12px;border:1px solid #4b4570;border-radius:6px;background:#1d1a3a;color:#c9d0e2;font-size:.64rem;cursor:pointer}
.cq-sort-row button.active{border-color:#d8b45a;color:#ffe9a8;box-shadow:0 0 0 1px #d8b45a inset}
/* ステータス振り分けの±ボタン(R19。スマホのスライダー1刻み操作対策) */
.cq-alloc-step{width:28px;height:26px;padding:0;border:1px solid #6a5fa0;border-radius:6px;background:linear-gradient(180deg,#3d3567,#2b254c);color:#e9edf6;font-size:.8rem;line-height:1;cursor:pointer;touch-action:manipulation}
.cq-alloc-step:disabled{opacity:.35}
/* 詳細ステータス(R19)。ポイント変更でリアルタイムに変わる実数値 */
.cq-detail-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:8px}
.cq-detail-stats span{display:flex;align-items:baseline;justify-content:space-between;gap:4px;padding:5px 8px;border:1px solid #4b4570;border-radius:5px;background:rgb(0 0 0 / 25%);color:#c9d0e2;font-size:.6rem}
.cq-detail-stats b{color:#ffe9a8;font-size:.78rem}
/* LBの層条件(R19) */
.cq-lb-floor-row{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:.66rem;color:#c9d0e2}
.cq-lb-floor-row select{padding:5px 8px;border:1px solid #4b4570;border-radius:5px;background:#15132b;color:#e9edf6;font-size:16px}
.cq-skill-lb-desc{display:block;width:100%;color:#c9b6ff}
/* 詳細ポップアップの輝きトグル */
.cq-sparkle-row{display:flex;justify-content:center;margin-top:2px}
.cq-sparkle-toggle{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border:1px solid #4b4570;border-radius:6px;background:#1d1a3a;color:#c9d0e2;font-size:.66rem;cursor:pointer}
.cq-sparkle-toggle.active{border-color:#d8b45a;color:#ffe9a8;box-shadow:0 0 0 1px #d8b45a inset,0 0 10px rgb(216 180 90 / 35%)}
/* 幅・高さ・位置(marginTop)は JS 側(dollShadowStyle)が冒険中と同じ式で入れる */
.cq-doll-shadow{display:block;width:70px;height:16px;border-radius:50%;background:rgb(0 0 0 / 45%);filter:blur(2px);animation:cq-shadow 2.6s ease-in-out infinite}
/* 跳ねは外側(.cq-doll)に掛ける。内側のスプライトの揺れ(cq-bob)を上書きしないので、
   跳ね終わったあとも揺れが続く。 */
.cq-doll.hop{animation:cq-hop .5s cubic-bezier(.3,-0.4,.4,1.4)}
.cq-doll.hop .cq-doll-shadow{animation:cq-hop-shadow .5s cubic-bezier(.3,-0.4,.4,1.4)}
@keyframes cq-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes cq-shadow{0%,100%{transform:scale(1);opacity:.45}50%{transform:scale(.86);opacity:.3}}
@keyframes cq-hop{0%{transform:translateY(0)}35%{transform:translateY(-34px)}60%{transform:translateY(0) scaleY(.92)}100%{transform:translateY(0)}}
@keyframes cq-hop-shadow{0%{transform:scale(1);opacity:.45}35%{transform:scale(.6);opacity:.2}100%{transform:scale(1);opacity:.45}}
@media(prefers-reduced-motion:reduce){.cq-hero-sprite,.cq-doll-shadow{animation:none}}
.cq-doll-name{position:relative;z-index:1;display:grid;justify-items:center;gap:2px}
.cq-doll-name strong{color:#f2f4fa;font-size:.9rem;text-shadow:0 2px 6px rgb(0 0 0 / 70%)}
.cq-stars{color:#f0c85a;letter-spacing:.06em;font-size:.66rem}
/* 入口ボタン。金の縁と艶のある面で「ゲームのボタン」らしく */
.cq-menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:8px}
.cq-menu button{position:relative;display:grid;gap:2px;padding:13px 10px;border:1px solid #b28a3a;border-radius:7px;color:#fff6dd;font-size:.76rem;font-weight:800;letter-spacing:.02em;cursor:pointer;overflow:hidden;
  background:linear-gradient(180deg,#4a3f6d 0%,#332b52 55%,#241f3d 100%);
  box-shadow:0 3px 0 #1a1730,0 6px 14px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 22%);
  text-shadow:0 1px 2px rgb(0 0 0 / 65%);transition:transform .08s ease,box-shadow .08s ease,filter .15s ease}
/* 上端の光沢 */
.cq-menu button::before{content:'';position:absolute;inset:0 0 auto;height:42%;background:linear-gradient(180deg,rgb(255 255 255 / 16%),transparent);pointer-events:none}
.cq-menu button:hover:not(:disabled){filter:brightness(1.12)}
.cq-menu button:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 0 #1a1730,0 2px 6px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 18%)}
.cq-menu button:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.6)}
.cq-menu button small{color:#ffd98a;font-size:.55rem;font-weight:700}
.cq-menu-wide{grid-template-columns:1fr}
/* 進行中の冒険へ入る導線だけは金で目立たせる(他のメニューと同じ形は保つ) */
.cq-menu button.cq-menu-accent{border-color:#e8c76a;background:linear-gradient(180deg,#c79a3d 0%,#a67c2a 55%,#8a6520 100%);box-shadow:0 3px 0 #5d4415,0 6px 14px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 30%)}
.cq-menu button.cq-menu-accent:active:not(:disabled){box-shadow:0 0 0 #5d4415,0 2px 6px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 25%)}
/* 入口タイル: アイコン+ラベルを縦積みにした2〜3列グリッド(auto-fitで幅に応じて列数が変わる) */
.cq-menu.cq-entry-grid{grid-template-columns:repeat(auto-fit,minmax(94px,1fr))}
.cq-menu .cq-entry{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px 8px 12px;text-align:center}
/* 冒険中のアイテム屋など、開けない入口(R24) */
.cq-menu .cq-entry:disabled{opacity:.45;cursor:default;filter:grayscale(.5)}
/* ドロップTips(R25) */
.cq-tips-sec{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.cq-tips-sec:last-child{border-bottom:0}
.cq-tips-title{display:block;font-size:.78rem;margin-bottom:4px}
/* content-visibility: 画面外のバンドは描画をスキップ(サムネ数百枚の一括描画を防ぐ) */
.cq-tips-band{display:flex;align-items:flex-start;gap:10px;margin-top:8px;content-visibility:auto;contain-intrinsic-size:auto 72px}
.cq-tips-more{padding:6px 10px;font-size:.62rem;border:1px solid var(--line);background:var(--surface);color:var(--muted);align-self:center}
.cq-tips-range{flex:0 0 74px;font-size:.62rem;color:var(--muted);padding-top:8px}
.cq-tips-drops{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.cq-entry-icon{width:24px;height:24px;flex:0 0 auto;color:#ffe9a8;filter:drop-shadow(0 1px 2px rgb(0 0 0 / 50%))}
.cq-entry-label{font-size:.7rem;line-height:1.3}
/* 「参加中」バッジはタイル右上に小さく重ねる(.cq-menu button smallの金文字より詳細度を上げて白文字にする) */
.cq-menu button.cq-entry .cq-entry-badge{position:absolute;top:6px;right:6px;padding:1px 6px;border-radius:999px;background:#2f6ecb;color:#fff;font-size:.5rem;font-weight:800;letter-spacing:.02em}
/* 「自分の冒険を見る」だけはアイコン+テキストの横並び */
.cq-menu button.cq-menu-accent{display:flex;align-items:center;justify-content:center;gap:8px}
.cq-entry-icon-inline{width:20px;height:20px;flex:0 0 auto;color:#fff6dd}

/* 見直し用のシークバー(⏮・一時停止トグル・シーク・倍速ボタン) */
.cq-seek{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cq-seek button{width:32px;height:26px;padding:0;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:.7rem}
.cq-seek input[type=range]{flex:1;min-width:80px}
.cq-seek small{color:var(--muted);font-size:.58rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.cq-speed-group{display:flex;gap:3px}
.cq-speed-btn{width:26px;height:22px;padding:0;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);font-size:.56rem;line-height:1}
.cq-speed-btn.active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;font-weight:700}

.cq-resume{margin:0}
.cq-sub{display:flex;align-items:center;justify-content:space-between;font-size:.74rem}
.cq-sub button{padding:4px 9px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:.6rem}

/* ポップアップ(ホーム以外の画面はすべてこれ)。
   パネルの中に収める(absolute)。fixed にするとTYPEリンクの窓を飛び越えて
   ブラウザ全体を覆ってしまう。 */
.cq-modal{position:absolute;inset:0;z-index:90;display:grid;place-items:center;padding:12px;background:rgb(4 4 12 / 62%);backdrop-filter:blur(2px)}
.cq-modal-box{display:flex;flex-direction:column;width:min(560px,100%);max-height:100%;border:2px solid #b28a3a;border-radius:9px;overflow:hidden;
  background:linear-gradient(180deg,#232043,#191735);color:#e9edf6;box-shadow:0 18px 44px rgb(0 0 0 / 55%),inset 0 1px 0 rgb(255 255 255 / 12%)}
.cq-modal-narrow{width:min(340px,100%)}
.cq-modal-box>header{position:relative;display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 18px;border-bottom:1px solid rgb(216 180 90 / 40%);
  background:linear-gradient(120deg,#3f3670,#2a2550 60%,#221f42);color:#ffe9a8;font-size:.84rem;font-weight:800;text-shadow:0 1px 2px rgb(0 0 0 / 60%);overflow:hidden}
/* 帯ヘッダーの左に飾りバー(金のグラデ)を添える */
.cq-modal-box>header::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(180deg,#ffe9a8,#c79a3d 55%,#8a6520);box-shadow:0 0 8px rgb(216 180 90 / 50%)}
.cq-modal-box>header button{width:30px;height:30px;border:0;border-radius:5px;background:rgb(255 255 255 / 10%);color:#ffe9a8;font-size:1rem;cursor:pointer}
.cq-modal-box>header button:hover{background:rgb(255 255 255 / 20%)}
/* スクロール領域の外に置く固定フッター(決定ボタン等)。flex子として縮まない */
.cq-modal-foot{flex:0 0 auto;display:grid;padding:10px 13px 12px;border-top:1px solid rgb(216 180 90 / 30%);background:rgb(0 0 0 / 18%)}
.cq-modal-foot .cq-primary{border:1px solid #d8b45a;border-radius:6px;padding:9px 14px;background:linear-gradient(180deg,#c79a3d,#9a7226);color:#fff8e6;font-weight:800;cursor:pointer;
  box-shadow:0 3px 0 #6d4f18,inset 0 1px 0 rgb(255 255 255 / 25%);text-shadow:0 1px 2px rgb(0 0 0 / 45%)}
.cq-modal-foot .cq-primary:active{transform:translateY(2px);box-shadow:0 1px 0 #6d4f18}
/* flex親(.cq-modal-box)の中でスクロールさせるには min-height:0 が必須。
   無いと中身の高さぶん伸びて overflow:hidden の箱に下端が切られ、
   末尾のボタン(この設定で決定など)が半分欠けて見える(R3のレイアウト崩れの原因) */
.cq-modal-body{display:grid;gap:9px;align-content:start;padding:13px 13px 16px;overflow-y:auto;overflow-x:hidden;flex:1 1 auto;min-height:0}
/* ポップアップの中はホームと同じ暗い地なので、文字と入力の色を合わせる */
.cq-modal-body .cq-empty,.cq-modal-body .cq-hint,.cq-modal-body .cq-select-label,.cq-modal-body .cq-minutes,.cq-modal-body .cq-create label{color:#a9b2c8}
.cq-modal-body strong{color:#f2f4fa}
.cq-modal-body input[type=number],.cq-modal-body select{border:1px solid #4b4570;border-radius:5px;background:#15132b;color:#e9edf6}
.cq-modal-body .cq-notice{border-color:#4b4570;background:rgb(255 255 255 / 6%);color:#c9d0e2}
/* ポップアップ内の汎用ボタン */
.cq-modal-body button{border:1px solid #6a5fa0;border-radius:6px;background:linear-gradient(180deg,#3d3567,#2b254c);color:#e9edf6;cursor:pointer}
.cq-modal-body button:hover:not(:disabled){filter:brightness(1.15)}
.cq-modal-body button:disabled{opacity:.45;cursor:not-allowed}
.cq-modal-body .cq-primary{border-color:#d8b45a;background:linear-gradient(180deg,#c79a3d,#9a7226);color:#fff8e6;font-weight:800;
  box-shadow:0 3px 0 #6d4f18,inset 0 1px 0 rgb(255 255 255 / 25%);text-shadow:0 1px 2px rgb(0 0 0 / 45%)}
.cq-modal-body .cq-primary:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 #6d4f18}
.cq-modal-body .cq-tile{border-color:#4b4570;border-radius:6px;background:#1d1a3a;color:#e9edf6}
.cq-modal-body .cq-tile.active{border-color:#d8b45a;box-shadow:0 0 0 1px #d8b45a inset,0 0 12px rgb(216 180 90 / 35%)}
.cq-modal-body .cq-room-list>li,.cq-modal-body .cq-diary>li{border-color:#4b4570;border-radius:6px;background:#1d1a3a}
.cq-modal-body .cq-room-list>li.mine{border-color:#d8b45a}
.cq-modal-body .cq-minutes button.active{border-color:#d8b45a;background:linear-gradient(180deg,#c79a3d,#9a7226);color:#fff8e6}
/* ステータス配分のバー */
.cq-modal-body .cq-alloc{padding:10px;border:1px solid #4b4570;border-radius:7px;background:rgb(0 0 0 / 25%)}
.cq-modal-body .cq-alloc-row span{color:#c9d0e2}
.cq-modal-body .cq-alloc-row b{color:#ffe9a8}
.cq-modal-body .cq-alloc-remain{color:#ffd98a}
.cq-alloc-row input[type=range]{-webkit-appearance:none;appearance:none;height:8px;border-radius:5px;background:linear-gradient(90deg,#7a6bd8,#3a3167);outline:none}
.cq-alloc-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border:1px solid #7a5c1c;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe9a8,#c79a3d);cursor:pointer;box-shadow:0 1px 3px rgb(0 0 0 / 55%)}
.cq-alloc-row input[type=range]::-moz-range-thumb{width:16px;height:16px;border:1px solid #7a5c1c;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe9a8,#c79a3d);cursor:pointer}
.cq-alloc-row input[type=range]:disabled{filter:grayscale(.7);opacity:.6}
.cq-detail{justify-items:center;text-align:center}
/* ドールカラー: 見出し(パレットアイコン+タイトル)+ 色見本(hue 8色)。
   各ボタンはサムネにhue-rotateを掛けただけの色見本(spec ui2 4節) */
.cq-color-section{display:grid;gap:6px;justify-items:center}
.cq-color-title{display:flex;align-items:center;gap:6px;color:#ffe9a8;font-size:.7rem;font-weight:700}
.cq-color-title svg{width:17px;height:17px;flex:0 0 auto}
.cq-color-row{display:flex;gap:5px;flex-wrap:wrap;justify-content:center}
/* 色見本は枠比率(2:3)の縦長タイル。中のサムネは spriteStyle の factor(テンプレート側)で
   タイルに収まる寸法にして中央へ置く(CSS transform での縮小はレイアウト箱と実寸が
   ズレて左下に寄って見える崩れの原因だったので使わない。R3) */
.cq-color-btn{display:grid;place-items:center;width:36px;height:50px;padding:2px;border-radius:6px;overflow:hidden}
.cq-color-btn.active{border-color:#d8b45a;box-shadow:0 0 0 1px #d8b45a inset,0 0 10px rgb(216 180 90 / 40%)}
.cq-detail-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.cq-detail-actions button,.cq-detail>button{padding:7px 14px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:.68rem}
.cq-dup{color:#d08a3c;font-weight:700}
/* LB確認ポップアップの飾りアイコン */
.cq-lb-confirm-icon{width:34px;height:34px;color:#ffe9a8}

/* ステータス設定: 職業/構え/狙いのアイコンタイル選択(プルダウン廃止。spec ui2 5節) */
.cq-field{display:grid;gap:6px}
.cq-field-label{color:#ffe9a8;font-size:.66rem;font-weight:700}
.cq-icon-grid{display:grid;gap:6px}
.cq-icon-grid-4{grid-template-columns:repeat(4,1fr)}
.cq-icon-grid-3{grid-template-columns:repeat(3,1fr)}
.cq-icon-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:9px 4px;border:1px solid #4b4570;border-radius:6px;background:#1d1a3a;color:#c9d0e2}
.cq-icon-tile svg{width:22px;height:22px;flex:0 0 auto;color:#cbd2e0}
.cq-icon-tile small{font-size:.6rem;line-height:1.2;text-align:center}
.cq-icon-tile.active{border-color:#d8b45a;box-shadow:0 0 0 1px #d8b45a inset,0 0 10px rgb(216 180 90 / 30%);color:#ffe9a8}
.cq-icon-tile.active svg{color:#ffe9a8}
.cq-icon-tile:disabled{opacity:.5;cursor:not-allowed}
/* 選んだ職業の技一覧(技名・MP・単体/全体)とLB技名。state.skills/classesから生成する */
.cq-skill-list{display:grid;gap:3px;padding:8px 9px;border:1px solid #4b4570;border-radius:6px;background:rgb(0 0 0 / 22%)}
.cq-skill-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 8px;font-size:.64rem}
.cq-skill-row strong{color:#e9edf6;font-weight:700;white-space:nowrap}
.cq-skill-row small{color:#a9b2c8;white-space:nowrap}
.cq-skill-row.cq-skill-lb{border-top:1px dashed rgb(216 180 90 / 30%);padding-top:4px;margin-top:2px}
.cq-skill-row.cq-skill-lb strong{color:#ffd98a}
/* LB技の効果説明(R21: 名前の横に無理に並べず、行を改めて全幅で出す) */
.cq-skill-lb-desc{flex-basis:100%;margin:0;color:#c9b6ff!important;white-space:normal!important;text-align:left}
/* カバー適性職だけに出るパッシブトグル */
.cq-toggle-row{display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid #4b4570;border-radius:6px;background:rgb(0 0 0 / 18%);color:#e9edf6;font-size:.66rem;cursor:pointer}
.cq-toggle-row input{width:15px;height:15px}
/* 構えの説明(選択中の職業で実際に起きる行だけ) */
.cq-stance-desc{margin:0;padding-left:18px;color:#c9d0e2;font-size:.62rem;line-height:1.6}
.cq-stance-desc li{margin:0}

/* レア度枠(N=銀/R=青/SR=紫/UR=金〜虹+光沢アニメ)。ドール選択タイル・詳細・ドロップ演出で共用する。
   色は --rarity-color/--rarity-glow に載せてから2段階(汎用/タイル内)で border-color を効かせる。
   タイル内(.cq-modal-body .cq-tile)は .active(選択中の枠)より詳細度を上げて負けないようにする。 */
.cq-rarity-n{--rarity-color:#aab2c2;--rarity-glow:rgb(170 178 194 / 32%)}
.cq-rarity-r{--rarity-color:#4f8ce0;--rarity-glow:rgb(79 140 224 / 36%)}
.cq-rarity-sr{--rarity-color:#b571e6;--rarity-glow:rgb(181 113 230 / 42%)}
.cq-rarity-ur{--rarity-color:#e8c76a;--rarity-glow:rgb(232 199 106 / 45%)}
.cq-rarity-n,.cq-rarity-r,.cq-rarity-sr,.cq-rarity-ur{border-color:var(--rarity-color);box-shadow:0 0 9px var(--rarity-glow)}
.cq-modal-body .cq-tile.cq-rarity-n,.cq-modal-body .cq-tile.cq-rarity-r,.cq-modal-body .cq-tile.cq-rarity-sr,.cq-modal-body .cq-tile.cq-rarity-ur{
  border-color:var(--rarity-color);box-shadow:0 0 9px var(--rarity-glow)}
/* SR: 従来URが持っていた「光沢が一筋流れる」演出をSRへ(R8)。縁色はSRの紫のまま。
   注意: ここで overflow:hidden を使ってはいけない。グリッドタイルの自動最小サイズが
   0になってタイルが潰れる(選択画面崩壊の実バグ)うえ、枠からはみ出すドール絵(R6)も
   切ってしまう。光沢(::after)のクリップは border-radius:inherit で代用する */
.cq-rarity-sr{position:relative;border-width:2px;border-style:solid;
  box-shadow:0 0 12px var(--rarity-glow)}
.cq-rarity-sr::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(115deg,transparent 35%,rgb(255 255 255 / 55%) 48%,rgb(220 190 255 / 40%) 52%,transparent 65%);
  background-size:240% 100%;background-position:170% 0;animation:cq-rarity-shine 3.2s ease-in-out infinite}
/* UR: 虹色の光演出(R8)。虹グラデの縁+虹色の光沢が流れる(hue-rotateを要素に掛けると
   中のドールの色まで回ってしまうので、虹は縁(border-image)と光沢(::after)だけで作る) */
.cq-rarity-ur{position:relative;border-width:2px;border-style:solid;
  border-image:linear-gradient(120deg,#f2c46a,#e8846b,#caa6ff,#6fb1ff,#7fe3ac,#f2c46a) 1;
  box-shadow:0 0 12px var(--rarity-glow),0 0 22px rgb(160 120 220 / 26%)}
.cq-rarity-ur::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(115deg,transparent 30%,rgb(255 170 170 / 45%) 42%,rgb(255 240 170 / 50%) 47%,rgb(170 255 200 / 45%) 52%,rgb(170 200 255 / 50%) 57%,rgb(230 170 255 / 45%) 62%,transparent 74%);
  background-size:240% 100%;background-position:170% 0;animation:cq-rarity-shine 2.8s ease-in-out infinite}
@keyframes cq-rarity-shine{0%,55%{background-position:170% 0}100%{background-position:-70% 0}}
@media(prefers-reduced-motion:reduce){.cq-rarity-sr::after,.cq-rarity-ur::after{animation:none}}
/* タイル以外(詳細・ドロップ演出)でスプライト単体に枠を付けるとき用の額縁。
   ショートハンド(border)で下地(幅・線種・透明色)を作り、実際の色は同詳細度の
   ショートハンドに負けないよう、クラス2つ掛け合わせで詳細度を上げた側で上書きする。 */
.cq-rarity-frame{border:2px solid transparent;border-radius:9px;padding:5px;background-color:rgb(0 0 0 / 22%)}
.cq-rarity-frame.cq-rarity-n,.cq-rarity-frame.cq-rarity-r,.cq-rarity-frame.cq-rarity-sr,.cq-rarity-frame.cq-rarity-ur{border-color:var(--rarity-color)}

/* auto-fill(auto-fitではない)で幅いっぱいに折り返す。横スクロールは明示的に禁止し、
   タイル(cq-tile)側もmin-width:0で列幅より縮められるようにして、内容(サムネ)が
   列を押し広げて横にはみ出す事故を防ぐ(spec ui2 3節)。 */
.cq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;max-height:280px;overflow-y:auto;overflow-x:hidden}
.cq-tile{display:grid;justify-items:center;gap:3px;padding:6px 3px;min-width:0;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.cq-tile.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.cq-tile>i{display:block;image-rendering:pixelated;background-repeat:no-repeat}
.cq-tile>small{font-size:.54rem;line-height:1.2;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
div.cq-tile{cursor:default}
.cq-locked>i{filter:brightness(0)}
.cq-locked>small{color:var(--muted)}
.cq-empty{margin:0;color:var(--muted);font-size:.64rem}

.cq-room-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.cq-room-list>li{display:grid;gap:4px;padding:8px;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.cq-room-list>li.mine{border-color:var(--accent)}
.cq-room-head{display:flex;align-items:center;justify-content:space-between}
.cq-room-head small{color:var(--muted);font-variant-numeric:tabular-nums}
.cq-room-members{display:flex;flex-wrap:wrap;gap:5px;font-size:.6rem;color:var(--muted)}
.cq-room-members span.self{color:var(--accent);font-weight:700}
/* 部屋・観戦・日記・リザルトに出すダンジョン名の小さなタグ */
.cq-dungeon-tag{display:inline-block;width:fit-content;padding:1px 7px;border:1px solid var(--accent);color:var(--accent);font-size:.56rem;font-weight:700}
.cq-room-list>li>button{justify-self:start;padding:6px 12px;border:1px solid var(--accent);background:var(--accent);color:#fff;font-size:.66rem}
.cq-room-list>li.mine>button{border-color:var(--danger);background:var(--danger)}

/* 入力欄はラベルの下に置き、間を空ける(横並びだと文字と枠がくっついて読みにくい) */
.cq-create-row{display:flex;gap:12px;flex-wrap:wrap}
.cq-create-row label{flex:1 1 130px}
.cq-create label,.cq-select-label,.cq-create-row label{display:flex;flex-direction:column;gap:4px;font-size:.62rem;color:var(--muted)}
.cq-create input[type=number],.cq-create-row input[type=number]{padding:6px 8px;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.cq-select-label select{padding:5px 7px;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.cq-minutes{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:.6rem;color:var(--muted)}
.cq-minutes button{padding:5px 9px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:.6rem}
.cq-minutes button.active{border-color:var(--accent);color:var(--accent);font-weight:700}
.cq-hint{margin:-4px 0 0;color:var(--muted);font-size:.56rem}
.cq-alloc{display:grid;gap:4px}
/* 並びは 名前・−・＋・スライダー・数値(R21: ±はスライダーの左側) */
.cq-alloc-row{display:grid;grid-template-columns:44px auto auto minmax(0,1fr) 26px;align-items:center;gap:6px;font-size:.6rem}
.cq-alloc-row b{text-align:right;font-variant-numeric:tabular-nums}
.cq-alloc-remain{margin:2px 0 0;font-size:.62rem;font-weight:700;color:var(--muted)}
.cq-alloc-remain.over{color:var(--danger)}
.cq-primary{position:relative;justify-self:start;padding:8px 16px;border:1px solid var(--accent);background:linear-gradient(180deg,var(--accent),var(--accent-strong));color:#fff;font-size:.7rem;font-weight:700;overflow:hidden}
.cq-primary:disabled{opacity:.55}
/* cq-primary系: ホバーで光が一筋走る演出(自身のbox-shadowはoverflow:hiddenの影響を受けないので併用可) */
.cq-primary::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 40%,rgb(255 255 255 / 45%) 50%,transparent 60%);background-size:220% 100%;background-position:150% 0}
.cq-primary:hover:not(:disabled)::after{animation:cq-primary-shine .9s ease}
@keyframes cq-primary-shine{0%{background-position:150% 0}100%{background-position:-50% 0}}
@media(prefers-reduced-motion:reduce){.cq-primary:hover:not(:disabled)::after{animation:none}}

/* ビューワは「上=グラフィック / 下(またはPC全画面では右)=ログ」の2枠。
   親(.reaction-window-body)の高さいっぱいに広げ、ログは常に最大限の高さを取る。 */
.cq-viewer{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}
.cq-view-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.cq-view-bar>button{padding:5px 12px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:.64rem}
.cq-view-bar label{display:flex;align-items:center;gap:6px;font-size:.62rem;color:var(--muted)}
.cq-view-bar input[type=range]{width:140px}

/* LBボタン(アイコン+コストバッジ)。full/medium どちらでも見える cq-view-bar に常設する。
   ソウル所持数はcanvasエリア右上のオーバーレイ(cq-soul-overlay)へ移設した(spec ui2 1節) */
.cq-lb-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
/* LBボタンは金の削り出し。他のボタンより明確に目立たせる(消費が大きい特別な操作なので) */
.cq-lb-btn{position:relative;display:flex;align-items:center;gap:5px;padding:6px 11px;border:1px solid #e8c76a;border-radius:5px;
  background:linear-gradient(180deg,#ffe9a8,#d8a83c 55%,#a67c2a);color:#3a2600;font-weight:800;font-size:.72rem;letter-spacing:.03em;cursor:pointer;
  box-shadow:0 2px 0 #6d4f18,0 4px 10px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 55%);text-shadow:0 1px 0 rgb(255 255 255 / 35%);
  transition:transform .08s ease,box-shadow .08s ease,filter .15s ease}
.cq-lb-icon{width:18px;height:18px;flex:0 0 auto}
.cq-lb-btn small{font-size:.66rem;font-weight:800;opacity:.9;font-variant-numeric:tabular-nums}
.cq-lb-btn:hover:not(:disabled){filter:brightness(1.08)}
.cq-lb-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 0 0 #6d4f18,0 2px 5px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 40%)}
.cq-lb-btn:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.5)}
/* 予約済み(未発動のLBが残っている)間は静かに光らせて、押したことが伝わるようにする */
.cq-lb-btn.pending{animation:cq-lb-pulse 1.4s ease-in-out infinite}
@keyframes cq-lb-pulse{0%,100%{box-shadow:0 2px 0 #6d4f18,0 4px 10px rgb(0 0 0 / 30%),inset 0 1px 0 rgb(255 255 255 / 55%)}
  50%{box-shadow:0 2px 0 #6d4f18,0 4px 18px rgb(232 199 106 / 70%),inset 0 1px 0 rgb(255 255 255 / 55%)}}
@media(prefers-reduced-motion:reduce){.cq-lb-btn.pending{animation:none}}
.cq-lb-pending{color:#ffd98a;font-weight:700}
/* LB専用エラー。cq-view-bar(flex-wrap)の中で単独行になるよう幅いっぱいへ折り返す */
.cq-lb-error{flex-basis:100%;color:#ff8a7a;font-weight:700;font-size:.62rem}
.cq-view-body{flex:1;display:grid;gap:12px;grid-template-rows:auto minmax(0,1fr);min-height:0}
.cq-side{display:flex;flex-direction:column;gap:8px;min-height:0}
.cq-log{flex:1}
.cq-stage-wrap{position:relative;width:100%;max-width:900px;margin:0 auto;min-width:0}
/* ソウル量のDOMオーバーレイ(canvas描画ではない)。full画面ではcanvas右上、
   スマホ中画面ではcanvasの代わりに出るステータス窓(cq-status)の右上に同じ見た目で置く
   (spec ui2 1節: フル/ミディアム両レイアウトで位置調整)。 */
/* 右上のオーバーレイ束(ソウル量+LBボタン)。cq-overlay-tr が位置を持ち、中身は普通のflex子 */
.cq-overlay-tr{position:absolute;top:8px;right:8px;z-index:4;display:flex;align-items:center;gap:6px}
.cq-soul-overlay{display:flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid rgb(216 180 90 / 40%);border-radius:3px;background:rgb(8 9 16 / 72%);color:#cbd2e0;font-size:.62rem}
/* グラフィックエリア内のLBボタン(数値なしのアイコンのみ。R3) */
.cq-overlay-tr .cq-lb-btn{padding:5px 8px}
.cq-overlay-tr .cq-lb-btn small{display:none}
.cq-soul-overlay svg{width:14px;height:14px;flex:0 0 auto;color:#ffe9a8}
.cq-soul-overlay b{color:#ffe9a8;font-variant-numeric:tabular-nums}
.cq-stage{display:block;width:100%;aspect-ratio:640/420;background:#20242a;border:1px solid var(--line)}
/* colorを明示する(R17): cq-mode(全画面)はパネル文字色が明色なので、明るい背景の
   ログが色を継承すると「白文字×白背景」で読めなくなる(実バグ報告) */
.cq-log{display:flex;flex-direction:column;gap:3px;margin:0;padding:6px 8px;min-height:80px;overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);background:var(--surface-2);color:var(--text);list-style:none;font-size:.62rem;line-height:1.55}
/* 行は「薄い地色 + 左の細マーカー」。gap で上下の行がくっつかないようにする */
.cq-log>li{padding:2px 6px;border-left:3px solid transparent;border-radius:2px}
.cq-log-clickable{cursor:pointer;text-decoration:underline dotted currentColor 1px;text-underline-offset:2px}
/* ログの色分け: 敵=赤 / 自分=青 / 他プレイヤー=緑 / システム=黒。
   セレクタは必ず .cq-log>li より詳細度を高くすること。単なる .cq-log-enemy(0,1,0)だと
   上の .cq-log>li(0,1,1) の border-left ショートハンドに負けて色が出ない。 */
/* マーカーは控えめに、行全体はごく薄い地色で「誰の行か」を面で示す */
.cq-log>li.cq-log-enemy{border-left-color:rgb(208 82 72 / 55%);background:rgb(208 82 72 / 9%)}
.cq-log>li.cq-log-self{border-left-color:rgb(59 127 224 / 55%);background:rgb(59 127 224 / 9%)}
.cq-log>li.cq-log-ally{border-left-color:rgb(63 174 92 / 55%);background:rgb(63 174 92 / 9%)}
.cq-log>li.cq-log-system{border-left-color:rgb(127 127 127 / 55%);background:rgb(127 127 127 / 9%);color:var(--muted)}
/* リミットブレイクの発動ログだけは専用の金色で目立たせる(演出のカットインと同じ配色) */
.cq-log>li.cq-log-lb{border-left-color:rgb(216 180 90 / 75%);background:rgb(216 180 90 / 16%);font-weight:700}
/* 名前だけ字色を変える(敵=赤・自分=青・他プレイヤー=緑・アイテム=金・LB技名=金) */
.cq-n-enemy{color:#c33d33;font-weight:700}
.cq-n-self{color:#2f6ecb;font-weight:700}
.cq-n-ally{color:#2c8f4c;font-weight:700}
.cq-n-item{color:#a5761c;font-weight:700}
.cq-n-lb{color:#c8931c;font-weight:800}

/* ステータスウインドウ(ゲーム風の二重枠)。
   通常はキャラの頭上(canvas内)に出すのでここでは隠し、canvasを表示しない
   スマホ中画面でだけ代わりに出す。
   .cq-status自体は非スクロールの基準(position:relative)に固定し、.cq-soul-overlayは
   その直下に置く。中のバー一覧だけを.cq-status-scrollに分離してスクロールさせることで、
   スクロールしてもオーバーレイが流れないようにする(.cq-panel/.cq-panel-bodyと同じ形、ui2レビューfinding3)。 */
.cq-status{position:relative;display:none;flex-direction:column;min-height:0;padding:12px 14px;border:2px solid #d8b45a;outline:1px solid rgb(0 0 0 / 45%);outline-offset:2px;background:linear-gradient(180deg,rgb(22 26 44 / 96%),rgb(14 16 28 / 96%));color:#e9edf6;border-radius:4px}
.cq-status-scroll{display:grid;gap:9px;min-height:0}
.cq-status-floor{display:flex;align-items:baseline;gap:8px;padding-bottom:5px;border-bottom:1px solid rgb(216 180 90 / 45%)}
.cq-status-floor strong{color:#ffe9a8;font-size:1rem}
.cq-status-floor small{color:#aab3c5;font-size:.58rem}
.cq-bar-unit{display:grid;gap:2px}
.cq-bar-unit>small{font-size:.6rem;color:#cbd2e0}
.cq-bar-unit.dead{opacity:.45}
/* バーの中に数値を重ねる(50/500 形式) */
.cq-bar-unit i{position:relative;display:block;height:14px;border:1px solid rgb(0 0 0 / 55%);background:rgb(0 0 0 / 45%);overflow:hidden}
.cq-bar-unit i>b{display:block;height:100%}
.cq-bar-unit i>em{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:5px;font-style:normal;font-size:.56rem;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 2px rgb(0 0 0 / 90%)}
.cq-bar-unit i.cq-hp>b{background:linear-gradient(180deg,#4fd07a,#2e8f4c)}
.cq-bar-unit i.cq-mp>b{background:linear-gradient(180deg,#5aa0f0,#2f66b8)}
.cq-bar-enemy i.cq-hp>b{background:linear-gradient(180deg,#e2685e,#a5342c)}

/* PC全画面(TYPEリンクの⛶): 左グラフィック・右ログの2カラム。
   行の高さは「グラフィックの高さ」で決める(auto)。1fr にすると余った高さまで
   伸びて、ログだけが下へはみ出して段差になる。 */
@media(min-width:761px){
  .cq-view-full .cq-view-body{grid-template-columns:minmax(0,1fr) minmax(260px,340px);grid-template-rows:auto;align-items:stretch;align-content:start}
  .cq-view-full .cq-side{min-height:0}
}
@media(max-width:760px){
  /* スマホ中画面は canvas を隠し、上に味方・敵のステータス窓、下にログを出す
     (描画と通信は動いたままなので、全画面に切り替えれば続きから見られる) */
  .cq-view-medium .cq-stage-wrap{display:none}
  .cq-view-medium .cq-status{display:flex;flex:0 0 auto;max-height:46%}
  .cq-view-medium .cq-status-scroll{overflow:auto}
  .cq-view-medium .cq-log{flex:1;min-height:0}
}
/* 冒険日記 */
.cq-diary{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.cq-diary>li{display:grid;gap:3px;padding:8px;border:1px solid var(--line);background:var(--surface-2)}
.cq-diary-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.cq-diary-head strong{font-size:.74rem}
.cq-diary small{color:var(--muted);font-size:.58rem}
.cq-diary>li>button{justify-self:start;padding:5px 11px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:.62rem}
.cq-log-full{max-height:none}
/* リザルト: パネルいっぱいに広げる(ブラウザ全体ではない。.cq-modal が absolute) */
.cq-result-modal{padding:0}
.cq-result{display:grid;align-content:start;gap:10px;width:100%;height:100%;padding:16px;overflow:auto;color:#e9edf6;
  background:radial-gradient(120% 90% at 50% -10%,#33285c 0%,#1d1b38 45%,#0e0e1c 100%)}
.cq-result small{color:#a9b2c8}
.cq-result-table th{background:rgb(255 255 255 / 8%);color:#a9b2c8;border-color:#3d3767}
.cq-result-table td{border-color:#3d3767}
.cq-result-drops li{border-color:#3d3767;background:rgb(255 255 255 / 5%)}
.cq-result-actions button{border-color:#6a5fa0;background:linear-gradient(180deg,#3d3567,#2b254c);color:#e9edf6}
/* リザルトバナー: 勝敗で背景ごと配色が変わる帯(成功=金/撤退=青灰/全滅=赤黒) */
.cq-result-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 16px;border-radius:8px;
  border:1px solid rgb(255 255 255 / 18%);box-shadow:0 8px 20px rgb(0 0 0 / 35%),inset 0 1px 0 rgb(255 255 255 / 16%)}
.cq-result-banner strong{font-size:1.15rem;text-shadow:0 2px 6px rgb(0 0 0 / 60%)}
.cq-result-banner .cq-dungeon-tag{border-color:currentColor;color:inherit;background:rgb(0 0 0 / 18%)}
.cq-result-banner-success{background:linear-gradient(120deg,#8a6520,#c79a3d 45%,#e8c76a);color:#fff8e6}
.cq-result-banner-retreat{background:linear-gradient(120deg,#394254,#4d5872 45%,#6a7690);color:#eef1f6}
.cq-result-banner-wipe{background:linear-gradient(120deg,#3a0f10,#6b1a1a 45%,#8f2323);color:#ffe1de}
.cq-outcome-success{color:#2c8f4c}
.cq-outcome-retreat{color:#a5761c}
.cq-outcome-wipe{color:var(--danger)}
.cq-result p{margin:0;color:var(--muted);font-size:.66rem;line-height:1.6}
.cq-result-table{width:100%;border-collapse:collapse;font-size:.64rem}
.cq-result-table th,.cq-result-table td{padding:5px 7px;border:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums}
.cq-result-table th{background:var(--surface-2);text-align:right;font-size:.58rem;color:var(--muted)}
.cq-result-table th:first-child,.cq-result-table td:first-child{text-align:left}
.cq-result-table td:first-child{display:flex;align-items:baseline;gap:6px}
.cq-result-table td small{color:var(--muted);font-size:.54rem}
.cq-result-table tr.self{background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:700}
.cq-result-drops{display:grid;gap:6px}
.cq-result-drops ul{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.cq-result-drops li{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);background:var(--surface-2)}
.cq-result-drops li>i{flex:0 0 auto;image-rendering:pixelated;background-repeat:no-repeat}
.cq-result-drops li>div{display:grid;gap:1px}
.cq-result-drops li small{color:var(--muted);font-size:.56rem}
/* 被りソウル化の表記(R34): flexで潰されて折れ曲がる/見えなくなるのを防ぐ */
.cq-result-drops li>small.cq-dup{margin-left:auto;flex:0 0 auto;white-space:nowrap}
.cq-result-actions{display:flex;gap:8px;flex-wrap:wrap}
.cq-result-actions button{padding:8px 16px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-size:.7rem}
/* .cq-primary側(基本ルール)がボーダー色・グラデ・文字色ともに同じ値を持つので、ここでの上書きは廃止(グラデを消してしまうため) */
/* リザルトは常に暗色の専用デザイン。上のtable/drops/actionsの基本ルールはテーマ変数
   (--surface-2等)を使うため、ライトテーマだと明るい行に白文字が乗って読めなくなる。
   ここで(基本ルールより後・詳細度0,2,1で)暗色に固定し直す(R4: ドール名が見づらい問題の根治)。
   ※ファイル前半にも同じ意図の上書き(L368-370付近)があるが、基本ルールより前にあり負けていた */
.cq-result .cq-result-table th{background:rgb(255 255 255 / 8%);color:#a9b2c8;border-color:#3d3767}
.cq-result .cq-result-table td{border-color:#3d3767;color:#e9edf6}
.cq-result .cq-result-drops li{border-color:#3d3767;background:rgb(15 17 32 / 85%)}
.cq-result .cq-result-drops li strong{color:#fff}
.cq-result .cq-result-drops li small{color:#a9b2c8}
/* R34: 上の灰色上書きが.cq-dupのオレンジまで消していた(詳細度で負けるため明示的に戻す) */
.cq-result .cq-result-drops li small.cq-dup{color:#e8a35c}
/* 全滅で持ち帰れなかったドール(R42)。灰色に沈めて「失った」ことを見せる */
.cq-result-drops li.lost{opacity:.55;filter:grayscale(.65)}
.cq-result-lost-note{font-size:.62rem;margin:0}
.cq-result .cq-result-actions button{border-color:#6a5fa0;background:linear-gradient(180deg,#3d3567,#2b254c);color:#e9edf6}

@media(max-width:760px){
  .cq-panel{padding:8px}
  .cq-panel-body{gap:8px}
  .cq-alloc-row{grid-template-columns:38px auto auto minmax(0,1fr) 22px}
  /* 職業(4)・構え(8=4x2)は狭い画面だと3列の方が窮屈にならない。狙い(3)はそのまま */
  .cq-icon-grid-4{grid-template-columns:repeat(3,1fr)}
}
