/* where: HEIST V2 / what: 黒・金・立ち絵の作戦画面 / why: DESIGN.mdの色・角・余白を守りスマホで判断を読みやすくする */
.heist-v2 { --text-muted:#aaa69f; --heist-good:#90bd9e; --heist-bad:#d799a5; }
.heist-v2::before { background-image:linear-gradient(rgba(10,10,15,.64),rgba(10,10,15,.88)),url('../assets/storyboard/ca-02-1920.jpg'); }
.heist-v2 .tmas-page { max-width:1120px; }
.heist-v2 .page-title { margin-bottom:8px; }
.heist-edition { font:500 .7rem var(--fm); color:var(--text-dim); letter-spacing:.16em; vertical-align:middle; }
.heist-v2 .page-sub { color:var(--text); font-family:var(--fh); font-size:1.1rem; line-height:1.8; margin-bottom:8px; }
.heist-intro-detail { display:block; color:var(--text-dim); font:400 .82rem/1.7 var(--fn); }
.heist-toolbar { display:flex; align-items:center; justify-content:space-between; margin:16px 0; gap:16px; font-size:.8rem; }
.heist-toolbar button,.heist-close { color:var(--text); background:var(--bg2); border:1px solid var(--border); cursor:pointer; }
.heist-toolbar button { min-height:44px; padding:8px 16px; font:500 .72rem var(--fm); border-radius:2px; }
.heist-v2 .stat-card { background:rgba(17,17,24,.95); padding:16px; }
.heist-v2 .stat-card__v { font:500 1.6rem var(--fm); }
.heist-v2 .stat-links a { color:var(--text-dim)!important; }
.heist-v2 .mini { font-size:.75rem; }
.heist-v2 .heist-top { margin-bottom:24px; }
.heist-v2 .pick { gap:8px; padding-top:8px; padding-bottom:8px; }
.heist-v2 .pick__u { display:block; width:104px; background:var(--bg2); color:var(--text); border:1px solid var(--border); border-radius:4px; text-align:left; font-family:var(--fn); }
.heist-v2 .pick__u.sel { border-color:var(--gold); transform:none; }
.heist-unit-image { display:block; position:relative; }
.heist-v2 .pick__u img { height:88px; width:100%; object-fit:cover; }
.heist-unit-image>span { position:absolute; bottom:4px; left:4px; background:rgba(10,10,15,.92); padding:2px 4px; color:var(--gold); font:500 .68rem var(--fm); }
.heist-unit-name { display:block; padding:8px 8px 0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:.75rem; }
.heist-unit-role { display:block; padding:4px 8px 8px; font-size:.68rem; color:var(--text-dim); }
.heist-xp-track { display:block; height:3px; width:100%; background:var(--border); overflow:hidden; }
.heist-xp-track>span { display:block; height:100%; background:var(--gold); }
.heist-crew-note { margin:0 0 24px; font-size:.75rem; color:var(--text-dim); }
.heist-v2 #target-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; max-height:none; overflow:visible; padding:0; }
.heist-v2 .heist-job { position:relative; display:block; min-height:232px; margin:0; padding:24px; background:rgba(17,17,24,.96); border:1px solid var(--border); border-radius:4px; }
.heist-v2 .heist-job::before,.heist-v2 .heist-job::after { display:none; }
.heist-v2 .heist-job>div:first-child { max-width:none; }
.heist-v2 .heist-job--rumor { border-left-color:var(--gold); }
.heist-job-art { position:absolute!important; inset:0 0 0 auto; width:48%; overflow:hidden; opacity:.48; pointer-events:none; mask-image:linear-gradient(90deg,transparent,#000 48%); }
.heist-job-art img { width:auto; height:135%; position:absolute; top:-8%; right:-4%; }
.heist-v2 .heist-job-copy { position:relative; z-index:1; width:100%; max-width:none!important; }
.heist-kicker { font:500 .65rem/1.5 var(--fm); letter-spacing:.12em; color:var(--gold); }
.heist-kicker>span { margin-left:8px; color:var(--text-dim); font-family:var(--fn); letter-spacing:.04em; }
.heist-job h2 { font:600 1.16rem/1.4 var(--fh); margin:8px 0; max-width:85%; overflow-wrap:anywhere; }
.heist-job p { font-size:.8rem; line-height:1.6; color:var(--text-dim); }
.heist-job-meta { display:flex; flex-wrap:wrap; gap:4px 16px; margin-top:16px; font-size:.72rem; color:var(--text-dim); }
.heist-job-meta b { font-family:var(--fm); font-weight:500; color:var(--text); }
.heist-job-bottom { display:flex; justify-content:space-between; align-items:center; margin-top:16px; gap:8px; }
.heist-odds { font:500 1.16rem var(--fm); color:var(--text); }
.heist-odds small { display:block; font:400 .65rem/1.5 var(--fn); color:var(--text-dim); }
.heist-v2 .heist-job .tgt__act { position:static; transform:none; margin:0; flex:0 1 auto; }
.heist-v2 .heist-job .btn { min-height:48px; width:auto; padding:12px 16px; border:1px solid var(--gold-muted); border-radius:2px; background:rgba(201,168,76,.08); color:var(--gold); box-shadow:none; text-shadow:none; backdrop-filter:none; font:500 .8rem var(--fn); }
.heist-v2 .heist-job .btn:disabled { border-color:var(--border); color:var(--text-dim); opacity:1; background:var(--bg2); }
.heist-job .heist-job-note { margin-top:8px; font-size:.7rem; }
.heist-vault-tip { border:1px solid var(--gold-muted); padding:16px; font-size:.8rem; background:var(--bg2); }
.heist-vault-tip p { margin:8px 0; }
.heist-dialog-open { overflow:hidden; }
.heist-dialog { position:fixed; inset:0; width:min(720px,calc(100% - 32px)); max-width:calc(100% - 16px); max-height:calc(100dvh - 32px); margin:auto; padding:0; border:1px solid var(--border); border-radius:4px; background:#111118; color:var(--text); overflow:auto; overscroll-behavior:contain; box-shadow:0 24px 80px #0009; }
.heist-dialog::backdrop { background:rgba(4,5,10,.86); }
.heist-close { position:absolute; z-index:3; right:8px; top:8px; width:44px; height:44px; font:300 1.8rem var(--fn); border-radius:2px; }
.heist-dialog-content { padding:32px; }
.heist-brief { position:relative; padding:0 0 24px; overflow:hidden; }
.heist-brief>.heist-kicker { padding-right:32px; }
.heist-dialog-portrait { position:absolute; right:-8px; top:8px; height:240px; opacity:.35; pointer-events:none; mask-image:linear-gradient(90deg,transparent,#000 45%); }
.heist-brief h2 { position:relative; font:700 1.7rem/1.35 var(--fh); margin:16px 0 8px; max-width:90%; overflow-wrap:anywhere; }
.heist-goal { position:relative; font-size:.9rem; color:var(--text); }
.heist-scene { position:relative; margin:16px 0 4px; font-size:.84rem; line-height:1.7; max-width:90%; }
.heist-scene-hint { position:relative; color:var(--gold); font-size:.75rem; }
.heist-mission-line { display:flex; justify-content:space-between; gap:8px; padding:12px 0; border-top:1px solid var(--border); color:var(--text-dim); font-size:.76rem; }
.heist-mission-line b { color:var(--text); font-weight:500; }
.heist-choices { display:grid; gap:8px; }
.heist-choice { display:flex; align-items:center; gap:16px; width:100%; min-height:108px; padding:16px; background:#1a1a24; color:var(--text); border:1px solid var(--border); border-radius:2px; text-align:left; cursor:pointer; transition:border-color .15s,background .15s; font-family:var(--fn); }
.heist-choice:hover:not(:disabled) { border-color:var(--gold-muted); background:#20202a; }
.heist-choice:disabled { cursor:wait; }
.heist-choice-no { color:var(--gold); font:500 .8rem var(--fm); align-self:flex-start; padding-top:2px; }
.heist-choice-body { flex:1; min-width:0; }
.heist-choice-body strong { display:block; font-size:.96rem; font-weight:600; }
.heist-choice-body>span,.heist-choice-body>small { display:block; color:var(--text-dim); font-size:.72rem; line-height:1.7; }
.heist-choice-body>span { margin-top:4px; }
.heist-choice-tags { display:flex!important; gap:8px; flex-wrap:wrap; }
.heist-choice-tags:empty { display:none!important; }
.heist-choice-tags em { font-style:normal; color:var(--gold); font-size:.68rem; }
.heist-choice-rate { font:500 1.55rem/1.2 var(--fm); text-align:right; }
.heist-choice-rate>small { font-size:.8rem; }
.heist-choice-rate>span { display:block; font:400 .65rem/1.6 var(--fn); color:var(--text-dim); }
.heist-dialog-note { margin-top:16px; color:var(--text-dim); font:400 .73rem/1.8 var(--fn); }
.heist-message { color:#e5a5b1; font-size:.85rem; margin-top:8px; }
.heist-message:empty { display:none; }
.heist-result { text-align:center; }
.heist-result-stamp { display:inline-block; margin:24px 0 16px; padding:8px 16px; color:var(--heist-good); border:1px solid currentColor; font:500 1.2rem var(--fm); letter-spacing:.16em; transform:rotate(-4deg); animation:heist-stamp .3s ease-out; }
.is-failure .heist-result-stamp { color:var(--heist-bad); }
.heist-result h2 { font:700 1.7rem var(--fh); margin:0 0 16px; }
.heist-result-story { font-size:.85rem; line-height:1.8; color:var(--text-dim); }
.heist-result-loot { margin:24px 0 8px; font:500 clamp(1.6rem,7vw,2.6rem) var(--fm); color:var(--gold); }
.is-failure .heist-result-loot { color:var(--text); font:700 1.4rem var(--fh); }
.heist-result-loot small { display:block; margin-top:4px; color:var(--text-dim); font:400 .73rem var(--fn); }
.heist-result-meta { color:var(--text-dim); font-size:.72rem; }
.heist-growth-head { display:flex; justify-content:space-between; gap:8px; margin:24px 0 8px; font:500 .66rem var(--fm); letter-spacing:.05em; color:var(--text-dim); }
.heist-growth-head>span:last-child { color:var(--gold); }
.heist-growth-list { border-top:1px solid var(--border); text-align:left; }
.heist-growth-row { display:flex; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); }
.heist-growth-row>img { width:44px; height:44px; object-fit:cover; border-radius:2px; }
.heist-growth-person { flex:1; min-width:0; }
.heist-growth-person strong { display:block; font-size:.8rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.heist-growth-person>span { display:block; margin:4px 0; color:var(--text-dim); font:400 .68rem var(--fm); }
.is-levelup .heist-growth-person>span { color:var(--gold); }
.heist-growth-person .heist-xp-track>span { animation:heist-xp .6s ease-out; }
.heist-growth-amount { font:500 .8rem var(--fm); color:var(--gold); text-align:right; }
.heist-growth-amount small { display:block; margin-top:4px; max-width:140px; font:400 .63rem/1.5 var(--fn); color:var(--text-dim); }
.heist-continue { display:flex; justify-content:space-between; width:100%; min-height:48px; margin-top:24px; padding:12px 16px; background:rgba(201,168,76,.08); color:var(--gold); border:1px solid var(--gold-muted); border-radius:2px; cursor:pointer; font:500 .9rem var(--fn); }
.heist-v2 button:focus-visible,.heist-dialog button:focus-visible { outline:2px solid var(--gold); outline-offset:3px; }
@keyframes heist-stamp { from { opacity:0; transform:scale(1.12) rotate(-4deg); } to { opacity:1; transform:scale(1) rotate(-4deg); } }
@keyframes heist-xp { from { width:var(--xp-before,0%); } }
@media(max-width:700px) {
  .heist-v2 #target-list { grid-template-columns:1fr; }
  .heist-v2 .heist-job { padding:16px; min-height:208px; }
  .heist-v2 .heist-job>div:last-child { display:block; margin:0; }
  .heist-v2 .heist-job .tgt__act { display:block; }
  .heist-v2 .heist-job .tgt__act .btn { width:auto; }
  .heist-v2 .stat-row { grid-template-columns:1fr 1fr 1fr; gap:8px; }
  .heist-v2 .stat-col:first-child { grid-column:auto; }
  .heist-v2 .stat-links { display:none; }
  .heist-v2 .stat-card__v { font-size:1.2rem; }
  .heist-v2 .stat-col .mini { font-size:.65rem; }
  .heist-dialog { width:calc(100% - 16px); max-height:calc(100dvh - 16px); }
  .heist-dialog-content { padding:24px 16px max(16px,env(safe-area-inset-bottom)); }
  .heist-brief { padding-bottom:16px; }
  .heist-brief h2 { font-size:1.4rem; margin:12px 0 8px; }
  .heist-choice { min-height:96px; padding:12px; gap:8px; }
  .heist-choice-body strong { font-size:.88rem; }
  .heist-choice-body>span,.heist-choice-body>small { font-size:.66rem; }
  .heist-choice-rate { font-size:1.35rem; }
  .heist-dialog-note { margin-top:12px; font-size:.68rem; }
  .heist-result-stamp { margin-top:16px; }
  .heist-result-loot { margin-top:16px; }
  .heist-growth-amount small { max-width:104px; }
}
@media(prefers-reduced-motion:reduce) {
  .heist-v2 *, .heist-dialog * { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}
