UNPKG

22.6 kBCSSView Raw
1/* Copyright 2014 Mozilla Foundation
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16:root {
17 --highlight-bg-color: rgba(180, 0, 170, 1);
18 --highlight-selected-bg-color: rgba(0, 100, 0, 1);
19}
20
21@media screen and (forced-colors: active) {
22 :root {
23 --highlight-bg-color: Highlight;
24 --highlight-selected-bg-color: ButtonText;
25 }
26}
27
28.textLayer {
29 position: absolute;
30 text-align: initial;
31 inset: 0;
32 overflow: hidden;
33 opacity: 0.25;
34 line-height: 1;
35 -webkit-text-size-adjust: none;
36 -moz-text-size-adjust: none;
37 text-size-adjust: none;
38 forced-color-adjust: none;
39 transform-origin: 0 0;
40 z-index: 2;
41}
42
43.textLayer :is(span, br) {
44 color: transparent;
45 position: absolute;
46 white-space: pre;
47 cursor: text;
48 transform-origin: 0% 0%;
49}
50
51/* Only necessary in Google Chrome, see issue 14205, and most unfortunately
52 * the problem doesn't show up in "text" reference tests. */
53.textLayer span.markedContent {
54 top: 0;
55 height: 0;
56}
57
58.textLayer .highlight {
59 margin: -1px;
60 padding: 1px;
61 background-color: var(--highlight-bg-color);
62 border-radius: 4px;
63}
64
65.textLayer .highlight.appended {
66 position: initial;
67}
68
69.textLayer .highlight.begin {
70 border-radius: 4px 0 0 4px;
71}
72
73.textLayer .highlight.end {
74 border-radius: 0 4px 4px 0;
75}
76
77.textLayer .highlight.middle {
78 border-radius: 0;
79}
80
81.textLayer .highlight.selected {
82 background-color: var(--highlight-selected-bg-color);
83}
84
85.textLayer ::-moz-selection {
86 background: blue;
87 background: AccentColor;
88}
89
90.textLayer ::selection {
91 background: blue;
92 background: AccentColor;
93}
94
95/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */
96.textLayer br::-moz-selection {
97 background: transparent;
98}
99.textLayer br::selection {
100 background: transparent;
101}
102
103.textLayer .endOfContent {
104 display: block;
105 position: absolute;
106 inset: 100% 0 0;
107 z-index: -1;
108 cursor: default;
109 -webkit-user-select: none;
110 -moz-user-select: none;
111 user-select: none;
112}
113
114.textLayer .endOfContent.active {
115 top: 0;
116}
117
118
119:root {
120 --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");
121 --input-focus-border-color: Highlight;
122 --input-focus-outline: 1px solid Canvas;
123 --input-unfocused-border-color: transparent;
124 --input-disabled-border-color: transparent;
125 --input-hover-border-color: black;
126 --link-outline: none;
127}
128
129@media screen and (forced-colors: active) {
130 :root {
131 --input-focus-border-color: CanvasText;
132 --input-unfocused-border-color: ActiveText;
133 --input-disabled-border-color: GrayText;
134 --input-hover-border-color: Highlight;
135 --link-outline: 1.5px solid LinkText;
136 }
137 .annotationLayer .textWidgetAnnotation :is(input, textarea):required,
138 .annotationLayer .choiceWidgetAnnotation select:required,
139 .annotationLayer
140 .buttonWidgetAnnotation:is(.checkBox, .radioButton)
141 input:required {
142 outline: 1.5px solid selectedItem;
143 }
144
145 .annotationLayer .linkAnnotation:hover {
146 -webkit-backdrop-filter: invert(100%);
147 backdrop-filter: invert(100%);
148 }
149}
150
151.annotationLayer {
152 position: absolute;
153 top: 0;
154 left: 0;
155 pointer-events: none;
156 transform-origin: 0 0;
157 z-index: 3;
158}
159
160.annotationLayer[data-main-rotation="90"] .norotate {
161 transform: rotate(270deg) translateX(-100%);
162}
163.annotationLayer[data-main-rotation="180"] .norotate {
164 transform: rotate(180deg) translate(-100%, -100%);
165}
166.annotationLayer[data-main-rotation="270"] .norotate {
167 transform: rotate(90deg) translateY(-100%);
168}
169
170.annotationLayer canvas {
171 position: absolute;
172 width: 100%;
173 height: 100%;
174}
175
176.annotationLayer section {
177 position: absolute;
178 text-align: initial;
179 pointer-events: auto;
180 box-sizing: border-box;
181 transform-origin: 0 0;
182}
183
184.annotationLayer .linkAnnotation {
185 outline: var(--link-outline);
186}
187
188.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a {
189 position: absolute;
190 font-size: 1em;
191 top: 0;
192 left: 0;
193 width: 100%;
194 height: 100%;
195}
196
197.annotationLayer
198 :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton)
199 > a:hover {
200 opacity: 0.2;
201 background: rgba(255, 255, 0, 1);
202 box-shadow: 0 2px 10px rgba(255, 255, 0, 1);
203}
204
205.annotationLayer .textAnnotation img {
206 position: absolute;
207 cursor: pointer;
208 width: 100%;
209 height: 100%;
210 top: 0;
211 left: 0;
212}
213
214.annotationLayer .textWidgetAnnotation :is(input, textarea),
215.annotationLayer .choiceWidgetAnnotation select,
216.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {
217 background-image: var(--annotation-unfocused-field-background);
218 border: 2px solid var(--input-unfocused-border-color);
219 box-sizing: border-box;
220 font: calc(9px * var(--scale-factor)) sans-serif;
221 height: 100%;
222 margin: 0;
223 vertical-align: top;
224 width: 100%;
225}
226
227.annotationLayer .textWidgetAnnotation :is(input, textarea):required,
228.annotationLayer .choiceWidgetAnnotation select:required,
229.annotationLayer
230 .buttonWidgetAnnotation:is(.checkBox, .radioButton)
231 input:required {
232 outline: 1.5px solid red;
233}
234
235.annotationLayer .choiceWidgetAnnotation select option {
236 padding: 0;
237}
238
239.annotationLayer .buttonWidgetAnnotation.radioButton input {
240 border-radius: 50%;
241}
242
243.annotationLayer .textWidgetAnnotation textarea {
244 resize: none;
245}
246
247.annotationLayer .textWidgetAnnotation :is(input, textarea)[disabled],
248.annotationLayer .choiceWidgetAnnotation select[disabled],
249.annotationLayer
250 .buttonWidgetAnnotation:is(.checkBox, .radioButton)
251 input[disabled] {
252 background: none;
253 border: 2px solid var(--input-disabled-border-color);
254 cursor: not-allowed;
255}
256
257.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,
258.annotationLayer .choiceWidgetAnnotation select:hover,
259.annotationLayer
260 .buttonWidgetAnnotation:is(.checkBox, .radioButton)
261 input:hover {
262 border: 2px solid var(--input-hover-border-color);
263}
264.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,
265.annotationLayer .choiceWidgetAnnotation select:hover,
266.annotationLayer .buttonWidgetAnnotation.checkBox input:hover {
267 border-radius: 2px;
268}
269
270.annotationLayer .textWidgetAnnotation :is(input, textarea):focus,
271.annotationLayer .choiceWidgetAnnotation select:focus {
272 background: none;
273 border: 2px solid var(--input-focus-border-color);
274 border-radius: 2px;
275 outline: var(--input-focus-outline);
276}
277
278.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus {
279 background-image: none;
280 background-color: transparent;
281}
282
283.annotationLayer .buttonWidgetAnnotation.checkBox :focus {
284 border: 2px solid var(--input-focus-border-color);
285 border-radius: 2px;
286 outline: var(--input-focus-outline);
287}
288
289.annotationLayer .buttonWidgetAnnotation.radioButton :focus {
290 border: 2px solid var(--input-focus-border-color);
291 outline: var(--input-focus-outline);
292}
293
294.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
295.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,
296.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
297 background-color: CanvasText;
298 content: "";
299 display: block;
300 position: absolute;
301}
302
303.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
304.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
305 height: 80%;
306 left: 45%;
307 width: 1px;
308}
309
310.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before {
311 transform: rotate(45deg);
312}
313
314.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
315 transform: rotate(-45deg);
316}
317
318.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
319 border-radius: 50%;
320 height: 50%;
321 left: 30%;
322 top: 20%;
323 width: 50%;
324}
325
326.annotationLayer .textWidgetAnnotation input.comb {
327 font-family: monospace;
328 padding-left: 2px;
329 padding-right: 0;
330}
331
332.annotationLayer .textWidgetAnnotation input.comb:focus {
333 /*
334 * Letter spacing is placed on the right side of each character. Hence, the
335 * letter spacing of the last character may be placed outside the visible
336 * area, causing horizontal scrolling. We avoid this by extending the width
337 * when the element has focus and revert this when it loses focus.
338 */
339 width: 103%;
340}
341
342.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {
343 -webkit-appearance: none;
344 -moz-appearance: none;
345 appearance: none;
346}
347
348.annotationLayer .popupTriggerArea {
349 height: 100%;
350 width: 100%;
351}
352
353.annotationLayer .fileAttachmentAnnotation .popupTriggerArea {
354 position: absolute;
355}
356
357.annotationLayer .popupWrapper {
358 position: absolute;
359 font-size: calc(9px * var(--scale-factor));
360 width: 100%;
361 min-width: calc(180px * var(--scale-factor));
362 pointer-events: none;
363}
364
365.annotationLayer .popup {
366 position: absolute;
367 max-width: calc(180px * var(--scale-factor));
368 background-color: rgba(255, 255, 153, 1);
369 box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor))
370 rgba(136, 136, 136, 1);
371 border-radius: calc(2px * var(--scale-factor));
372 padding: calc(6px * var(--scale-factor));
373 margin-left: calc(5px * var(--scale-factor));
374 cursor: pointer;
375 font: message-box;
376 white-space: normal;
377 word-wrap: break-word;
378 pointer-events: auto;
379}
380
381.annotationLayer .popup > * {
382 font-size: calc(9px * var(--scale-factor));
383}
384
385.annotationLayer .popup h1 {
386 display: inline-block;
387}
388
389.annotationLayer .popupDate {
390 display: inline-block;
391 margin-left: calc(5px * var(--scale-factor));
392}
393
394.annotationLayer .popupContent {
395 border-top: 1px solid rgba(51, 51, 51, 1);
396 margin-top: calc(2px * var(--scale-factor));
397 padding-top: calc(2px * var(--scale-factor));
398}
399
400.annotationLayer .richText > * {
401 white-space: pre-wrap;
402 font-size: calc(9px * var(--scale-factor));
403}
404
405.annotationLayer .highlightAnnotation,
406.annotationLayer .underlineAnnotation,
407.annotationLayer .squigglyAnnotation,
408.annotationLayer .strikeoutAnnotation,
409.annotationLayer .freeTextAnnotation,
410.annotationLayer .lineAnnotation svg line,
411.annotationLayer .squareAnnotation svg rect,
412.annotationLayer .circleAnnotation svg ellipse,
413.annotationLayer .polylineAnnotation svg polyline,
414.annotationLayer .polygonAnnotation svg polygon,
415.annotationLayer .caretAnnotation,
416.annotationLayer .inkAnnotation svg polyline,
417.annotationLayer .stampAnnotation,
418.annotationLayer .fileAttachmentAnnotation {
419 cursor: pointer;
420}
421
422.annotationLayer section svg {
423 position: absolute;
424 width: 100%;
425 height: 100%;
426 top: 0;
427 left: 0;
428}
429
430.annotationLayer .annotationTextContent {
431 position: absolute;
432 width: 100%;
433 height: 100%;
434 opacity: 0;
435 color: transparent;
436 -webkit-user-select: none;
437 -moz-user-select: none;
438 user-select: none;
439 pointer-events: none;
440}
441
442.annotationLayer .annotationTextContent span {
443 width: 100%;
444 display: inline-block;
445}
446
447
448:root {
449 --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");
450 --xfa-focus-outline: auto;
451}
452
453@media screen and (forced-colors: active) {
454 :root {
455 --xfa-focus-outline: 2px solid CanvasText;
456 }
457 .xfaLayer *:required {
458 outline: 1.5px solid selectedItem;
459 }
460}
461
462.xfaLayer {
463 background-color: transparent;
464}
465
466.xfaLayer .highlight {
467 margin: -1px;
468 padding: 1px;
469 background-color: rgba(239, 203, 237, 1);
470 border-radius: 4px;
471}
472
473.xfaLayer .highlight.appended {
474 position: initial;
475}
476
477.xfaLayer .highlight.begin {
478 border-radius: 4px 0 0 4px;
479}
480
481.xfaLayer .highlight.end {
482 border-radius: 0 4px 4px 0;
483}
484
485.xfaLayer .highlight.middle {
486 border-radius: 0;
487}
488
489.xfaLayer .highlight.selected {
490 background-color: rgba(203, 223, 203, 1);
491}
492
493.xfaPage {
494 overflow: hidden;
495 position: relative;
496}
497
498.xfaContentarea {
499 position: absolute;
500}
501
502.xfaPrintOnly {
503 display: none;
504}
505
506.xfaLayer {
507 position: absolute;
508 text-align: initial;
509 top: 0;
510 left: 0;
511 transform-origin: 0 0;
512 line-height: 1.2;
513}
514
515.xfaLayer * {
516 color: inherit;
517 font: inherit;
518 font-style: inherit;
519 font-weight: inherit;
520 font-kerning: inherit;
521 letter-spacing: -0.01px;
522 text-align: inherit;
523 text-decoration: inherit;
524 box-sizing: border-box;
525 background-color: transparent;
526 padding: 0;
527 margin: 0;
528 pointer-events: auto;
529 line-height: inherit;
530}
531
532.xfaLayer *:required {
533 outline: 1.5px solid red;
534}
535
536.xfaLayer div,
537.xfaLayer svg,
538.xfaLayer svg * {
539 pointer-events: none;
540}
541
542.xfaLayer a {
543 color: blue;
544}
545
546.xfaRich li {
547 margin-left: 3em;
548}
549
550.xfaFont {
551 color: black;
552 font-weight: normal;
553 font-kerning: none;
554 font-size: 10px;
555 font-style: normal;
556 letter-spacing: 0;
557 text-decoration: none;
558 vertical-align: 0;
559}
560
561.xfaCaption {
562 overflow: hidden;
563 flex: 0 0 auto;
564}
565
566.xfaCaptionForCheckButton {
567 overflow: hidden;
568 flex: 1 1 auto;
569}
570
571.xfaLabel {
572 height: 100%;
573 width: 100%;
574}
575
576.xfaLeft {
577 display: flex;
578 flex-direction: row;
579 align-items: center;
580}
581
582.xfaRight {
583 display: flex;
584 flex-direction: row-reverse;
585 align-items: center;
586}
587
588:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton) {
589 max-height: 100%;
590}
591
592.xfaTop {
593 display: flex;
594 flex-direction: column;
595 align-items: flex-start;
596}
597
598.xfaBottom {
599 display: flex;
600 flex-direction: column-reverse;
601 align-items: flex-start;
602}
603
604:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton) {
605 width: 100%;
606}
607
608.xfaBorder {
609 background-color: transparent;
610 position: absolute;
611 pointer-events: none;
612}
613
614.xfaWrapped {
615 width: 100%;
616 height: 100%;
617}
618
619:is(.xfaTextfield, .xfaSelect):focus {
620 background-image: none;
621 background-color: transparent;
622 outline: var(--xfa-focus-outline);
623 outline-offset: -1px;
624}
625
626:is(.xfaCheckbox, .xfaRadio):focus {
627 outline: var(--xfa-focus-outline);
628}
629
630.xfaTextfield,
631.xfaSelect {
632 height: 100%;
633 width: 100%;
634 flex: 1 1 auto;
635 border: none;
636 resize: none;
637 background-image: var(--xfa-unfocused-field-background);
638}
639
640.xfaSelect {
641 padding-inline: 2px;
642}
643
644:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect) {
645 flex: 0 1 auto;
646}
647
648.xfaButton {
649 cursor: pointer;
650 width: 100%;
651 height: 100%;
652 border: none;
653 text-align: center;
654}
655
656.xfaLink {
657 width: 100%;
658 height: 100%;
659 position: absolute;
660 top: 0;
661 left: 0;
662}
663
664.xfaCheckbox,
665.xfaRadio {
666 width: 100%;
667 height: 100%;
668 flex: 0 0 auto;
669 border: none;
670}
671
672.xfaRich {
673 white-space: pre-wrap;
674 width: 100%;
675 height: 100%;
676}
677
678.xfaImage {
679 -o-object-position: left top;
680 object-position: left top;
681 -o-object-fit: contain;
682 object-fit: contain;
683 width: 100%;
684 height: 100%;
685}
686
687.xfaLrTb,
688.xfaRlTb,
689.xfaTb {
690 display: flex;
691 flex-direction: column;
692 align-items: stretch;
693}
694
695.xfaLr {
696 display: flex;
697 flex-direction: row;
698 align-items: stretch;
699}
700
701.xfaRl {
702 display: flex;
703 flex-direction: row-reverse;
704 align-items: stretch;
705}
706
707.xfaTb > div {
708 justify-content: left;
709}
710
711.xfaPosition {
712 position: relative;
713}
714
715.xfaArea {
716 position: relative;
717}
718
719.xfaValignMiddle {
720 display: flex;
721 align-items: center;
722}
723
724.xfaTable {
725 display: flex;
726 flex-direction: column;
727 align-items: stretch;
728}
729
730.xfaTable .xfaRow {
731 display: flex;
732 flex-direction: row;
733 align-items: stretch;
734}
735
736.xfaTable .xfaRlRow {
737 display: flex;
738 flex-direction: row-reverse;
739 align-items: stretch;
740 flex: 1;
741}
742
743.xfaTable .xfaRlRow > div {
744 flex: 1;
745}
746
747:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea) {
748 background: initial;
749}
750
751@media print {
752 .xfaTextfield,
753 .xfaSelect {
754 background: transparent;
755 }
756
757 .xfaSelect {
758 -webkit-appearance: none;
759 -moz-appearance: none;
760 appearance: none;
761 text-indent: 1px;
762 text-overflow: "";
763 }
764}
765
766
767:root {
768 --focus-outline: solid 2px blue;
769 --hover-outline: dashed 2px blue;
770 --freetext-line-height: 1.35;
771 --freetext-padding: 2px;
772 --editorFreeText-editing-cursor: text;
773 --editorInk-editing-cursor: pointer;
774}
775
776@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 1.1dppx) {
777 :root {
778 }
779}
780
781@media screen and (forced-colors: active) {
782 :root {
783 --focus-outline: solid 3px ButtonText;
784 --hover-outline: dashed 3px ButtonText;
785 }
786}
787
788[data-editor-rotation="90"] {
789 transform: rotate(90deg);
790}
791[data-editor-rotation="180"] {
792 transform: rotate(180deg);
793}
794[data-editor-rotation="270"] {
795 transform: rotate(270deg);
796}
797
798.annotationEditorLayer {
799 background: transparent;
800 position: absolute;
801 top: 0;
802 left: 0;
803 font-size: calc(100px * var(--scale-factor));
804 transform-origin: 0 0;
805 cursor: auto;
806 z-index: 4;
807}
808
809.annotationEditorLayer.freeTextEditing {
810 cursor: var(--editorFreeText-editing-cursor);
811}
812
813.annotationEditorLayer.inkEditing {
814 cursor: var(--editorInk-editing-cursor);
815}
816
817.annotationEditorLayer :is(.freeTextEditor, .inkEditor)[draggable="true"] {
818 cursor: move;
819}
820
821.annotationEditorLayer .selectedEditor {
822 outline: var(--focus-outline);
823 resize: none;
824}
825
826.annotationEditorLayer .freeTextEditor {
827 position: absolute;
828 background: transparent;
829 border-radius: 3px;
830 padding: calc(var(--freetext-padding) * var(--scale-factor));
831 resize: none;
832 width: auto;
833 height: auto;
834 z-index: 1;
835 transform-origin: 0 0;
836 touch-action: none;
837 cursor: auto;
838}
839
840.annotationEditorLayer .freeTextEditor .internal {
841 background: transparent;
842 border: none;
843 top: 0;
844 left: 0;
845 overflow: visible;
846 white-space: nowrap;
847 resize: none;
848 font: 10px sans-serif;
849 line-height: var(--freetext-line-height);
850}
851
852.annotationEditorLayer .freeTextEditor .overlay {
853 position: absolute;
854 display: none;
855 background: transparent;
856 top: 0;
857 left: 0;
858 width: 100%;
859 height: 100%;
860}
861
862.annotationEditorLayer .freeTextEditor .overlay.enabled {
863 display: block;
864}
865
866.annotationEditorLayer .freeTextEditor .internal:empty::before {
867 content: attr(default-content);
868 color: gray;
869}
870
871.annotationEditorLayer .freeTextEditor .internal:focus {
872 outline: none;
873}
874
875.annotationEditorLayer .inkEditor.disabled {
876 resize: none;
877}
878
879.annotationEditorLayer .inkEditor.disabled.selectedEditor {
880 resize: horizontal;
881}
882
883.annotationEditorLayer
884 :is(.freeTextEditor, .inkEditor):hover:not(.selectedEditor) {
885 outline: var(--hover-outline);
886}
887
888.annotationEditorLayer .inkEditor {
889 position: absolute;
890 background: transparent;
891 border-radius: 3px;
892 overflow: auto;
893 width: 100%;
894 height: 100%;
895 z-index: 1;
896 transform-origin: 0 0;
897 cursor: auto;
898}
899
900.annotationEditorLayer .inkEditor.editing {
901 resize: none;
902 cursor: inherit;
903}
904
905.annotationEditorLayer .inkEditor .inkEditorCanvas {
906 position: absolute;
907 top: 0;
908 left: 0;
909 width: 100%;
910 height: 100%;
911 touch-action: none;
912}
913
914:root {
915 --viewer-container-height: 0;
916 --pdfViewer-padding-bottom: 0;
917 --page-margin: 1px auto -8px;
918 --page-border: 9px solid transparent;
919 --spreadHorizontalWrapped-margin-LR: -3.5px;
920 --loading-icon-delay: 400ms;
921}
922
923@media screen and (forced-colors: active) {
924 :root {
925 --pdfViewer-padding-bottom: 9px;
926 --page-margin: 8px auto -1px;
927 --page-border: 1px solid CanvasText;
928 --spreadHorizontalWrapped-margin-LR: 3.5px;
929 }
930}
931
932[data-main-rotation="90"] {
933 transform: rotate(90deg) translateY(-100%);
934}
935[data-main-rotation="180"] {
936 transform: rotate(180deg) translate(-100%, -100%);
937}
938[data-main-rotation="270"] {
939 transform: rotate(270deg) translateX(-100%);
940}
941
942#hiddenCopyElement {
943 position: absolute;
944 top: 0;
945 left: 0;
946 width: 0;
947 height: 0;
948 display: none;
949}
950
951.pdfViewer {
952 /* Define this variable here and not in :root to avoid to reflow all the UI
953 when scaling (see #15929). */
954 --scale-factor: 1;
955
956 padding-bottom: var(--pdfViewer-padding-bottom);
957}
958
959.pdfViewer .canvasWrapper {
960 overflow: hidden;
961 width: 100%;
962 height: 100%;
963 z-index: 1;
964}
965
966.pdfViewer .page {
967 direction: ltr;
968 width: 816px;
969 height: 1056px;
970 margin: var(--page-margin);
971 position: relative;
972 overflow: visible;
973 border: var(--page-border);
974 background-clip: content-box;
975 background-color: rgba(255, 255, 255, 1);
976}
977
978.pdfViewer .dummyPage {
979 position: relative;
980 width: 0;
981 height: var(--viewer-container-height);
982}
983
984.pdfViewer.removePageBorders .page {
985 margin: 0 auto 10px;
986 border: none;
987}
988
989.pdfViewer.singlePageView {
990 display: inline-block;
991}
992
993.pdfViewer.singlePageView .page {
994 margin: 0;
995 border: none;
996}
997
998.pdfViewer:is(.scrollHorizontal, .scrollWrapped),
999.spread {
1000 margin-inline: 3.5px;
1001 text-align: center;
1002}
1003
1004.pdfViewer.scrollHorizontal,
1005.spread {
1006 white-space: nowrap;
1007}
1008
1009.pdfViewer.removePageBorders,
1010.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .spread {
1011 margin-inline: 0;
1012}
1013
1014.spread :is(.page, .dummyPage),
1015.pdfViewer:is(.scrollHorizontal, .scrollWrapped) :is(.page, .spread) {
1016 display: inline-block;
1017 vertical-align: middle;
1018}
1019
1020.spread .page,
1021.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .page {
1022 margin-inline: var(--spreadHorizontalWrapped-margin-LR);
1023}
1024
1025.pdfViewer.removePageBorders .spread .page,
1026.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page {
1027 margin-inline: 5px;
1028}
1029
1030.pdfViewer .page canvas {
1031 margin: 0;
1032 display: block;
1033}
1034
1035.pdfViewer .page canvas .structTree {
1036 contain: strict;
1037}
1038
1039.pdfViewer .page canvas[hidden] {
1040 display: none;
1041}
1042
1043.pdfViewer .page canvas[zooming] {
1044 width: 100%;
1045 height: 100%;
1046}
1047
1048.pdfViewer .page.loadingIcon::after {
1049 position: absolute;
1050 top: 0;
1051 left: 0;
1052 content: "";
1053 width: 100%;
1054 height: 100%;
1055 background: url("images/loading-icon.gif") center no-repeat;
1056 display: none;
1057 /* Using a delay with background-image doesn't work,
1058 consequently we use the display. */
1059 transition-property: display;
1060 transition-delay: var(--loading-icon-delay);
1061 z-index: 5;
1062 contain: strict;
1063}
1064
1065.pdfViewer .page.loading::after {
1066 display: block;
1067}
1068
1069.pdfViewer .page:not(.loading)::after {
1070 transition-property: none;
1071 display: none;
1072}
1073
1074.pdfPresentationMode .pdfViewer {
1075 padding-bottom: 0;
1076}
1077
1078.pdfPresentationMode .spread {
1079 margin: 0;
1080}
1081
1082.pdfPresentationMode .pdfViewer .page {
1083 margin: 0 auto;
1084 border: 2px solid transparent;
1085}