.zoom-target { cursor: zoom-in; }
body.modal-open { overflow: hidden; }
    /* ====== ここから画像ビューア ====== */
    .lightbox[hidden] { display: none; }
    .lightbox { position: fixed; inset: 0; z-index: 99999; background: rgba(12,16,24,.94); display: flex; flex-direction: column; color: #f7f8fc; }
    .lb-header { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 16px; background: #171c27; border-bottom: 1px solid rgba(255,255,255,.12); }
    .lb-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 650; }
    .lb-actions { display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: nowrap; }
    .lb-btn { border: 1px solid #465166; border-radius: 9px; background:#283143; color: #fff; font:inherit; font-size:14px; cursor: pointer; min-width: 38px; height: 38px; padding: 0 10px; }
    .lb-btn:hover { background: #3a4660; }
    .lb-btn:focus-visible { outline: 2px solid #82b4ff; outline-offset: 2px; }
    .lb-btn.lb-close { background: #fff; color: #18202c; border-color:#fff; font-size: 21px; }
    .lb-zoom-label { min-width: 55px; text-align: center; font-size: 13px; font-variant-numeric: tabular-nums; }
    .lb-viewport { position: relative; min-height: 0; flex: 1 1 auto; overflow: auto; cursor: grab; touch-action: none; overscroll-behavior: contain; background-color: #10151e;
      background-image: linear-gradient(45deg, #131b26 25%, transparent 25%), linear-gradient(-45deg, #131b26 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #131b26 75%), linear-gradient(-45deg, transparent 75%, #131b26 75%);
      background-size: 28px 28px; background-position: 0 0, 0 14px, 14px -14px, -14px 0; }
    .lb-viewport.dragging { cursor: grabbing; }
    .lb-canvas { position: relative; }
    .lb-image { position: absolute; display:block; max-width:none; user-select:none; -webkit-user-drag:none; pointer-events:none; box-shadow: 0 8px 36px rgba(0,0,0,.3); }
    .lb-footer { flex: 0 0 auto; font-size: 12px; color: #bcc6d8; padding: 9px 18px; text-align:center; background: #171c27; border-top: 1px solid rgba(255,255,255,.1); }
    @media (max-width: 650px) {
      .lb-header { gap: 6px; padding: 9px; } .lb-title { font-size: 12px; }
      .lb-btn { min-width: 34px; height: 34px; padding: 0 7px; }
      .lb-btn.lb-fit { font-size:11px; } .lb-zoom-label { min-width: 42px; font-size:12px; }
      .lb-footer { font-size:11px; }
    }
