/*
 * where: tmas-app/animalia-stories.css
 * what: Full-screen CITY, visual-novel, mission-grade, and ARENA battle presentation
 * why: Make every RPG state feel like one continuous Animalia game surface
 */
:root{--rpg-gold:#c9a84c;--rpg-line:rgba(201,168,76,.36);--rpg-panel:rgba(5,7,13,.9);--rpg-title-size:clamp(1.35rem,3vw,2rem);--header-h:60px}
html,body{height:100%;margin:0;overflow:hidden;background:#070810;color:var(--text)}
*{box-sizing:border-box}.rpg-shell{position:fixed;inset:0;padding-top:var(--header-h);background:#080b12;overflow:hidden}.rpg-shell::after{content:'';position:absolute;inset:var(--header-h) 0 0;z-index:8;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.05) 2px 3px)}
.rpg-status span,.rpg-leader span{font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.2em;color:var(--rpg-gold)}
.rpg-controls{position:fixed;z-index:45;right:18px;top:70px;display:flex;gap:8px}.rpg-controls button,.rpg-choice,.rpg-link,.rpg-cmd{position:relative;overflow:hidden;border:1px solid var(--border);background:rgba(10,13,21,.92);color:var(--text);cursor:pointer;border-radius:7px;transition:.18s}.rpg-controls button{padding:10px 13px;font:700 .62rem 'JetBrains Mono',monospace;letter-spacing:.08em}.rpg-controls button[data-command="missions"]{color:#101116;background:var(--rpg-gold);border-color:var(--rpg-gold)}.rpg-controls button:hover,.rpg-choice:hover,.rpg-link:hover,.rpg-cmd:hover:not(:disabled){border-color:var(--rpg-gold);transform:translateY(-1px)}.rpg-nav-audio{background:transparent;border:1px solid var(--border,#2A2A3A);color:var(--text-dim,#9B978F);border-radius:999px;width:30px;height:30px;padding:0;cursor:pointer;font-size:.8rem;flex-shrink:0;line-height:1}.rpg-nav-audio:hover{border-color:var(--rpg-gold);color:#fff}
.rpg-map-screen,.rpg-view{position:absolute;z-index:1;inset:var(--header-h) 0 0;background:#081018}.rpg-map-screen iframe{width:100%;height:100%;border:0;display:block}.rpg-view{z-index:5;overflow:hidden}.rpg-shell[data-mode="map"] .rpg-view{display:none}.rpg-shell:not([data-mode="map"]) .rpg-map-screen{visibility:hidden}.rpg-loading,.rpg-empty{height:100%;display:grid;place-items:center;text-align:center;padding:30px;color:var(--text-dim)}

/* ミッション情報はリーダーカード内のセクション（CURRENT OBJECTIVEの直上）。ミッション受注中のみ表示。 */
.rpg-status{margin:0 0 7px;padding:6px 9px;border-left:2px solid var(--rpg-gold);border-radius:2px;background:rgba(201,168,76,.07);text-align:left;text-shadow:0 2px 8px #000}.rpg-status[hidden]{display:none}.rpg-status strong{display:block;margin-top:2px;font-size:.68rem;color:#fff}.rpg-status small{display:block;margin-top:2px;color:rgba(255,255,255,.58);font-size:.6rem}
.rpg-right-stack{position:fixed;z-index:42;right:18px;top:116px;width:250px;max-height:calc(100vh - 134px);overflow:auto;display:grid;gap:8px;align-content:start;pointer-events:none}/* 2026-09-17: 箱の透明な部分(カード間の隙間・畳んだFEEDの行)が地図のタップを奪っていたので箱は素通しにし、中身だけ受ける */.rpg-right-stack>*{pointer-events:auto}.rpg-leader{position:relative;width:100%;padding:8px 11px;border:1px solid var(--border);border-radius:9px;background:rgba(6,8,14,.9);box-shadow:0 14px 38px #000}/* 2026-07-20 Rii2指示: PLAYER CHARACTER / 名前 / (ファミリー+レベル横並び) の
   3段にして縦幅を詰める。 */
.rpg-leader__profile{display:flex;align-items:center;gap:9px;margin-bottom:4px}
.rpg-leader__meta{min-width:0;display:flex;flex-direction:column;gap:1px}
.rpg-leader__line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:1px}
.rpg-leader__fam{font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.12em;color:var(--rpg-gold)}.rpg-leader img,.rpg-leader__fallback{width:42px;height:42px;flex-shrink:0;object-fit:cover;object-position:top;border-radius:50%;border:2px solid var(--leader-color,var(--rpg-gold));background:#141823}.rpg-leader__fallback{display:grid;place-items:center;color:var(--rpg-gold)}.rpg-leader strong{display:block;max-width:165px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem}
/* ⚠ 上の省略記号はリーダー名用。#rpg-status も .rpg-leader 内なので目的地まで切れる。
   2行に簡素化して縦が空いたので折り返させる。詳細度で勝たせること(同詳細度は後勝ち)。 */
.rpg-leader .rpg-status strong{max-width:none;overflow:visible;white-space:normal;line-height:1.35}
/* リーダーカードは MAP に加え、エリア／施設／物語(novel)でも CURRENT OBJECTIVE を出したままにする。FEEDはMAP専用。 */
.rpg-shell:not([data-mode="map"]):not([data-mode="novel"]) .rpg-right-stack{display:none}
.rpg-shell:not([data-mode="map"]) .rpg-feed-card{display:none}
.rpg-leader__collapse{position:absolute;z-index:2;top:6px;right:6px;width:22px;height:22px;padding:0;border:1px solid var(--border);border-radius:50%;background:rgba(6,8,14,.92);color:var(--rpg-gold);font-size:.62rem;line-height:1;cursor:pointer;transition:.18s}
.rpg-leader__collapse:hover{border-color:var(--rpg-gold);color:#fff}
/* 折りたたみ状態: 丸いリーダーアイコンだけを残し、タップで展開する。 */
.rpg-leader.is-mini{width:auto;justify-self:end;padding:0;border:0;background:transparent;box-shadow:none;cursor:pointer}
.rpg-leader.is-mini .rpg-leader__collapse,.rpg-leader.is-mini .rpg-status,.rpg-leader.is-mini .rpg-leader__profile>div{display:none}
.rpg-leader.is-mini .rpg-leader__profile{margin:0}
.rpg-leader.is-mini img,.rpg-leader.is-mini .rpg-leader__fallback{width:48px;height:48px;box-shadow:0 8px 22px #000}
.rpg-leader.is-mini:hover img,.rpg-leader.is-mini:hover .rpg-leader__fallback{transform:scale(1.08)}
.rpg-novel{position:absolute;inset:0;background:#080a0f;overflow:hidden}/* 2026-07-20 Rii2指示: 畳んだ状態のスマホでは左右スワイプでイラストを見回せる。
   cover で切れている横方向を object-position で送る(JS: rpg-ui-effects.js)。 */
.rpg-novel__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--novel-pan-x,50%) center}
.rpg-novel__pan{display:none;position:absolute;z-index:5;top:50%;transform:translateY(-50%);
  width:38px;height:38px;border-radius:50%;border:1px solid var(--rpg-line);background:rgba(5,7,13,.72);
  color:var(--rpg-gold);font-size:.72rem;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.rpg-novel__pan--l{left:8px}.rpg-novel__pan--r{right:8px}
.rpg-novel__pan:active{background:rgba(201,168,76,.28);transform:translateY(-50%) scale(.92)}
@media(max-width:720px){.rpg-novel.is-copy-collapsed .rpg-novel__pan{display:flex;align-items:center;justify-content:center}}.rpg-novel::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(3,4,8,.38),transparent 35%,rgba(3,4,8,.25) 53%,rgba(3,4,8,.93) 100%),radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,.6) 100%)}
.rpg-novel__portrait{position:absolute;z-index:2;left:50%;right:auto;top:0;bottom:auto;width:auto;height:200%;max-width:none;max-height:none;transform:translateX(-50%);object-fit:contain;object-position:center top;filter:drop-shadow(0 12px 24px #000);pointer-events:none}.rpg-novel__portrait.is-shadow{filter:brightness(.5) contrast(1.15) drop-shadow(0 12px 24px #000)}.rpg-novel__portrait--dante{transform:translateX(-50%) scale(.8);transform-origin:center top}.rpg-novel__portrait--tall{transform:translateX(-50%) translateY(-21%)}
.rpg-novel__title{position:absolute;z-index:2;top:18px;left:18px;max-width:min(620px,72vw);text-shadow:0 3px 16px #000}.rpg-novel__title span{font:700 .62rem 'JetBrains Mono',monospace;letter-spacing:.16em;color:var(--rpg-gold)}.rpg-novel__title h2{margin:5px 0 0;font:900 var(--rpg-title-size)/1.1 'Noto Serif JP',serif;color:#fff}.rpg-novel__district{margin-top:6px;font:700 .62rem 'JetBrains Mono',monospace;letter-spacing:.08em;color:var(--rpg-gold)}.rpg-novel__copy{position:absolute;z-index:3;left:50%;bottom:26px;transform:translateX(-50%);width:min(920px,calc(100vw - 36px));padding:15px 18px;border:1px solid var(--rpg-line);border-radius:8px;background:rgba(5,7,13,.9);box-shadow:0 20px 60px #000}.rpg-novel--area .rpg-novel__copy,.rpg-novel--facility .rpg-novel__copy{background:rgba(5,7,13,.5)}.rpg-novel__speaker{font:700 .59rem 'JetBrains Mono',monospace;letter-spacing:.15em;color:var(--rpg-gold)}.rpg-typewriter{min-height:3.4em;margin-top:8px;font-size:clamp(.78rem,1.45vw,.94rem);line-height:1.75;color:#ede9df}.rpg-typewriter::after{content:'▌';color:var(--rpg-gold);animation:rpgCaret .8s steps(1) infinite}.rpg-typewriter.is-done::after{display:none}@keyframes rpgCaret{50%{opacity:0}}
.rpg-novel__choices{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}.rpg-choice{position:relative;flex:1 1 190px;padding:9px 28px 9px 11px;text-align:left;font-size:.7rem;line-height:1.4}.rpg-choice::after{content:'›';position:absolute;right:10px;color:var(--rpg-gold)}.rpg-choice[data-kind="battle"]{border-color:rgba(212,49,42,.55)}.rpg-choice[data-kind="investigate"]{border-color:rgba(77,184,240,.48)}.rpg-back{position:absolute;z-index:4;right:18px;top:88px;border:1px solid var(--border);border-radius:6px;padding:8px 11px;background:rgba(5,7,13,.8);color:#ddd;cursor:pointer;font-size:.66rem}
/* ── エリア/施設: ▼ で AREA FILE を畳んでイラストを全画面表示 ──
   ▼はAREA FILEパネル(.rpg-novel__copy)内の右上に置く。枠・背景・グロー演出は付けない素のテキストボタン、
   色はパネル文字色に馴染む控えめなトーン(2026-07-18 Rii2指示)。畳んだ後も押せるよう、フェード対象は
   内側の.rpg-novel__copy-innerだけにして、▼自身はパネルのopacityから独立させる。 */
.rpg-copy-toggle{position:absolute;z-index:6;top:6px;right:8px;width:auto;height:auto;padding:2px 5px;display:flex;align-items:center;justify-content:center;border:0;background:none;box-shadow:none;color:rgba(237,233,223,.55);cursor:pointer;font-size:.72rem;line-height:1;transition:transform .25s ease,color .2s}
.rpg-copy-toggle:hover{color:var(--rpg-gold)}
.rpg-copy-toggle:focus,.rpg-copy-toggle:focus-visible{outline:none;box-shadow:none}
.rpg-novel__copy{transition:background .25s ease,border-color .25s ease,box-shadow .25s ease}
.rpg-novel__copy-inner,.rpg-novel__title{transition:opacity .25s ease}
/* 2026-07-20 Rii2指示: 畳んだ時は▲だけを裸で置かず、画面下に枠付きの
   「AREA FILE ▲」バーを残して本文がしまわれている見え方にする。
   ⚠ 回すのはボタンではなく矢印(__arrow)だけ。ボタンごと回すとラベルが逆さになる。 */
.rpg-copy-toggle__label{display:none;font:700 .62rem 'JetBrains Mono',monospace;letter-spacing:.16em}
.rpg-copy-toggle__arrow{display:inline-block;transition:transform .25s ease}
.rpg-novel.is-copy-collapsed .rpg-copy-toggle__arrow{transform:rotate(180deg)}
.rpg-novel.is-copy-collapsed .rpg-copy-toggle{position:static;width:100%;padding:10px 18px;gap:10px;color:var(--rpg-gold)}
.rpg-novel.is-copy-collapsed .rpg-copy-toggle__label{display:inline}
.rpg-novel.is-copy-collapsed .rpg-novel__copy{padding:0;width:auto;min-width:210px;background:rgba(5,7,13,.92);
  border-color:var(--rpg-line);box-shadow:0 18px 46px #000}
.rpg-novel.is-copy-collapsed .rpg-novel__title{opacity:0;pointer-events:none}
/* ⚠ opacity:0 では高さが残りバーにならない。display:none で畳むこと。 */
.rpg-novel.is-copy-collapsed .rpg-novel__copy-inner{display:none}
.rpg-novel.is-copy-collapsed::after{background:linear-gradient(180deg,rgba(3,4,8,.26),transparent 45%,rgba(3,4,8,.4) 100%)}
.rpg-novel--outcome .rpg-novel__copy{background:rgba(5,7,13,.95)}.rpg-novel--outcome .rpg-novel__speaker{color:#e7c86a}.rpg-outcome__clue{display:inline-flex;gap:9px;align-items:center;margin-top:11px;padding:6px 11px;border:1px solid var(--rpg-line);border-radius:6px;background:rgba(201,168,76,.07);font-size:.68rem;color:#ede0be}.rpg-outcome__clue b{color:var(--rpg-gold);font:700 .52rem 'JetBrains Mono',monospace;letter-spacing:.12em}.rpg-outcome__go{border-color:var(--rpg-gold);background:var(--rpg-gold);color:#0a0a0f;font-weight:800;text-align:center;padding-right:11px}.rpg-outcome__go::after{content:none}
.rpg-modal{position:fixed;inset:0;margin:auto;width:min(1120px,92vw);height:min(760px,84vh);max-width:none;max-height:none;padding:0;border:1px solid var(--rpg-line);border-radius:12px;background:#080b12;color:var(--text);box-shadow:0 30px 90px #000;overflow:hidden}.rpg-modal::backdrop{background:rgba(2,3,7,.7);backdrop-filter:blur(4px)}.rpg-modal__content{height:100%;overflow:auto}.rpg-modal__close{position:sticky;z-index:3;float:right;top:12px;margin:12px 12px -44px 0;width:32px;height:32px;border:1px solid var(--border);border-radius:50%;background:rgba(6,8,14,.94);color:#ddd;cursor:pointer;font-size:1.15rem;line-height:1}.rpg-modal__close:hover{color:#fff;border-color:#e05a5a;background:rgba(224,90,90,.12)}
.rpg-modal[open]{animation:rpgModalEnter .24s ease-out}.rpg-modal.is-dialogue{width:min(620px,92vw);height:auto;max-height:82vh}.rpg-dialogue{min-height:300px;padding:24px;background:radial-gradient(circle at 15% 0,rgba(201,168,76,.1),transparent 42%),#080b12}.rpg-dialogue header{display:flex;align-items:center;gap:14px;padding-right:40px}.rpg-dialogue header img,.rpg-dialogue__fallback{width:74px;height:74px;flex:none;border:2px solid var(--rpg-gold);border-radius:10px;object-fit:cover;object-position:top;background:#151824}.rpg-dialogue__fallback{display:grid;place-items:center}.rpg-dialogue header span{color:var(--rpg-gold);font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.12em}.rpg-dialogue h2{margin:5px 0 0;font:900 1.25rem 'Noto Serif JP',serif}.rpg-dialogue blockquote{margin:22px 0 14px;padding:16px 18px;border-left:2px solid var(--rpg-gold);background:rgba(255,255,255,.025);font-size:.8rem;line-height:1.85}.rpg-dialogue__intel,.rpg-dialogue__brief{font-size:.68rem;line-height:1.7;color:var(--text-dim)}.rpg-dialogue__intel b{display:block;margin-bottom:4px;color:var(--rpg-gold);font:.56rem 'JetBrains Mono',monospace;letter-spacing:.12em}.rpg-dialogue__brief{padding:9px;border:1px solid var(--border);border-radius:6px}.rpg-dialogue footer{display:flex;justify-content:flex-end;margin-top:14px}.rpg-dialogue__job{padding:10px 13px;border:1px solid var(--rpg-gold);border-radius:6px;background:var(--rpg-gold);color:#0a0a0f;font-weight:800;cursor:pointer}
@keyframes rpgModalEnter{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
/* プレイヤーピン → 進行度モーダル */
.rpg-progress{max-width:600px;margin:0 auto;padding:30px 24px 36px}
.rpg-progress__head{display:flex;align-items:center;gap:14px;padding-right:40px}
.rpg-progress__head img,.rpg-progress__fallback{width:70px;height:70px;flex:none;border:2px solid var(--rpg-gold);border-radius:12px;object-fit:cover;object-position:top;background:#151824}
.rpg-progress__fallback{display:grid;place-items:center;color:var(--rpg-gold)}
.rpg-progress__head span{color:var(--rpg-gold);font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.12em}
.rpg-progress__head h2{margin:5px 0 0;font:900 1.25rem 'Noto Serif JP',serif}
.rpg-progress__summary{margin:18px 0 6px;padding:10px 13px;border:1px solid var(--rpg-line);border-radius:7px;background:rgba(201,168,76,.06);font-size:.74rem;letter-spacing:.02em}
.rpg-progress__summary b{margin-right:5px;color:var(--rpg-gold);font-weight:700}
.rpg-progress__list{margin:6px 0 0;padding:0;list-style:none}
.rpg-progress__list li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 4px;border-top:1px solid var(--border);font-size:.72rem}
.rpg-progress__no{font:900 .9rem 'Cinzel',serif;color:var(--rpg-gold)}
.rpg-progress__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rpg-progress__stars{color:var(--rpg-gold);letter-spacing:.08em}
.rpg-missions{position:relative;min-height:100%;overflow:auto;padding:28px 24px 34px;background:linear-gradient(145deg,rgba(10,17,28,.93),rgba(6,8,13,.98)),url('animalia-city.svg') center/cover}.rpg-missions__head{max-width:1100px;margin:auto;display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}.rpg-missions__head span{font:700 .59rem 'JetBrains Mono',monospace;letter-spacing:.16em;color:var(--rpg-gold)}.rpg-missions__head h2{margin:5px 0 18px;font:900 clamp(1.5rem,4vw,2.8rem) 'Noto Serif JP',serif}
/* ── ミッション選択モーダル: 事件簿⇄週次連載の切替pill(見出しの右) ── */
.rpg-view-toggle{display:flex;gap:4px;padding:3px;margin-bottom:14px;border:1px solid var(--border);border-radius:999px;background:rgba(6,8,14,.7)}.rpg-view-toggle__btn{padding:6px 13px;border:0;border-radius:999px;background:transparent;color:var(--text-dim);font:700 .58rem 'JetBrains Mono',monospace;letter-spacing:.06em;cursor:pointer;transition:.18s}.rpg-view-toggle__btn:hover{color:#fff}.rpg-view-toggle__btn.is-active{background:var(--rpg-gold);color:#101116}
.rpg-mission-list{max-width:1100px;margin:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.rpg-mission{display:grid;grid-template-columns:42px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:rgba(6,8,14,.86)}.rpg-mission.is-locked{opacity:.42}.rpg-mission__no{font:900 1.05rem 'Cinzel',serif;color:var(--rpg-gold)}.rpg-mission strong{display:block;font-size:.78rem}.rpg-mission small{display:block;color:var(--text-muted);font-size:.61rem}.rpg-grade{min-width:72px;text-align:center}.rpg-grade__stars{display:block;color:var(--rpg-gold);font-size:.76rem;letter-spacing:.08em}.rpg-grade__letter{font:800 .58rem 'JetBrains Mono',monospace;color:var(--text-dim)}.rpg-link{padding:8px 10px;font-size:.65rem}.rpg-link:disabled{cursor:not-allowed;opacity:.6}
.rpg-challenge{display:block;margin-top:4px;color:#d9c47f;font:700 .53rem 'JetBrains Mono',monospace;letter-spacing:.04em}.rpg-cases{position:relative;min-height:100%;overflow:auto;padding:28px 24px 36px;background:linear-gradient(145deg,rgba(7,12,21,.95),rgba(5,7,12,.99)),url('animalia-city.svg') center/cover}.rpg-cases>header,.rpg-case-list{max-width:1100px;margin:auto}.rpg-cases>header span,.rpg-case>span{font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.14em;color:var(--rpg-gold)}.rpg-cases>header h2{margin:5px 0;font:900 clamp(1.5rem,4vw,2.8rem) 'Noto Serif JP',serif}.rpg-cases>header p{margin:0 0 20px;color:var(--text-muted);font-size:.7rem}.rpg-case-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rpg-case{min-height:170px;padding:15px;border:1px solid var(--rpg-line);border-radius:9px;background:rgba(6,8,14,.9)}.rpg-case.is-unsolved{opacity:.45}.rpg-case h3{margin:7px 0 10px;font-size:.84rem}.rpg-case b{display:block;margin-top:7px;color:#e7dfc5;font-size:.72rem}.rpg-case p{margin:7px 0;color:var(--text-muted);font-size:.68rem;line-height:1.65}.rpg-case small{color:var(--text-dim);font-size:.58rem}.rpg-case__stars{color:var(--rpg-gold);letter-spacing:.1em}
.rpg-preview{position:absolute;inset:0;overflow:auto;padding:145px max(24px,calc((100vw - 1050px)/2)) 36px;background:linear-gradient(145deg,#0a111c,#06080e)}.rpg-preview header>span,.rpg-preview__field>span,.rpg-preview legend{font:700 .57rem 'JetBrains Mono',monospace;letter-spacing:.14em;color:var(--rpg-gold)}.rpg-preview h2{margin:5px 0;font:900 clamp(1.5rem,4vw,2.6rem) 'Noto Serif JP',serif}.rpg-preview header p{color:var(--text-muted);font-size:.7rem}.rpg-preview form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;margin:20px 0;padding:16px;border:1px solid var(--rpg-line);border-radius:9px;background:rgba(6,8,14,.88)}.rpg-preview__field{display:grid;gap:7px}.rpg-preview select{width:100%;padding:9px;border:1px solid var(--border);border-radius:6px;background:#0d111b;color:#fff}.rpg-preview fieldset{grid-column:1/-1;border:1px solid var(--border);border-radius:7px}.rpg-preview__clues{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.rpg-preview__clues label{display:flex;gap:7px;align-items:center;font-size:.66rem}.rpg-validation{padding:16px;border:1px solid var(--border);border-radius:9px;background:rgba(6,8,14,.88)}.rpg-validation h3{margin:0;color:var(--rpg-gold);font:800 .72rem 'JetBrains Mono',monospace}.rpg-validation p{font-size:.64rem;color:var(--text-muted)}.rpg-validation ul{margin:10px 0 0;padding:0;list-style:none}.rpg-validation li{display:flex;gap:10px;padding:6px;border-top:1px solid var(--border);font-size:.64rem}.rpg-validation .is-error{color:#ff8c86}.rpg-validation .is-warning{color:#ffd27a}.rpg-validation .is-pass{color:#85d7a4}
.rpg-clue-drawer{position:fixed;z-index:1350;inset:0;display:flex;justify-content:flex-end;padding:70px 14px 14px;background:rgba(2,3,7,.58);opacity:0;visibility:hidden;pointer-events:none;transition:.2s}.rpg-clue-drawer.is-on{opacity:1;visibility:visible;pointer-events:auto}.rpg-clue-card{position:relative;width:min(380px,100%);height:max-content;padding:20px;border:1px solid var(--rpg-line);border-radius:10px;background:rgba(6,8,14,.98);box-shadow:0 20px 60px #000}.rpg-clue-card>button{position:absolute;right:12px;top:10px;border:0;background:transparent;color:#fff;font-size:1.4rem;cursor:pointer}.rpg-clue-card>span{color:var(--rpg-gold);font:700 .55rem 'JetBrains Mono',monospace;letter-spacing:.16em}.rpg-clue-card h2{margin:5px 0;font:900 1.35rem 'Noto Serif JP',serif}.rpg-clue-card p{color:var(--text-muted);font-size:.65rem}.rpg-clue-card ol{padding:0;list-style:none}.rpg-clue-card li{display:flex;gap:10px;padding:10px 4px;border-top:1px solid var(--border);font-size:.7rem}.rpg-clue-card li span{color:var(--rpg-gold);font-family:'JetBrains Mono',monospace}.rpg-clue-card li.is-empty{color:var(--text-muted)}
.rpg-ending{position:relative;height:100%;display:grid;place-items:center;padding:30px;overflow:hidden;background:#080a0f}.rpg-ending::after{content:'';position:absolute;inset:0;background:linear-gradient(rgba(3,4,8,.48),rgba(3,4,8,.9))}.rpg-ending__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.rpg-ending__card{position:relative;z-index:1;max-width:720px;padding:24px;border:1px solid var(--rpg-line);border-radius:10px;background:rgba(5,7,13,.78);text-align:center;box-shadow:0 24px 70px #000}.rpg-ending__grade{font:900 clamp(4rem,13vw,8rem)/1 'Cinzel',serif;color:var(--rpg-gold);text-shadow:0 0 48px rgba(201,168,76,.4)}.rpg-ending h2{font:900 clamp(1.2rem,4vw,2rem) 'Noto Serif JP',serif}.rpg-ending p{line-height:1.85;color:#dedad1}.rpg-ending__meta{display:flex;justify-content:center;gap:16px;margin:18px 0;color:var(--text-dim);font-size:.7rem}
.rpg-arena{height:100%;overflow:auto;padding:84px max(18px,calc((100vw - 1000px)/2)) 24px;background:radial-gradient(ellipse at 50% 12%,rgba(139,34,82,.2),transparent 56%),#090b12}.rpg-arena__title{text-align:center;margin-bottom:10px}.rpg-arena__title span{display:block;font:700 .58rem 'JetBrains Mono',monospace;letter-spacing:.18em;color:var(--rpg-gold)}.rpg-arena__title strong{font:900 clamp(1.4rem,4vw,2.2rem) 'Noto Serif JP',serif}.rpg-battle-turn{text-align:center;font:700 .66rem 'JetBrains Mono',monospace;color:var(--text-muted);margin:10px}.rpg-battle-field{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}.rpg-fighter{position:relative;padding:12px;border:1px solid var(--border);border-radius:10px;background:rgba(13,15,24,.92)}.rpg-fighter.is-enemy{border-color:rgba(212,49,42,.32)}.rpg-fighter.is-hit{animation:rpgShake .3s}@keyframes rpgShake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}.rpg-fighter__top{display:flex;gap:10px;align-items:center}.rpg-fighter__top img{width:70px;height:70px;border-radius:9px;object-fit:cover;border:2px solid var(--rpg-gold);background:#191b29}.rpg-fighter__top span,.rpg-fighter__top small{display:block;font-size:.56rem;color:var(--text-muted)}.rpg-fighter__top strong{display:block;font-size:.95rem}.rpg-battle-vs{align-self:center;color:var(--rpg-gold);font:900 1.2rem 'Cinzel',serif}.rpg-hp{height:15px;margin-top:10px;border-radius:10px;background:#1a1a2e;overflow:hidden;position:relative}.rpg-hp i{display:block;height:100%;background:linear-gradient(90deg,#2a8b5a,#4fd88a);transition:width .3s}.rpg-hp b{position:absolute;inset:0;text-align:center;font:600 .6rem/15px 'JetBrains Mono',monospace}.rpg-sp{display:flex;gap:5px;align-items:center;margin-top:7px;font-size:.55rem}.rpg-sp>div{display:flex;gap:2px;flex:1}.rpg-sp i{flex:1;height:6px;border-radius:2px;background:#22223a}.rpg-sp i.on{background:#7899ff}.rpg-fighter__status{display:flex;gap:4px;min-height:18px;margin-top:6px}.rpg-fighter__status span{padding:1px 5px;border:1px solid var(--border);border-radius:9px;font-size:.52rem}.rpg-fighter__skill{font-size:.61rem;color:var(--text-muted)}.rpg-fighter__skill b{color:var(--gold-muted)}.rpg-cmd-panel{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:13px}.rpg-cmd{padding:10px 6px;text-align:center}.rpg-cmd strong,.rpg-cmd small{display:block}.rpg-cmd strong{font-size:.76rem;color:var(--rpg-gold)}.rpg-cmd small{margin-top:3px;font-size:.53rem;color:var(--text-muted)}.rpg-cmd:disabled{opacity:.4;cursor:not-allowed}.rpg-rps-hint{text-align:center;margin:7px;color:var(--text-muted);font-size:.58rem}.rpg-battle-log{height:130px;overflow:auto;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:#070810;font-size:.67rem;line-height:1.55}.rpg-battle-log .turn{color:var(--gold-muted)}.rpg-battle-log .dmg{color:#ff8888}.rpg-battle-log .act{color:#fff}.rpg-damage{position:absolute;z-index:4;left:50%;top:30%;color:#ff6262;font:900 1.5rem 'JetBrains Mono',monospace;animation:rpgFloat .8s forwards}@keyframes rpgFloat{to{top:5%;opacity:0}}.rpg-battle-result{position:absolute;z-index:20;inset:var(--header-h) 0 0;display:grid;place-items:center;background:rgba(3,4,8,.9)}.rpg-battle-result[hidden]{display:none}.rpg-battle-result>div{text-align:center}.rpg-battle-result span{font:900 clamp(3rem,12vw,6rem) 'Cinzel',serif;color:var(--rpg-gold)}.rpg-battle-result button{padding:11px 18px;border:0;border-radius:7px;background:var(--rpg-gold);font-weight:800;cursor:pointer}
.rpg-battle-stakes{max-width:720px;margin:0 auto 8px;padding:7px 10px;border-left:2px solid #d4312a;background:rgba(212,49,42,.08);font-size:.65rem}.rpg-battle-stakes b{margin-right:10px;color:#ff8a84;font:700 .54rem 'JetBrains Mono',monospace;letter-spacing:.12em}.rpg-battle-result>div{max-width:680px;padding:20px}.rpg-battle-result p{line-height:1.8}
/* ── Leader card上のANIMALIA FEED ── */
.rpg-feed-card{width:100%;overflow:hidden;border:1px solid rgba(201,168,76,.38);border-radius:9px;background:rgba(6,8,14,.94);box-shadow:0 14px 38px #000;color:rgba(255,255,255,.8)}
/* 2026-07-20 Rii2指示: 見出しを右へ詰め、トグル(▼)を獅子マークに。
   space-between(左端に文字/右端に▼)→ flex-end で文字がアイコンの隣に来る。 */
.rpg-feed-card__head{height:31px;display:flex;align-items:center;justify-content:flex-end;padding-right:0;padding-left:10px;border-bottom:1px solid rgba(201,168,76,.22);font:700 .55rem 'JetBrains Mono',monospace;letter-spacing:.1em;color:var(--rpg-gold)}
/* トグルは獅子マーク。黒地・白抜きの図像なので、暗いヘッダーに直接置くと沈む —
   畳んだ時の丸ボタンと同じく白寄りグレーの小さな板を敷く。▼の字は font-size:0 で消す。 */
/* ⚠ transition:.2s(=all)にしないこと。畳んだ時のボタンはカード幅なので、展開時に
   幅が200msかけて縮み、右詰めのヘッダーごと中身が右へ流れる(2026-07-20 実測)。 */
.rpg-feed-card__head button{width:31px;height:30px;border:0;border-left:1px solid rgba(201,168,76,.22);background:transparent;color:var(--rpg-gold);cursor:pointer;font-size:0;display:flex;align-items:center;justify-content:center;transition:background-color .2s,border-color .2s,color .2s}
/* 2026-07-20 Rii2指示: 開いた時ラベルは *右から左へ* 入る(旧は左→右に132px流れていた)。
   アニメーションはラベルにだけ掛け、ロゴ(button::before)は据え置く。 */
/* 2026-07-20 Rii2指示(2): ラベルはロゴの地色と同じグレーにする(既定の金を上書き)。 */
.rpg-feed-card__head span{color:#b7b7c0}
.rpg-feed-card:not(.is-collapsed) .rpg-feed-card__head span{animation:rpgFeedLabelIn .24s ease both}
@keyframes rpgFeedLabelIn{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
/* ⚠ サイズは開閉で変えないこと(旧は展開19px/畳30pxで開くたびに縮んで見えた)。 */
.rpg-feed-card__head button::before{content:'';width:28px;height:28px;border-radius:50%;background:#b7b7c0 url('../assets/logo/tmaicon-04-128.png') center/21px 21px no-repeat}
/* 2026-07-20 Rii2指示: 左上に手紙マーク=投稿フォームの開閉。⚠ 上の
   .rpg-feed-card__head button / ::before はクラス1+要素。クラス2で書かないと剥がせない。 */
.rpg-feed-card__head .rpg-feed-card__mail{margin-right:auto;width:22px;height:22px;border-left:0}
.rpg-feed-card__head .rpg-feed-card__mail::before{width:16px;height:16px;border-radius:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b7b7c0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='5' width='19' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6.5L21 7'/%3E%3C/svg%3E") center/16px 16px no-repeat}
.rpg-feed-card__head .rpg-feed-card__mail[aria-expanded="true"]::before,
.rpg-feed-card__head .rpg-feed-card__mail:hover::before{opacity:.7}
/* 畳んだ時は獅子マークだけ残す(手紙が宙に浮いて見えるため) */
.rpg-feed-card.is-collapsed .rpg-feed-card__mail{display:none}
.rpg-feed-card__body{display:block;padding:6px 8px;transition:.2s}
/* 投稿フォームの並びは投稿アイテムと同じ 26px+本文。そのまま下の一覧へ流れて見える。 */
.rpg-feed-compose{display:grid;grid-template-columns:26px minmax(0,1fr);gap:7px;margin:0 0 8px;padding:0 0 8px;border-bottom:1px solid rgba(201,168,76,.18)}
.rpg-feed-compose[hidden]{display:none}
.rpg-feed-compose__icon{width:26px;height:26px;border-radius:50%;object-fit:cover;object-position:top;border:1px solid var(--rpg-gold);background:#141823}
.rpg-feed-compose textarea{width:100%;resize:none;padding:5px 6px;border:1px solid rgba(201,168,76,.28);border-radius:5px;background:rgba(0,0,0,.45);color:#fff;font-family:inherit;font-size:.6rem;line-height:1.5}
.rpg-feed-compose textarea:focus{outline:1px solid var(--rpg-gold);outline-offset:0}
.rpg-feed-compose__foot{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.rpg-feed-compose__foot span{font:700 .48rem 'JetBrains Mono',monospace;color:rgba(255,255,255,.35)}
.rpg-feed-compose__foot button{padding:3px 11px;border:0;border-radius:999px;background:var(--rpg-gold);color:#0a0a0f;font:700 .52rem 'JetBrains Mono',monospace;letter-spacing:.08em;cursor:pointer}
/* ── 市民SNS風フィード: npc_icon を丸く切り抜き、コメントが上から流れてくる形。 */
.rpg-feed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.rpg-feed-item{display:grid;grid-template-columns:26px minmax(0,1fr);gap:7px;align-items:start}
.rpg-feed-item__icon{width:26px;height:26px;border-radius:50%;object-fit:cover;object-position:top;border:1px solid rgba(201,168,76,.45);background:#141823;flex-shrink:0}
.rpg-feed-item__body{min-width:0}
.rpg-feed-item__meta{display:flex;align-items:baseline;gap:6px;line-height:1}
.rpg-feed-item__meta b{font-size:.56rem;font-weight:700;color:rgba(255,255,255,.9);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rpg-feed-item__meta span{font:700 .48rem 'JetBrains Mono',monospace;color:rgba(255,255,255,.35);flex-shrink:0}
.rpg-feed-item p{margin:3px 0 0;font-size:.6rem;line-height:1.5;color:rgba(255,255,255,.74)}
/* ── スマホの全画面フィード (2026-07-20 Rii2指示): 獅子マークで画面いっぱいに開き、
   下へ100件さかのぼれる。⚠ 畳んだ表示件数はここで決まる(JS側 FEED_MAX_ITEMS=4 と揃える)。
   ⚠ ヘッダを sticky にしない(iOSでアドレスバー伸縮時に本文へ被さって残る)。
   ⚠ 下端に env(safe-area-inset-bottom) 必須(固定pxだと実機のホームインジケータに隠れる)。 */
/* ⚠⚠ .rpg-shell は position:fixed。Chromeは fixed に z-index:auto でも積み重ね
   コンテキストを作るので、カード側のz-indexを何に上げてもサイトヘッダー(z:100)の
   下に沈み、×がバーガーに覆われて押せない(実測)。全画面中は shell ごと上げる。 */
.rpg-shell.is-feed-full,.rpg-right-stack.is-feed-full{z-index:1300}
/* 2026-08-05 Rii2指示: ドックのスクロール化(旧nth-child(n+9)/(n+5)切りを廃止・FEED_KEEP=100件へ届く)+▼「まだある」印(rpg-feed.jsが残量で.is-on)。⚠contain必須 — 外の.rpg-right-stackもoverflow:autoで、無いと末尾で親へスクロール連鎖しスタックごと跳ねる。anchor:noneはis-full側と同理由。 */
.rpg-feed-card:not(.is-full) .rpg-feed-card__body{max-height:334px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;overflow-anchor:none}@media(max-width:720px){.rpg-feed-card:not(.is-full) .rpg-feed-card__body{max-height:176px}}
.rpg-feed-card{position:relative}.rpg-feed-card__more{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);z-index:3;display:none;border:1px solid rgba(201,168,76,.45);border-radius:999px;background:rgba(6,8,14,.92);color:var(--rpg-gold,#C9A84C);font-size:.6rem;line-height:1;padding:3px 10px;cursor:pointer;animation:rpgFeedMoreNudge 2.2s ease-in-out infinite}.rpg-feed-card__more.is-on{display:block}.rpg-feed-card.is-full .rpg-feed-card__more{bottom:calc(10px + env(safe-area-inset-bottom))}@keyframes rpgFeedMoreNudge{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(3px)}}@media(prefers-reduced-motion:reduce){.rpg-feed-card__more{animation:none}}
.rpg-feed-card__head .rpg-feed-card__close{display:none}
.rpg-feed-card.is-full{position:fixed;z-index:1300;inset:0;width:100vw;height:100dvh;max-width:none;border:0;border-radius:0;box-shadow:none;background:rgba(4,6,11,.98);display:flex;flex-direction:column}
.rpg-feed-card.is-full .rpg-feed-card__head{flex:none;height:auto;min-height:46px;padding-top:calc(6px + env(safe-area-inset-top));padding-bottom:6px;padding-left:calc(12px + env(safe-area-inset-left));border-bottom:1px solid rgba(201,168,76,.22);font-size:.62rem}
.rpg-feed-card.is-full .rpg-feed-card__body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;overflow-anchor:none;padding:12px calc(14px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left))}
.rpg-feed-card.is-full .rpg-feed-list{gap:15px}
.rpg-feed-card.is-full .rpg-feed-item{grid-template-columns:38px minmax(0,1fr);gap:11px}
.rpg-feed-card.is-full .rpg-feed-item__icon{width:38px;height:38px}
.rpg-feed-card.is-full .rpg-feed-item__meta b{font-size:.74rem}.rpg-feed-card.is-full .rpg-feed-item__meta span{font-size:.58rem}
.rpg-feed-card.is-full .rpg-feed-item p{font-size:.78rem;line-height:1.65}
/* ⚠ overflow-anchor:none は必須。Chromeのアンカリングが自動補正し、JS側(renderItem)の
   補正と二重にかかって1件ぶん飛ぶ。Safariは未実装なので、切ってJS側に統一する。
   ⚠ 入力欄は16px。これ未満だとiOSが勝手に画面をズームする。 */
.rpg-feed-card.is-full .rpg-feed-compose textarea{font-size:16px;padding:9px 10px}
.rpg-feed-card.is-full .rpg-feed-compose{grid-template-columns:38px minmax(0,1fr);gap:11px;margin-bottom:14px;padding-bottom:14px}
.rpg-feed-card.is-full .rpg-feed-compose__icon{width:38px;height:38px}
.rpg-feed-card.is-full .rpg-feed-compose__foot button{padding:6px 16px;font-size:.62rem}
.rpg-feed-card.is-full .rpg-feed-card__mail{width:26px;height:26px}
.rpg-feed-card.is-full .rpg-feed-card__mail::before{width:19px;height:19px;background-size:19px 19px}
/* 全画面では獅子マークを×に置き換える(同じ場所を押して閉じられる) */
.rpg-feed-card.is-full #rpg-feed-toggle{display:none}
.rpg-feed-card.is-full .rpg-feed-card__close{display:flex;align-items:center;justify-content:center;width:38px;height:38px;margin-left:6px;border:0;background:transparent;color:#b7b7c0;font:400 1.5rem/1 system-ui,sans-serif;cursor:pointer}
/* 古い投稿ほど薄く沈める(下へ流れていく見え方)。⚠ 全画面では効かせない —
   さかのぼって読む画面で古いものが薄いと読めない。 */
.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(2){opacity:.86}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(3){opacity:.72}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(4){opacity:.58}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(5){opacity:.46}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(6){opacity:.36}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(7){opacity:.27}.rpg-feed-card:not(.is-full) .rpg-feed-item:nth-child(8){opacity:.2}
/* 2026-07-20 Rii2指示: 自分の投稿も見た目はNPCと同じにする。金の名前・金の縁取り・
   外側の発光は全廃 — 街の声に混ざって流れるのが狙いなので、自分だけ目立たせない。
   .is-own クラスはローテーション制御(OWN_EVERY)のフックとして残すが、装飾は付けない。 */
.rpg-feed-item.is-new{animation:rpgFeedPost .42s cubic-bezier(.2,.8,.3,1) both}
@keyframes rpgFeedPost{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.rpg-feed-card.is-collapsed .rpg-feed-card__head{border-bottom-color:transparent}.rpg-feed-card.is-collapsed .rpg-feed-card__body{display:none}/* 2026-07-20 Rii2指示(2): 回転は全廃。畳んだ時にロゴ(=獅子の顔)が横を向いてしまい、
   開く時の回転演出も不要との判断。rotate は一切掛けない。 */

/* ── 柱4「崩壊の予兆」: 稀なUIグリッチ ──
   スキャンライン・RGBずれ・テキストジッターを#rpg-viewに一瞬だけ重ねる。
   prefers-reduced-motion環境では下の@mediaで全アニメーションが無効化される。 */
.rpg-view.is-glitching{animation:rpgGlitchJitter .16s steps(2) 3}
.rpg-view.is-glitching::before{content:'';position:absolute;inset:0;z-index:9;pointer-events:none;mix-blend-mode:overlay;background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 1px,transparent 1px 3px);animation:rpgGlitchScan .3s steps(6) 1}
.rpg-view.is-glitching::after{content:'';position:absolute;inset:0;z-index:9;pointer-events:none;mix-blend-mode:screen;background:linear-gradient(90deg,rgba(255,0,60,.14),transparent 4%,transparent 96%,rgba(0,200,255,.14));animation:rpgGlitchRgb .3s steps(4) 1}
@keyframes rpgGlitchJitter{0%,100%{transform:translate(0,0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,-2px)}80%{transform:translate(1px,2px)}}
@keyframes rpgGlitchScan{0%,100%{opacity:.5}50%{opacity:.9}}
@keyframes rpgGlitchRgb{0%,100%{opacity:.6}50%{opacity:1}}

.rpg-travel{position:fixed;z-index:1400;inset:0;display:grid;place-content:center;text-align:center;background:#030407;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .36s,visibility .36s}.rpg-travel.is-on{opacity:1;visibility:visible}.rpg-travel span{color:var(--rpg-gold);font:700 .62rem 'JetBrains Mono',monospace;letter-spacing:.22em}.rpg-travel strong{margin-top:8px;font:900 clamp(1.5rem,6vw,3rem) 'Noto Serif JP',serif;letter-spacing:.08em}.rpg-feedback{position:fixed;z-index:1250;left:50%;top:78px;display:flex;gap:10px;align-items:center;max-width:min(760px,calc(100vw - 28px));padding:9px 13px;border:1px solid var(--rpg-line);border-radius:7px;background:rgba(4,6,11,.95);box-shadow:0 12px 35px #000;opacity:0;transform:translate(-50%,-12px);pointer-events:none;transition:.2s}.rpg-feedback.is-on{opacity:1;transform:translate(-50%,0)}.rpg-feedback b{flex:none;color:var(--rpg-gold);font:700 .52rem 'JetBrains Mono',monospace;letter-spacing:.14em}.rpg-feedback span{font-size:.68rem}/* 通知(初探索報酬等)は画面下のAREA FILEに被らないよう上部中央へ。背景は半透明50%＋ブラーで読みやすさ確保。 */
.rpg-toast{position:fixed;z-index:1300;left:50%;top:74px;bottom:auto;transform:translate(-50%,-12px);max-width:min(560px,calc(100vw - 32px));padding:10px 15px;border:1px solid var(--rpg-gold);border-radius:7px;background:rgba(9,11,16,.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;font-size:.72rem;line-height:1.5;text-align:center;box-shadow:0 12px 35px #000;opacity:0;pointer-events:none;transition:.2s}.rpg-toast.is-on{opacity:1;transform:translate(-50%,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.rpg-shell.is-scene-entering .rpg-view{animation:rpgSceneEnter .42s ease-out}.is-rpg-pressed{animation:rpgButtonConfirm .38s ease-out}.is-rpg-pressed::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 20%,rgba(255,255,255,.3),transparent 80%);transform:translateX(-110%);animation:rpgButtonSweep .38s ease-out}
@keyframes rpgSceneEnter{from{opacity:.35;filter:brightness(1.45);transform:scale(1.008)}to{opacity:1;filter:none;transform:none}}@keyframes rpgButtonConfirm{45%{transform:translateY(1px) scale(.97);box-shadow:0 0 18px rgba(201,168,76,.35)}}@keyframes rpgButtonSweep{to{transform:translateX(110%)}}
/* ── scene transitions: every novel render fades through dark, panel slides up, bg drifts ──
   立ち絵/コピーの各variantはtransform依存のため、立ち絵はopacity+filterのみをアニメする。
   __copyのkeyframesは基底のtranslateX(-50%)を必ず保持する。reduced-motionは下の全消しで無効化。 */
.rpg-novel,.rpg-ending,.rpg-arena{animation:rpgSceneIn .48s ease-out backwards}
.rpg-novel__bg{animation:rpgBgSettle .8s ease-out backwards,rpgBgDrift 40s ease-in-out .8s infinite alternate}
.rpg-novel__copy{animation:rpgCopyIn .5s cubic-bezier(.22,.8,.3,1) .1s backwards}
.rpg-novel__portrait{animation:rpgPortraitIn .55s ease-out .06s backwards}
.rpg-outcome__clue{animation:rpgClueIn .45s cubic-bezier(.22,.8,.3,1) .5s backwards}
@keyframes rpgSceneIn{from{opacity:0}}
@keyframes rpgBgSettle{from{transform:scale(1.09);filter:brightness(.45)}to{transform:scale(1.04);filter:brightness(1)}}
@keyframes rpgBgDrift{from{transform:scale(1.04)}to{transform:scale(1.09) translate3d(-1.2%,-.9%,0)}}
@keyframes rpgCopyIn{from{opacity:0;transform:translateX(-50%) translateY(14px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
@keyframes rpgPortraitIn{from{opacity:0;filter:brightness(.35) drop-shadow(0 12px 24px #000)}}
@keyframes rpgClueIn{from{opacity:0;transform:translateY(6px)}}
/* feed はリーダーカードの外(.rpg-right-stack直下)へ移動したため、
   入れ子前提の上書き(.rpg-leader .rpg-feed-card ...)は 2026-07-19 に撤去。 */
.rpg-leader.is-mini .rpg-moon-note{display:none}

/* ── 今夜の月（tmas-time連動） ── */
.rpg-moon-note{margin:7px 0 0;font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.08em;color:#cfc49a}
.rpg-moon-note:empty{display:none}
/* ── 手掛かり獲得: CLUESボタンのバウンス ── */
.rpg-controls button.is-clue-pop{animation:rpgCluePop .8s cubic-bezier(.3,1.6,.4,1)}
@keyframes rpgCluePop{25%{transform:translateY(-3px) scale(1.12);border-color:var(--rpg-gold);box-shadow:0 0 16px rgba(201,168,76,.5)}55%{transform:translateY(0) scale(.98)}}
/* ── 評価リザルト: 裁定印スタンプ ── */
.rpg-ending__grade{animation:rpgGradeStamp .55s cubic-bezier(.2,1.4,.3,1) .25s backwards}
@keyframes rpgGradeStamp{from{opacity:0;transform:scale(2.4) rotate(-14deg)}60%{opacity:1;transform:scale(.92) rotate(2deg)}to{transform:scale(1) rotate(0)}}
/* ── ケースファイル=TMA TIMES紙面 ── */
.rpg-times__masthead{max-width:1100px;margin:0 auto 4px;padding-bottom:8px;border-bottom:3px double rgba(201,168,76,.55);display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.rpg-times__masthead h2{margin:0;font:900 clamp(1.6rem,4vw,2.6rem) 'Noto Serif JP',serif;letter-spacing:.14em}
.rpg-times__masthead span{font:700 .56rem 'JetBrains Mono',monospace;letter-spacing:.14em;color:var(--rpg-gold)}
.rpg-times__lede{max-width:1100px;margin:0 auto 18px;color:var(--text-muted);font-size:.68rem}
.rpg-case--paper{position:relative;background:linear-gradient(160deg,#15130d,#0d0c09);border:1px solid rgba(201,168,76,.28)}
.rpg-case--paper h3{margin:8px 0 6px;font:900 1.02rem 'Noto Serif JP',serif;line-height:1.4}
.rpg-case__kicker{display:flex;justify-content:space-between;gap:10px;padding-bottom:5px;border-bottom:1px solid rgba(201,168,76,.25);font:700 .54rem 'JetBrains Mono',monospace;letter-spacing:.12em;color:var(--rpg-gold)}
.rpg-case__stamp{position:absolute;right:12px;top:32px;padding:2px 9px;border:2px solid rgba(201,168,76,.7);border-radius:4px;color:var(--rpg-gold);font:900 .95rem 'Cinzel',serif;transform:rotate(8deg);opacity:.85;pointer-events:none}
.rpg-case--paper p{color:#cfc9bb}
@media(max-width:720px){:root{--rpg-title-size:1.15rem;--header-h:56px}.rpg-controls{top:64px;right:10px;gap:3px}.rpg-controls button{padding:7px 4px;font-size:.44rem}.rpg-right-stack{right:10px;top:96px;width:210px;max-height:calc(100vh - 108px)}.rpg-toast{top:96px}.rpg-novel__title{top:70px;left:12px}.rpg-back{top:74px;right:10px}.rpg-novel__portrait{left:50%;right:auto;top:0;bottom:auto;height:200%;max-width:none;max-height:none;opacity:.86}.rpg-novel__copy{bottom:10px;padding:12px;width:calc(100vw - 20px);max-height:58vh;overflow:auto}.rpg-typewriter{font-size:.76rem}.rpg-choice{flex-basis:100%;padding:8px 25px 8px 9px}.rpg-missions,.rpg-cases,.rpg-preview{padding:96px 10px 24px}.rpg-missions__close{top:78px;right:10px}.rpg-mission-list,.rpg-case-list{grid-template-columns:1fr}.rpg-mission{grid-template-columns:34px minmax(0,1fr) auto}.rpg-grade{grid-column:2}.rpg-link{grid-column:3;grid-row:1/3}.rpg-preview form{grid-template-columns:1fr}.rpg-preview fieldset{grid-column:1}.rpg-preview__clues{grid-template-columns:1fr}.rpg-feedback{top:102px}.rpg-arena{padding:78px 10px 18px}.rpg-battle-field{grid-template-columns:1fr}.rpg-battle-vs{display:none}.rpg-fighter__top img{width:52px;height:52px}.rpg-cmd-panel{grid-template-columns:repeat(2,1fr)}.rpg-battle-log{height:105px}}
/* 地図ではタップ領域を残しつつ、スマホ幅は顔アイコンだけにする。 */
@media(max-width:720px){.rpg-shell[data-mode="map"] .rpg-right-stack{width:auto;max-height:none}.rpg-shell[data-mode="map"] .rpg-leader{width:auto;justify-self:end;padding:0;border:0;background:transparent;box-shadow:none}.rpg-shell[data-mode="map"] .rpg-leader__collapse,.rpg-shell[data-mode="map"] .rpg-leader .rpg-status,.rpg-shell[data-mode="map"] .rpg-leader__profile>div{display:none}.rpg-shell[data-mode="map"] .rpg-leader__profile{margin:0}.rpg-shell[data-mode="map"] .rpg-leader img,.rpg-shell[data-mode="map"] .rpg-leader__fallback{width:48px;height:48px;box-shadow:0 8px 22px #000}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rpg-typewriter::after{display:none}.rpg-travel{transition:none}.rpg-feed-item.is-new{opacity:1;transform:none}}

/* バトル結果は勝敗語を抑え、フレーバー本文と戻るボタンを読み分けやすくする。 */
.rpg-battle-result span{font-size:clamp(2.4rem,9.6vw,4.8rem)}
.rpg-battle-result p{margin:16px 0 22px}

/* Living Streets 会話モーダル整形（2026-07-15）: 幹部の立ち絵を左に／内容に合わせて縮小／依頼ボタンをサイト基調へ */
/* inset:0 + height:auto だとビューポート高いっぱいに伸びるため、max-content で内容にフィットさせる。 */
.rpg-modal.is-dialogue{height:max-content;max-height:min(84vh,600px)}
.rpg-modal.is-dialogue .rpg-modal__content{height:auto}
.rpg-dialogue{min-height:0}
.rpg-dialogue__job{font-family:'Noto Sans JP',sans-serif;font-weight:700;font-size:.72rem;letter-spacing:.06em;border-radius:4px;padding:11px 16px}
.rpg-dialogue footer{gap:10px}
.rpg-dialogue__attack{font-family:'Noto Sans JP',sans-serif;font-weight:700;font-size:.72rem;letter-spacing:.06em;border-radius:4px;padding:11px 16px;border:1px solid rgba(224,90,90,.65);background:rgba(224,90,90,.08);color:#f0a2a2;cursor:pointer}
.rpg-dialogue__attack:hover{background:rgba(224,90,90,.18);color:#fff}
.rpg-dialogue__talk{font-family:'Noto Sans JP',sans-serif;font-weight:700;font-size:.72rem;letter-spacing:.06em;border-radius:4px;padding:11px 16px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.04);color:#ddd;cursor:pointer;margin-right:auto}
.rpg-dialogue__talk:hover{border-color:var(--rpg-gold,#C9A84C);color:#fff}

/* ANIMALIA FEED 最小化: 折りたたみ時は📡の丸ボタンひとつに縮む。 */
/* 2026-07-19 Rii2指示(9): 畳んだ時のアイコンを📡からTMAの獅子マークへ。
   マークは黒地に白抜きなので、透過PNGのまま暗い面に置くと沈む — 白寄りの
   グレーを敷いて図像を成立させる。原本(1200px/108KB)ではなく128px版(5KB)。 */
/* 2026-07-20 Rii2指示(4): 畳んだ時のボタンを、開いた時のヘッダー右上のロゴと
   *同じ位置・同じ寸法* にする。押しても印は動かず、モーダルだけが開く見え方。
   数字の根拠: 展開時はヘッダー高31px・ボタン幅31pxが右端に付き、その中に28pxの
   ロゴが中心で入る。畳んだカードを同じ31x31にして右寄せすれば中心が一致する
   (旧46pxでは縦横とも7.5pxずれていた)。
   カード自身の面・枠・影は消し、ロゴが持つ28pxのグレー円だけを見せる。 */
.rpg-feed-card.is-collapsed{position:relative;min-height:0;background:transparent;border-color:transparent;box-shadow:none;pointer-events:none}
.rpg-feed-card.is-collapsed #rpg-feed-toggle{pointer-events:auto}
.rpg-feed-card.is-collapsed .rpg-feed-card__body{display:none}
/* ⚠ 畳んだ時にヘッダーの寸法や寄せを変えないこと。変えるとボタンが動き、
   「押しても印は動かずモーダルだけ開く」が崩れる(2026-07-20 Rii2指示)。 */
/* 2026-07-20 Rii2指示: ロゴは動かさない。旧実装は畳=span::before / 展開=button::before と
   *別要素* に獅子を描いていたため、開閉のたびにロゴが飛んでいた。ロゴは常に
   button::before の1箇所に固定し、畳んだ時はラベルを完全に消す(font-size:0だと
   箱が残り、展開時の再計算でラベルが左から右へ流れる原因になる)。 */
.rpg-feed-card.is-collapsed .rpg-feed-card__head span{display:none}
/* ⚠ 畳んだ時にボタンの寸法を触らないこと(旧: width/height:100% でカード幅まで
   伸びていた)。展開時と同じ 31px のまま置くことで、押しても印が動かない。
   境界線だけは面が消えるので不要。 */
.rpg-feed-card.is-collapsed .rpg-feed-card__head button{border-left:0}


/* 幹部カード（2026-07-15）: レイアウトは構成員と同一。立ち絵=背景の顔アップ、家紋=透かし＋ヘッダ小、家色=アクセント。 */
.rpg-dialogue{position:relative;overflow:hidden}
.rpg-dialogue__body{position:relative;z-index:2}
.rpg-dialogue--capo{--fam:#C9A84C}
.rpg-dialogue--capo::before{content:'';position:absolute;z-index:3;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--fam),transparent 72%)}
.rpg-dialogue__face{position:absolute;z-index:0;inset:0;left:34%;background-size:cover;background-position:50% 10%;opacity:.52;-webkit-mask-image:linear-gradient(90deg,transparent,#000 48%);mask-image:linear-gradient(90deg,transparent,#000 48%)}
.rpg-dialogue__face::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,11,18,0) 35%,rgba(8,11,18,.9))}
.rpg-dialogue__crest{position:absolute;z-index:1;left:-26px;bottom:-30px;width:190px;opacity:.09;pointer-events:none}
.rpg-dialogue header img.rpg-dialogue__crest-head{width:111px;height:111px;flex:none;border:0;border-radius:0;background:transparent;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(0,0,0,.55))}
.rpg-dialogue--capo header img{border:0;background:transparent}
@media(max-width:620px){.rpg-dialogue header img.rpg-dialogue__crest-head{width:84px;height:84px}}
.rpg-dialogue--capo header span{color:var(--fam)}
.rpg-dialogue--capo blockquote{border-left-color:var(--fam);background:rgba(255,255,255,.03)}
.rpg-dialogue--capo .rpg-dialogue__body>header,.rpg-dialogue--capo .rpg-dialogue__body>blockquote,.rpg-dialogue--capo .rpg-dialogue__intel,.rpg-dialogue--capo .rpg-dialogue__brief{max-width:72%}
@media(max-width:620px){.rpg-dialogue__face{left:18%;opacity:.4}.rpg-dialogue--capo .rpg-dialogue__body>header,.rpg-dialogue--capo .rpg-dialogue__body>blockquote,.rpg-dialogue--capo .rpg-dialogue__intel,.rpg-dialogue--capo .rpg-dialogue__brief{max-width:100%}}

/* JOBSボードを #rpg-modal 内に表示する時の整形（ミッション選択と同じダイアログに合わせる）。 */
.rpg-modal__content .rpg-jobs{height:auto;min-height:100%;padding:clamp(40px,3.5vw,52px) clamp(20px,4vw,42px) 38px}
.rpg-modal__content .rpg-jobs__head h2{font-size:clamp(1.8rem,4vw,2.6rem)}
