/* Shore document viewer: full screen on phones, a large panel on tablet and desktop.
   2026-10-24: per-page Rotate left / Rotate right bars and a Rotate all button (44px touch targets). */
.shore-viewer-open, .shore-viewer-open body { overflow: hidden; }
.shore-viewer { position: fixed; inset: 0; z-index: 2147483000; background: rgba(7, 22, 34, .86);
  display: flex; align-items: center; justify-content: center; padding: 24px;
  font-family: Helvetica, Arial, sans-serif; color: #1D1D1D; }
.shore-viewer[hidden] { display: none; }
.shore-viewer__panel { background: #FAF8F2; width: min(1100px, 100%); height: min(92vh, 100%); display: flex;
  flex-direction: column; border-radius: 6px; overflow: hidden; box-shadow: 0 30px 80px rgba(0, 0, 0, .35); }
.shore-viewer__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px;
  padding: 12px 16px; background: #FFFFFF; border-bottom: 1px solid #ECE7DC; }
.shore-viewer__heading { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 260px; }
.shore-viewer__title { margin: 0; font-family: Georgia, 'Times New Roman', serif; font-weight: 400; font-size: 20px;
  letter-spacing: -.01em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shore-viewer__meta { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #235E7C; }
.shore-viewer__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.shore-viewer__btn { min-height: 44px; padding: 0 14px; border-radius: 4px; border: 1px solid #17384C; background: #FFFFFF;
  color: #17384C; font: 700 13px/1 Helvetica, Arial, sans-serif; letter-spacing: .06em; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px; text-decoration: none;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.shore-viewer__btn:hover { background: #F1F6F8; }
.shore-viewer__btn:disabled { opacity: .4; cursor: default; }
.shore-viewer__btn[hidden] { display: none; }
.shore-viewer__btn--solid { background: #17384C; color: #FFFFFF; }
.shore-viewer__btn--solid:hover { background: #235E7C; color: #FFFFFF; }
.shore-viewer__btn--close { border-color: #B74D38; color: #B74D38; }
.shore-viewer__btn:focus-visible { outline: 3px solid #9CC9D9; outline-offset: 2px; }
.shore-viewer__btn svg { width: 20px; height: 20px; flex: none; }
.shore-viewer__btn--icon { width: 44px; min-width: 44px; padding: 0; }
.shore-viewer__body { position: relative; flex: 1 1 auto; min-height: 0; overflow: auto; -webkit-overflow-scrolling: touch; padding: 12px;
  display: flex; flex-direction: column; align-items: center; gap: 12px; }
.shore-viewer__page { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 6px; flex: none; }
.shore-viewer__pagebar { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.shore-viewer__pageno { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #4C6169; }
.shore-viewer__pagetools { display: flex; gap: 8px; }
.shore-viewer__sheet { width: 100%; display: flex; justify-content: center; }
.shore-viewer__page canvas { max-width: 100%; height: auto; background: #FFFFFF; box-shadow: 0 2px 10px rgba(7, 22, 34, .15); }
.shore-viewer__body--image { justify-content: center; }
.shore-viewer__page--image { flex: 1 0 auto; }
.shore-viewer__frame { position: relative; flex: none; margin: auto; }
.shore-viewer__img { position: absolute; left: 50%; top: 50%; max-width: none; max-height: none;
  transform: translate(-50%, -50%); transform-origin: 50% 50%; cursor: zoom-in; background: #FFFFFF; }
.shore-viewer__img.is-zoomed { cursor: zoom-out; }
.shore-viewer__sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.shore-viewer__message { margin: auto; max-width: 440px; text-align: center; display: flex; flex-direction: column;
  align-items: center; gap: 14px; font-size: 16px; line-height: 1.5; color: #4C6169; }
.shore-viewer__message p { margin: 0; }
@media (max-width: 767px) {
  .shore-viewer { padding: 0; }
  .shore-viewer__panel { width: 100%; height: 100%; border-radius: 0; }
  .shore-viewer__body { padding: 8px; }
  .shore-viewer__title { font-size: 17px; }
}
