/* Focus updates the location during a pointer press. Reserve two readable
   lines so wrapping cannot move the board before that press is released. */
.board-orientation { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; margin: 10px 0 0; font-size: 12px; line-height: 1.5; color: var(--muted); }
.board-orientation output { min-block-size: 3em; color: var(--text); overflow-wrap: anywhere; }
.scene .grid-wrap { padding-left: 68px; padding-bottom: 34px; max-width: min(100%, calc(var(--board) + 68px)); }
.board-coordinate { position: absolute; pointer-events: none; white-space: nowrap; transform-origin: center; display: block; padding: 2px 3px; font: 600 10px/1.2 var(--font-ui); color: #eddbb8; background: #151e1b; border: 1px solid #716449; border-radius: 3px; }
.world-webgl-labels .world-webgl-row,.world-webgl-labels .world-webgl-column { font: 600 11px/1.2 var(--font-ui,sans-serif); padding: 2px 3px; border: 1px solid #716449; border-radius: 3px; white-space: nowrap; }
.board-coordinate--row { right: calc(100% + 44px); top: 50%; transform: translateY(-50%) translateZ(2px) rotateX(calc(-1 * var(--tilt))); }
.board-coordinate--column { left: 50%; top: calc(100% + 18px); transform: translateX(-50%) translateZ(2px) rotateX(calc(-1 * var(--tilt))); }
.investigation-proof { margin-top: 10px; border-top: 1px solid var(--border); }
.investigation-proof > summary, .dossier-background > summary { min-height: 44px; padding: 12px 0; cursor: pointer; font-size: 13px; font-weight: 600; }
.investigation-proof-body { padding-bottom: 8px; }
.investigation-proof-body h4 { font-size: 16px; margin: 4px 0 10px; }
.investigation-proof-body p { font-size: 14px; line-height: 1.65; }
.investigation-deduction { padding: 10px 12px; background: #d8b5750e; border-left: 2px solid #d8b575; }
.investigation-reasons { display: grid; gap: 8px; }
.investigation-reason { padding: 8px 0; border-bottom: 1px solid var(--border); }
.investigation-reason p { margin: 0 0 4px; }
.investigation-reason span { font-size: 12px; }
.investigation-sources { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.investigation-sources .btn { min-width: 44px; min-height: 44px; }
.dossier-background { border-top: 1px solid var(--border); margin-top: 16px; }
.dossier-section-heading { font: 600 14px/1.5 var(--font-ui); margin: 18px 0 8px; color: var(--text); }
.dossier-statements { min-width: 0; }
.cell.is-source-relevant { box-shadow: inset 0 0 0 3px #f1cb86; }
.suspect.is-source-relevant { outline: 2px solid #f1cb86; outline-offset: 2px; }
/* Brass-edged room plaques keep the allocator's existing anchors and lift.
   Opaque backing makes the lettering independent of the new floor lighting. */
.room-plate {
  padding: .16em .42em;
  border: 1px solid #b59a60;
  border-radius: 1px;
  background: #18201d;
  color: #f7e6b7;
  font-family: var(--font-file);
  line-height: 1.16;
  letter-spacing: .045em;
  -webkit-text-stroke: 0;
  text-shadow: 0 1px 1px #000;
  box-shadow: inset 0 0 0 1px #18201d, inset 0 0 0 2px #b59a603b,
    0 2px 4px #0008;
}
.room-plate.pl-l, .room-plate.pl-r { text-align: center; }
.room-plate.pl-tight {
  padding: .12em .22em;
  font-size: clamp(8px, calc(var(--board) / var(--size, 6) * .12), 12px);
}
@media (forced-colors: active) {
  .room-plate { background: Canvas; color: CanvasText; border-color: CanvasText; text-shadow: none; }
}
.lehr-zeile { border-left-color: #d8b575; }
/* Sources become legible immediately. The finite reveal marks disclosure
   without sliding the board or replaying a loop while someone is reading. */
@media (prefers-reduced-motion: no-preference) {
  @keyframes investigation-source-reveal {
    from { opacity: .76; }
    to { opacity: 1; }
  }
  .investigation-proof[open] > .investigation-proof-body,
  .dossier-background[open] > .dossier-par {
    animation: investigation-source-reveal 180ms ease-out;
  }
}
@media (max-width: 560px) { .board-orientation { font-size: 11px; } }
@media (forced-colors: active) { .board-coordinate { color: CanvasText; background: Canvas; border-color: CanvasText; } }
