/* 夜行列車の一夜 */
#game-root{--g3d-title:'Shippori Mincho B1','Zen Kaku Gothic New',serif;--nt-mincho:'Shippori Mincho B1','Zen Kaku Gothic New',serif}
.g3d-title__name small{letter-spacing:.32em}

/* 右上: 時計・場所・次の駅 */
.nt-hud{position:absolute;inset:0;pointer-events:none}
.nt-clock{position:absolute;right:calc(16px + env(safe-area-inset-right));top:calc(62px + env(safe-area-inset-top));display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:8px 14px 9px;border-radius:14px;background:linear-gradient(180deg,rgba(14,12,10,.62),rgba(14,12,10,.42));border:1px solid rgba(255,214,160,.18);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);text-shadow:0 1px 2px rgba(0,0,0,.6)}
.nt-clock b{font:800 26px/1.05 var(--nt-mincho);color:#ffe2b8;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.nt-clock span{font-size:12px;font-weight:700;opacity:.88}
.nt-clock small{font-size:11px;font-weight:700;opacity:.7}
.nt-inv{position:absolute;right:calc(16px + env(safe-area-inset-right));top:calc(176px + env(safe-area-inset-top));display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px;max-width:240px}
.nt-chip{padding:3px 10px;border-radius:99px;background:rgba(14,12,10,.55);border:1px solid rgba(255,214,160,.2);font-size:11.5px;font-weight:700;white-space:nowrap}
.nt-chip--money{color:#ffd9a0}
.nt-mapbtn{position:absolute;right:calc(16px + env(safe-area-inset-right));top:calc(142px + env(safe-area-inset-top));pointer-events:auto;padding:5px 12px;border-radius:99px;border:1px solid rgba(255,214,160,.35);background:rgba(20,14,8,.6);color:#ffe2b8;font:800 12px/1 var(--g3d-ui);cursor:pointer}
.nt-count{position:absolute;left:50%;top:calc(66px + env(safe-area-inset-top));transform:translateX(-50%);padding:7px 18px;border-radius:99px;background:rgba(80,14,10,.72);border:1px solid rgba(255,140,110,.5);font:800 15px/1 var(--g3d-ui);color:#ffe8dc;letter-spacing:.06em;animation:g3d-blink 1s steps(2) infinite}
.nt-meteor{position:absolute;left:50%;top:calc(66px + env(safe-area-inset-top));transform:translateX(-50%);padding:7px 18px;border-radius:99px;background:rgba(10,16,34,.66);border:1px solid rgba(160,190,255,.35);font:700 14px/1 var(--g3d-ui);color:#dfe8ff}
.nt-meteor b{font-size:18px;margin-left:4px;color:#fff}
.g3d-objective{max-width:min(58vw,420px)}

/* 会話 */
.nt-dialog{position:absolute;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:26;width:min(760px,calc(100% - 28px));display:flex;flex-direction:column;gap:8px;pointer-events:auto;animation:g3d-fade .25s ease both}
.nt-box{position:relative;padding:14px 22px 16px;border-radius:16px;background:linear-gradient(180deg,rgba(18,14,10,.86),rgba(12,10,8,.9));border:1px solid rgba(255,214,160,.25);box-shadow:0 20px 50px -20px rgba(0,0,0,.8);cursor:pointer}
.nt-who{display:inline-block;margin:0 0 6px;padding:2px 10px;border-radius:6px;background:rgba(255,194,122,.16);color:#ffcf96;font:800 13.5px/1.5 var(--g3d-ui);letter-spacing:.08em}
.nt-text{margin:0;font:700 clamp(15px,2.1vw,18px)/1.85 var(--g3d-ui);color:#f6efe4;min-height:3.4em;white-space:pre-wrap}
.nt-dialog.is-narration .nt-text{font-family:var(--nt-mincho);font-weight:700;color:#e8dfd0}
.nt-next{position:absolute;right:16px;bottom:10px;font-size:12px;color:#ffcf96;animation:g3d-blink 1s steps(2) infinite}
.nt-choices{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.nt-choices:empty{display:none}
.nt-choice{display:flex;align-items:center;gap:10px;width:100%;min-height:46px;padding:9px 16px;border-radius:12px;border:1px solid rgba(255,214,160,.28);background:rgba(20,16,12,.84);color:#f6efe4;font:700 15px/1.45 var(--g3d-ui);text-align:left;cursor:pointer;transition:background .15s,border-color .15s}
.nt-choice kbd{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:6px;background:rgba(255,214,160,.16);color:#ffcf96;font:800 12px/1 var(--g3d-ui)}
.nt-choice.is-pick,.nt-choice:hover{background:rgba(96,62,28,.9);border-color:#ffc27a}
.nt-dialog.has-choices .nt-box{cursor:default}
#game-root.nt-talking .g3d-prompt{display:none}
.nt-dialog.no-box .nt-box{display:none}

/* 掲示・書類 */
.nt-doc{position:absolute;inset:0;z-index:35;display:grid;place-items:center;padding:calc(62px + env(safe-area-inset-top)) 14px calc(18px + env(safe-area-inset-bottom));background:rgba(3,4,6,.6);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);overflow:auto;animation:g3d-fade .25s ease both}
.nt-doc__paper{width:min(640px,100%);padding:22px 24px 18px;border-radius:8px;color:#2a241c;background:#f4efe3;box-shadow:0 30px 80px -20px rgba(0,0,0,.8),inset 0 0 60px rgba(120,90,40,.16)}
.nt-doc[data-kind="dark"] .nt-doc__paper{background:#14161a;color:#e8ecf2;border:1px solid rgba(160,190,255,.2)}
.nt-doc__kicker{margin:0;font-size:12px;letter-spacing:.22em;font-weight:800;opacity:.6}
.nt-doc__title{margin:2px 0 12px;font:800 21px/1.4 var(--nt-mincho);letter-spacing:.06em}
.nt-doc__body{font-size:15px;line-height:1.85}
.nt-doc__body p{margin:0 0 .7em}
.nt-doc__body img{display:block;width:100%;height:auto;border-radius:4px;margin:4px 0 10px}
.nt-doc__close{display:flex;margin:14px auto 0}
.nt-route{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.nt-route li{display:flex;justify-content:space-between;gap:12px;padding:6px 10px;border-radius:8px;background:rgba(40,30,20,.06);font-weight:700}
.nt-route li.is-stop{background:rgba(200,48,42,.1)}
.nt-route li.is-here{outline:2px solid #c8302a}
.nt-route li small{opacity:.7;font-weight:700}

/* 暗転の文字 */
.nt-card{position:absolute;inset:0;z-index:27;display:grid;place-content:center;text-align:center;pointer-events:none}
.nt-card p{margin:0;font:800 clamp(18px,3vw,28px)/1.7 var(--nt-mincho);color:#f2e8d8;letter-spacing:.12em;text-shadow:0 2px 20px rgba(0,0,0,.8)}
.nt-card small{display:block;margin-top:8px;font-size:13px;letter-spacing:.3em;opacity:.7}
.nt-card.is-in{animation:nt-card 4s ease both}
@keyframes nt-card{0%{opacity:0;filter:blur(6px)}20%{opacity:1;filter:none}80%{opacity:1}100%{opacity:0}}

/* タイトルの記録 */
.nt-records{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px;font-size:13.5px;opacity:.92}
.nt-records b{font-size:16px;color:var(--accent);margin:0 2px}
.nt-ends{display:flex;gap:6px;justify-content:center;margin-top:8px;flex-wrap:wrap}
.nt-ends span{padding:3px 10px;border-radius:99px;font-size:12px;background:rgba(255,255,255,.06);opacity:.45}
.nt-ends span.is-got{opacity:1;background:rgba(255,194,122,.16);border:1px solid rgba(255,194,122,.4)}

/* スマホ縦: 時計は小さく・会話は操作ボタンの上に */
@media (max-width:640px){
  .nt-clock{top:calc(56px + env(safe-area-inset-top));padding:6px 10px}
  .nt-clock b{font-size:21px}
  .nt-mapbtn{top:calc(128px + env(safe-area-inset-top))}
  .nt-inv{top:calc(160px + env(safe-area-inset-top));max-width:180px}
  .nt-dialog{bottom:calc(14px + env(safe-area-inset-bottom))}
  .nt-box{padding:12px 16px 14px}
  .nt-choice{font-size:14px;min-height:44px}
  .g3d-objective{font-size:12.5px;max-width:52vw}
  .nt-count,.nt-meteor{top:calc(198px + env(safe-area-inset-top))}
}
@media (max-height:480px) and (orientation:landscape){
  .nt-clock{top:44px;padding:4px 10px}.nt-clock b{font-size:19px}.nt-clock small{display:none}
  .nt-mapbtn{top:100px}.nt-inv{top:128px}
  .nt-dialog{bottom:8px;width:min(680px,calc(100% - 20px))}
  .nt-text{min-height:2.4em;font-size:14.5px;line-height:1.6}
  .nt-choice{min-height:36px;padding:6px 12px;font-size:13.5px}
  .nt-box{padding:9px 14px 10px}
}

/* スマホ: 字幕をスティックとボタンの間・上に（重ならないように） */
@media (pointer:coarse){
  #game-root .g3d-subtitle{bottom:calc(36% + env(safe-area-inset-bottom));max-width:min(86vw,640px);font-size:14.5px}
}
@media (pointer:coarse) and (max-height:480px) and (orientation:landscape){
  #game-root .g3d-subtitle{bottom:calc(8px + env(safe-area-inset-bottom));max-width:48vw;font-size:12.5px;line-height:1.5;padding:5px 12px}
  #game-root .g3d-objective{font-size:12px;padding:5px 10px}
  .nt-doc__paper{padding:12px 16px}
  .nt-doc__title{font-size:16px;margin-bottom:6px}
  .nt-route{grid-template-columns:1fr 1fr;gap:3px 6px}
  .nt-route li{padding:3px 8px;font-size:12.5px}
  .nt-doc__body p{font-size:12.5px;margin:.3em 0}
  .nt-count,.nt-meteor{top:calc(9px + env(safe-area-inset-top));bottom:auto;padding:6px 14px;font-size:13px}
}
/* 結果画面：項目が多いので2列にまとめて、ボタンまで1画面に収める */
#game-root .g3d-screen[data-screen="result"] .g3d-panel{width:min(580px,100%);padding:20px 22px}
#game-root .g3d-result__big{font-size:clamp(34px,6vw,50px);margin:6px 0 2px}
#game-root .g3d-result__rows{grid-template-columns:1fr 1fr;gap:5px;margin-top:12px}
#game-root .g3d-result__rows div{flex-direction:column;align-items:flex-start;gap:1px;padding:6px 11px;text-align:left}
#game-root .g3d-result__rows dt{font-size:12px}
#game-root .g3d-result__rows dd{font-size:14px}
#game-root .g3d-result__msg{margin-top:10px;font-size:13.5px;line-height:1.7}
@media (max-width:380px){ #game-root .g3d-result__rows{grid-template-columns:1fr} }
/* 選択肢を出しているあいだは字幕を隠す（横画面で重なるため） */
#game-root:has(.nt-dialog.has-choices) .g3d-subtitle{opacity:0;transition:opacity .2s}
/* 横向きスマホなど高さが低い画面：結果を4列にして1画面に収める */
@media (max-height:500px){
  #game-root .g3d-screen[data-screen="result"]{padding-top:calc(46px + env(safe-area-inset-top));padding-bottom:10px}
  #game-root .g3d-screen[data-screen="result"] .g3d-panel{width:min(800px,100%);padding:12px 18px}
  #game-root .g3d-result__title{font-size:20px;margin-top:2px}
  #game-root .g3d-result__big{font-size:26px;margin:2px 0 0}
  #game-root .g3d-result__rows{grid-template-columns:repeat(4,1fr);gap:4px;margin-top:6px}
  #game-root .g3d-result__rows div{padding:4px 8px}
  #game-root .g3d-result__rows dt{font-size:11px}
  #game-root .g3d-result__rows dd{font-size:12px;line-height:1.35}
  #game-root .g3d-result__msg{margin-top:6px;font-size:12px;line-height:1.5}
  #game-root .g3d-screen[data-screen="result"] .g3d-actions{margin-top:8px}
}
/* お知らせ（通過駅など）が流れ星・発車の表示や左上の目標と重ならないように */
#game-root:has(.nt-meteor:not([hidden])) .g3d-toast,#game-root:has(.nt-count:not([hidden])) .g3d-toast{top:calc(112px + env(safe-area-inset-top))}
@media (pointer:coarse) and (orientation:portrait){ #game-root .g3d-toast,#game-root:has(.nt-meteor:not([hidden])) .g3d-toast{top:calc(240px + env(safe-area-inset-top));max-width:86vw;white-space:normal;text-align:center} }
@media (pointer:coarse) and (max-height:480px) and (orientation:landscape){ #game-root .g3d-toast,#game-root:has(.nt-meteor:not([hidden])) .g3d-toast{top:auto;bottom:calc(64px + env(safe-area-inset-bottom))} }

/* ---- 2026-10-06 チェックでの手直し ---- */
/* スマホ: 右上の「路線図」ボタンが、視点を動かす領域（画面の右半分。操作の層が表示の層より上）の下になって押せなかった
   → 表示の層を操作の層より上へ（表示の層は押せない作りで、押せるのは「路線図」だけ。/patrol/ と同じやり方） */
@media (pointer:coarse){ #game-root .g3d-hud{z-index:13} }
/* 会話の枠が出ている間は、字幕（車内放送など）を枠の上へ出す（会話の文字の上に重なっていた。PC・スマホ横）。縦は元の位置で枠より上 */
#game-root:has(.nt-dialog:not([hidden])) .g3d-subtitle{bottom:calc(var(--nt-dlg-h,130px) + 34px + env(safe-area-inset-bottom))}
@media (pointer:coarse) and (orientation:portrait){ #game-root:has(.nt-dialog:not([hidden])) .g3d-subtitle{bottom:calc(36% + env(safe-area-inset-bottom))} }
