.jenga-overview { margin: 0 0 1.5rem; }
.jenga-overview-plot { position: relative; }
.jenga-overview-plot > img { display: block; width: 100%; height: auto; margin: 0; border-radius: 12px; }
.jenga-overview-hits { position: absolute; inset: 0 1.09375% 0 3.5%; }
.jenga-overview-hit { position: absolute; inset-block: 0; left: calc(var(--tower-index) * 100% / 15); width: calc(100% / 15); cursor: zoom-in; border-radius: 6px; }
.jenga-overview-hit:hover { background: rgb(23 123 118 / 5%); }
.jenga-overview-hit:focus-visible { outline: 2px solid #177b76; outline-offset: -2px; background: rgb(23 123 118 / 7%); }
.jenga-overview figcaption { margin-top: .6rem; font-size: .85em; line-height: 1.5; }
.jenga-overview-explore { display: inline-flex; align-items: center; min-height: 44px; cursor: zoom-in; }
.jenga-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.jenga-tower-dialog { box-sizing: border-box; width: min(960px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); padding: 16px; border: 1px solid #cfd8cf; border-radius: 16px; background: #fffaf3; color: #253e3a; }
.jenga-tower-dialog::backdrop { background: rgb(20 30 25 / 65%); }
.jenga-tower-dialog[open] { display: flex; flex-direction: column; }
.jenga-tower-header, .jenga-tower-navigation, .jenga-tower-zoom { display: flex; align-items: center; gap: 10px; }
.jenga-tower-header, .jenga-tower-navigation, .jenga-tower-zoom, #jenga-tower-caption { flex: none; }
.jenga-tower-header { justify-content: space-between; margin-bottom: 10px; }
.jenga-tower-header strong { font-size: 1.45rem; line-height: 1.3; font-weight: 700; letter-spacing: -0.01em; color: #1f322f; }
.jenga-tower-dialog button, .jenga-tower-dialog select { box-sizing: border-box; min-width: 44px; min-height: 44px; border: 1px solid #c8d3c8; border-radius: 8px; background: #fff; color: #253e3a; font: inherit; }
.jenga-tower-dialog button { cursor: pointer; padding: 5px 12px; }
.jenga-tower-dialog button:hover:not(:disabled) { background: #eaf0e9; }
.jenga-tower-dialog button:disabled { opacity: .4; cursor: default; }
.jenga-tower-dialog :is(button, select):focus-visible { outline: 2px solid #177b76; outline-offset: 2px; }
.jenga-tower-navigation { margin-bottom: 12px; }
.jenga-tower-navigation select { flex: 1; min-width: 0; padding: 6px 40px 6px 14px; -webkit-appearance: none; appearance: none; cursor: pointer; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23253e3a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center / 12px 8px; }
.jenga-tower-navigation select:hover { background-color: #eaf0e9; }
.jenga-tower-stage { flex: 0 1 auto; height: min(60dvh, 640px); min-height: 80px; overflow: auto; overscroll-behavior: contain; border: 1px solid #e1e6df; border-radius: 10px; background: white; touch-action: pan-x pan-y pinch-zoom; }
.jenga-tower-stage[data-magnified="true"] { cursor: grab; }
.jenga-tower-stage[data-panning="true"] { cursor: grabbing; }
.jenga-tower-canvas { display: flex; align-items: center; justify-content: center; }
.jenga-tower-dialog .jenga-tower-canvas > img { display: block; max-width: none; max-height: none; flex: none; margin: 0; border-radius: 0; user-select: none; }
.jenga-tower-zoom { justify-content: center; margin-top: 10px; }
.jenga-tower-zoom output { min-width: 4ch; text-align: center; font-size: .9rem; }
.jenga-tower-dialog #jenga-tower-caption { margin: 10px 0 0; font-size: .85rem; line-height: 1.5; text-align: center; }
@media (max-width: 480px) {
  .jenga-tower-dialog { padding: 12px; }
  .jenga-tower-header strong { font-size: 1.2rem; }
}
