.viewer-host{height:100%;display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden}.cat-view-tools{display:flex;align-items:center;gap:5px;padding:6px;background:#f8fafc;border-bottom:1px solid #d5dfe8;flex-shrink:0;position:relative;font-size:10px;z-index:3}.cat-view-tools button{padding:3px;min-width:23px;height:28px;display:inline-flex;align-items:center;justify-content:center}.cat-tool-group{display:flex;align-items:center;gap:2px;flex-shrink:0}.cat-tool-group svg{width:16px;height:16px}.cat-search{display:flex;flex:1;min-width:65px}.cat-search input{width:100%;min-width:0;font-size:11px;padding:5px}.cat-view-tools input[data-page]{width:37px;padding:4px;font-size:11px}.cat-zoom-field{position:relative;display:flex;align-items:center}.cat-zoom-field input{width:52px;text-align:right;padding:4px 15px 4px 2px;font-size:11px}.cat-zoom-field span{position:absolute;right:3px;pointer-events:none}.cat-view-tools [data-result-count],.cat-view-tools [data-page-total]{white-space:nowrap}.cat-view-tools [data-index-status]{position:absolute;right:7px;top:100%;background:#f8fafcee;pointer-events:none;font-size:9px}.cat-result-context{position:absolute;left:7px;top:100%;background:#f8fafcee;font-size:9px;pointer-events:none}.cat-result-context:empty{display:none}.cat-viewport{flex:1;min-height:0;overflow:auto;background:#dce2e6;position:relative}.cat-paper{min-width:100%;min-height:100%;width:max-content;display:flex;align-items:flex-start;justify-content:center;padding:6px}.cat-paper canvas{display:block;box-shadow:0 1px 5px #0003;flex-shrink:0}.cat-page-surface{position:relative;flex-shrink:0;align-self:flex-start}.cat-viewport[data-fit="page"] .cat-paper{height:100%;align-items:center}.cat-viewport[data-fit="page"] .cat-page-surface{align-self:center}.cat-view-status{padding:2px 8px;font-size:10px}.cat-view-status:empty{display:none}.cat-text-layer{position:absolute;inset:0;overflow:hidden;line-height:1;text-align:initial;transform-origin:0 0;pointer-events:none;color:transparent;--scale-round-x:1px;--scale-round-y:1px}.cat-text-layer span{position:absolute;white-space:pre;transform-origin:0 0;font-size:calc(var(--font-height) * var(--total-scale-factor) * var(--min-font-size));transform:rotate(var(--rotate,0deg)) scaleX(var(--scale-x,1)) scale(calc(1 / var(--min-font-size)));color:transparent}.cat-match{position:absolute;background:#ffda5366;pointer-events:none;border-radius:1px}.cat-match.is-active{background:#ff9d4277;outline:1px solid #ac591b}.cat-viewport.is-panning{cursor:grabbing;user-select:none}.cat-viewport.has-lens{cursor:crosshair}.cat-lens{position:absolute;width:200px;height:200px;border:2px solid #647b8c;border-radius:50%;z-index:8;pointer-events:none;box-shadow:0 3px 15px #0005}.cat-flip-overlay{position:absolute;left:50%;bottom:25px;transform:translateX(-50%);background:#263d50dd;color:white;padding:8px 15px;border-radius:6px;z-index:7;pointer-events:none}.presentation{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;background:#26323a;z-index:9999}.presentation:fullscreen{width:100%;height:100%}.presentation .cat-viewport,.presentation .continuous-viewport{background:#25313a}.v-pages-host{flex:1;min-height:0;display:flex}.continuous-viewport{position:relative;flex:1;min-height:0;overflow:auto;background:#dce2e6}.continuous-pages{width:max-content;min-width:100%;position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;padding:12px}.continuous-page{position:relative;flex-shrink:0;background:white;box-shadow:0 1px 5px #0003;overflow:hidden}.continuous-page canvas{display:block}.v-tools input[data-v-search]{flex:1;min-width:65px;width:100%;font-size:11px}.v-tools input[data-v-page]{width:40px}.v-tools input[data-v-zoom]{width:46px}.v-tools span{white-space:nowrap}.v-tools input{padding:4px;font-size:11px}

/* Unified paged surface: native overflow is PAN within this page only. */
.continuous-pages{min-height:100%;justify-content:center}.continuous-viewport{overscroll-behavior:contain}.page-motion-note{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);padding:7px 12px;background:#fffffff2;color:#36566b;border:1px solid #bacbd6;border-radius:6px;z-index:20;pointer-events:none}.cat-zoom-field input{width:48px;text-align:center}.cat-zoom-field input::-webkit-inner-spin-button{appearance:none}

/* A page transition is compositor motion, never a native scroll-bar/layout change.
   Programmatic scrollLeft/scrollTop still support middle-button PAN and zoom anchors. */
.cat-viewport,.continuous-viewport{overflow:hidden;overscroll-behavior:contain;overflow-anchor:none}
.page-transition-cover{position:absolute;z-index:2;pointer-events:none;contain:strict}
#viewer-shell .pdf-toolbar .cat-search-group{position:relative}
#viewer-shell .pdf-search-context{position:absolute;left:0;top:calc(100% + 5px);z-index:5;max-width:100%;width:max-content;background:#f8fafcf5;border:1px solid #c9d7e1;border-radius:4px;padding:5px 7px;box-shadow:0 2px 5px #243b5014;font-size:10px;display:flex;align-items:center;flex-wrap:wrap;gap:5px}
#viewer-shell .pdf-search-context span{white-space:normal}
#viewer-shell .pdf-toolbar .pdf-search-context button{width:auto;min-width:0;height:auto;min-height:24px;padding:3px 5px;font-size:10px;white-space:normal}
#viewer-shell .cat-search-group:not(:focus-within) .pdf-search-context[data-open=false]{display:none}
