@dotit/editor 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DocsToolbar.d.ts +12 -2
- package/dist/Ruler.d.ts +23 -0
- package/dist/TrustControl.d.ts +13 -0
- package/dist/index.cjs +23 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +1841 -1324
- package/dist/index.mjs.map +1 -1
- package/dist/line-keymap.d.ts +2 -0
- package/dist/page-geometry.d.ts +9 -0
- package/dist/print.d.ts +3 -0
- package/dist/style.css +434 -137
- package/package.json +3 -3
package/dist/style.css
CHANGED
|
@@ -33,12 +33,14 @@
|
|
|
33
33
|
GOOGLE DOCS – Visual Editor (TipTap)
|
|
34
34
|
═══════════════════════════════════════════════════════════════ */
|
|
35
35
|
|
|
36
|
-
/* Container fills the panel
|
|
36
|
+
/* Container fills the panel — a flat, full-bleed Docs-style workspace:
|
|
37
|
+
light-gray canvas, white page sheet floating on it, no rounded corners. */
|
|
37
38
|
.docs-container {
|
|
39
|
+
--docs-canvas-bg: #f9fbfd;
|
|
38
40
|
display: flex;
|
|
39
41
|
flex-direction: column;
|
|
40
42
|
height: 100%;
|
|
41
|
-
background:
|
|
43
|
+
background: var(--docs-canvas-bg);
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/* ─── Docs Toolbar (formatting bar) ───────────────────────── */
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
align-items: center;
|
|
49
51
|
gap: 2px;
|
|
50
52
|
padding: 4px 12px;
|
|
51
|
-
background:
|
|
53
|
+
background: #fff;
|
|
52
54
|
border-bottom: 1px solid #dadce0;
|
|
53
55
|
flex-shrink: 0;
|
|
54
56
|
min-height: 40px;
|
|
@@ -75,8 +77,8 @@
|
|
|
75
77
|
background: rgba(0, 0, 0, 0.06);
|
|
76
78
|
}
|
|
77
79
|
.docs-toolbar button.active {
|
|
78
|
-
background: rgba(
|
|
79
|
-
color: #
|
|
80
|
+
background: rgba(26, 115, 232, 0.12);
|
|
81
|
+
color: #1a73e8;
|
|
80
82
|
}
|
|
81
83
|
.docs-toolbar select {
|
|
82
84
|
padding: 0 4px;
|
|
@@ -119,11 +121,11 @@
|
|
|
119
121
|
cursor: default;
|
|
120
122
|
}
|
|
121
123
|
.docs-tb-btn.active {
|
|
122
|
-
background: rgba(
|
|
123
|
-
color: #
|
|
124
|
+
background: rgba(26, 115, 232, 0.12);
|
|
125
|
+
color: #1a73e8;
|
|
124
126
|
}
|
|
125
127
|
.docs-tb-btn.active:hover {
|
|
126
|
-
background: rgba(
|
|
128
|
+
background: rgba(26, 115, 232, 0.18);
|
|
127
129
|
}
|
|
128
130
|
.docs-tb-sep {
|
|
129
131
|
width: 1px;
|
|
@@ -202,8 +204,8 @@
|
|
|
202
204
|
background: #f1f3f4;
|
|
203
205
|
}
|
|
204
206
|
.docs-tb-dropdown-item.active {
|
|
205
|
-
background: rgba(
|
|
206
|
-
color: #
|
|
207
|
+
background: rgba(26, 115, 232, 0.08);
|
|
208
|
+
color: #1a73e8;
|
|
207
209
|
}
|
|
208
210
|
.docs-style-preview {
|
|
209
211
|
display: block;
|
|
@@ -386,7 +388,8 @@
|
|
|
386
388
|
.docs-canvas {
|
|
387
389
|
flex: 1;
|
|
388
390
|
overflow: auto;
|
|
389
|
-
|
|
391
|
+
background: var(--docs-canvas-bg, #f9fbfd);
|
|
392
|
+
padding: 14px 0 72px;
|
|
390
393
|
}
|
|
391
394
|
/* Auto-hide scrollbars — appear only when scrolling */
|
|
392
395
|
.docs-canvas {
|
|
@@ -430,12 +433,15 @@
|
|
|
430
433
|
margin boxes); horizontal margins are padding on the content (.tiptap).
|
|
431
434
|
Geometry (size + margins) comes inline from the document's page: block. */
|
|
432
435
|
|
|
436
|
+
/* The white sheet: hairline edge + soft 1px shadow, square corners (Docs).
|
|
437
|
+
The hairline is a box-shadow ring (NOT a border) so it never shifts the
|
|
438
|
+
content box — page geometry must stay identical to print. */
|
|
433
439
|
.docs-page {
|
|
434
440
|
background: #fff;
|
|
435
441
|
box-shadow:
|
|
436
|
-
0 1px
|
|
437
|
-
0 1px
|
|
438
|
-
border-radius:
|
|
442
|
+
0 0 0 1px rgba(60, 64, 67, 0.14),
|
|
443
|
+
0 1px 3px rgba(60, 64, 67, 0.12);
|
|
444
|
+
border-radius: 0;
|
|
439
445
|
position: relative;
|
|
440
446
|
overflow: visible;
|
|
441
447
|
}
|
|
@@ -499,7 +505,7 @@
|
|
|
499
505
|
/* The gap reads as "space between two sheets of paper": canvas color with a
|
|
500
506
|
soft shadow edge on each page card. */
|
|
501
507
|
.docs-pb-gap {
|
|
502
|
-
background: var(--bg
|
|
508
|
+
background: var(--docs-canvas-bg, #f9fbfd);
|
|
503
509
|
box-shadow:
|
|
504
510
|
inset 0 6px 5px -4px rgba(15, 23, 42, 0.14),
|
|
505
511
|
inset 0 -4px 4px -3px rgba(15, 23, 42, 0.1);
|
|
@@ -743,66 +749,124 @@
|
|
|
743
749
|
vertical-align: top;
|
|
744
750
|
}
|
|
745
751
|
|
|
746
|
-
/* ─── Trust blocks (sign / seal / approve / freeze / amendment)
|
|
752
|
+
/* ─── Trust blocks (sign / seal / approve / freeze / amendment) ──────────────
|
|
753
|
+
Ink-first, exactly mirroring core's print CSS (document-css.ts .it-approval /
|
|
754
|
+
.it-signature / .it-sealed-banner): hairlines + small-caps labels, no colored
|
|
755
|
+
fills — what you see in the editor is what core prints. */
|
|
756
|
+
|
|
747
757
|
.docs-page .tiptap .it-doc-trust {
|
|
748
758
|
display: flex;
|
|
749
759
|
flex-wrap: wrap;
|
|
750
|
-
gap:
|
|
751
|
-
align-items:
|
|
752
|
-
margin: 10px 0;
|
|
753
|
-
padding: 9px 14px;
|
|
754
|
-
border: 1px solid #daa520;
|
|
755
|
-
border-radius: 8px;
|
|
756
|
-
background: #fffdf5;
|
|
760
|
+
gap: 10px;
|
|
761
|
+
align-items: baseline;
|
|
757
762
|
font-size: 0.9rem;
|
|
758
763
|
user-select: none;
|
|
759
764
|
}
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
background: #fdf5f5;
|
|
763
|
-
font-weight: 600;
|
|
764
|
-
}
|
|
765
|
+
|
|
766
|
+
/* approve → core .it-approval: single hairline row, ✓ APPROVED label. */
|
|
765
767
|
.docs-page .tiptap .it-doc-trust--approve {
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
.docs-page .tiptap .it-doc-trust--freeze {
|
|
770
|
-
border-color: #5b8def;
|
|
771
|
-
background: #f5f8ff;
|
|
768
|
+
margin: 12px 0;
|
|
769
|
+
padding: 7px 2px;
|
|
770
|
+
border-bottom: 1px solid #ddd;
|
|
772
771
|
}
|
|
773
|
-
.docs-page .tiptap .it-doc-trust--
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
772
|
+
.docs-page .tiptap .it-doc-trust--approve .it-doc-trust__label {
|
|
773
|
+
font-size: 0.7rem;
|
|
774
|
+
font-weight: 700;
|
|
775
|
+
text-transform: uppercase;
|
|
776
|
+
letter-spacing: 0.1em;
|
|
777
|
+
color: #2e7d32;
|
|
778
|
+
flex-shrink: 0;
|
|
777
779
|
}
|
|
778
|
-
.docs-page .tiptap .it-doc-
|
|
779
|
-
|
|
780
|
-
line-height: 1;
|
|
780
|
+
.docs-page .tiptap .it-doc-trust--approve .it-doc-trust__label::before {
|
|
781
|
+
content: "✓ ";
|
|
781
782
|
}
|
|
782
|
-
.docs-page .tiptap .it-doc-
|
|
783
|
+
.docs-page .tiptap .it-doc-trust__what {
|
|
784
|
+
font-size: 0.9rem;
|
|
783
785
|
font-weight: 600;
|
|
784
|
-
|
|
786
|
+
color: #111;
|
|
787
|
+
}
|
|
788
|
+
.docs-page .tiptap .it-doc-trust__who {
|
|
789
|
+
font-size: 0.9rem;
|
|
790
|
+
color: #555;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
/* sign → core .it-signature: signature rule line (hairline on top). */
|
|
794
|
+
.docs-page .tiptap .it-doc-trust--sign {
|
|
795
|
+
margin: 14px 0 10px;
|
|
796
|
+
padding: 7px 2px 5px;
|
|
797
|
+
border-top: 1px solid #111;
|
|
785
798
|
}
|
|
786
799
|
.docs-page .tiptap .it-doc-trust__name {
|
|
787
800
|
font-weight: 600;
|
|
801
|
+
font-size: 0.95rem;
|
|
788
802
|
color: #111;
|
|
789
803
|
}
|
|
790
804
|
.docs-page .tiptap .it-doc-trust__role {
|
|
805
|
+
font-size: 0.85rem;
|
|
791
806
|
color: #555;
|
|
792
807
|
}
|
|
793
|
-
.docs-page .tiptap .it-doc-
|
|
794
|
-
|
|
795
|
-
font-
|
|
796
|
-
margin-
|
|
808
|
+
.docs-page .tiptap .it-doc-trust__status {
|
|
809
|
+
font-size: 0.72rem;
|
|
810
|
+
font-weight: 600;
|
|
811
|
+
margin-inline-start: auto;
|
|
812
|
+
text-transform: uppercase;
|
|
813
|
+
letter-spacing: 0.08em;
|
|
814
|
+
color: #2e7d32;
|
|
797
815
|
}
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
816
|
+
|
|
817
|
+
/* seal / freeze → core .it-sealed-banner: SEALED band, thin top+bottom rules. */
|
|
818
|
+
.docs-page .tiptap .it-doc-trust--seal,
|
|
819
|
+
.docs-page .tiptap .it-doc-trust--freeze {
|
|
820
|
+
gap: 12px;
|
|
821
|
+
margin: 18px 0;
|
|
822
|
+
padding: 8px 2px;
|
|
823
|
+
border-top: 1px solid #111;
|
|
824
|
+
border-bottom: 1px solid #111;
|
|
802
825
|
}
|
|
803
|
-
.docs-page .tiptap .it-doc-
|
|
826
|
+
.docs-page .tiptap .it-doc-trust--seal .it-doc-trust__label,
|
|
827
|
+
.docs-page .tiptap .it-doc-trust--freeze .it-doc-trust__label {
|
|
804
828
|
font-size: 0.78rem;
|
|
829
|
+
font-weight: 700;
|
|
830
|
+
color: #111;
|
|
831
|
+
text-transform: uppercase;
|
|
832
|
+
letter-spacing: 0.14em;
|
|
833
|
+
}
|
|
834
|
+
.docs-page .tiptap .it-doc-trust--seal .it-doc-trust__date,
|
|
835
|
+
.docs-page .tiptap .it-doc-trust--freeze .it-doc-trust__date {
|
|
836
|
+
margin-inline-start: auto;
|
|
837
|
+
}
|
|
838
|
+
.docs-page .tiptap .it-doc-trust__hash {
|
|
839
|
+
font-family: "SFMono-Regular", ui-monospace, Consolas, monospace;
|
|
840
|
+
font-size: 0.72rem;
|
|
841
|
+
color: #999;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
/* amendment → muted hairline row. */
|
|
845
|
+
.docs-page .tiptap .it-doc-trust--amendment,
|
|
846
|
+
.docs-page .tiptap .it-doc-trust--amend {
|
|
847
|
+
margin: 12px 0;
|
|
848
|
+
padding: 7px 2px;
|
|
849
|
+
border-bottom: 1px solid #ddd;
|
|
850
|
+
}
|
|
851
|
+
.docs-page .tiptap .it-doc-trust--amendment .it-doc-trust__label,
|
|
852
|
+
.docs-page .tiptap .it-doc-trust--amend .it-doc-trust__label {
|
|
853
|
+
font-size: 0.7rem;
|
|
854
|
+
font-weight: 700;
|
|
855
|
+
text-transform: uppercase;
|
|
856
|
+
letter-spacing: 0.1em;
|
|
857
|
+
color: #555;
|
|
858
|
+
flex-shrink: 0;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.docs-page .tiptap .it-doc-trust__date {
|
|
805
862
|
color: #777;
|
|
863
|
+
font-size: 0.8rem;
|
|
864
|
+
margin-inline-start: auto;
|
|
865
|
+
font-variant-numeric: tabular-nums;
|
|
866
|
+
}
|
|
867
|
+
/* sign rows: status sits at the end — date stays inline. */
|
|
868
|
+
.docs-page .tiptap .it-doc-trust--sign .it-doc-trust__date {
|
|
869
|
+
margin-inline-start: 0;
|
|
806
870
|
}
|
|
807
871
|
|
|
808
872
|
/* ─── Template variables ({{path}}) ───────────────────────── */
|
|
@@ -1052,43 +1116,59 @@
|
|
|
1052
1116
|
color: #1d4ed8;
|
|
1053
1117
|
}
|
|
1054
1118
|
|
|
1119
|
+
/* ─── Info callout — quiet variant (parity with core .intent-info) ───
|
|
1120
|
+
The Plain Writing Overrides above flatten every callout; info is the
|
|
1121
|
+
exception — a soft gray panel with an italic body and an ⓘ marker (no loud
|
|
1122
|
+
"NOTE" label), exactly matching core's document-css.ts so editor == print.
|
|
1123
|
+
Declared AFTER the overrides so it wins. */
|
|
1124
|
+
.docs-page .tiptap .it-doc-callout[data-variant="info"] {
|
|
1125
|
+
display: block;
|
|
1126
|
+
margin: 10px 0;
|
|
1127
|
+
padding: 8px 14px 8px 12px;
|
|
1128
|
+
background: #f5f6f8;
|
|
1129
|
+
border: none;
|
|
1130
|
+
border-inline-start: 3px solid #c7ccd3;
|
|
1131
|
+
border-radius: 0 3px 3px 0;
|
|
1132
|
+
}
|
|
1133
|
+
.docs-page .tiptap .it-doc-callout[data-variant="info"] .it-doc-callout-icon {
|
|
1134
|
+
display: none;
|
|
1135
|
+
}
|
|
1136
|
+
.docs-page .tiptap .it-doc-callout[data-variant="info"] .it-doc-callout-text {
|
|
1137
|
+
display: inline;
|
|
1138
|
+
font-style: italic;
|
|
1139
|
+
color: #4f4f4f;
|
|
1140
|
+
}
|
|
1141
|
+
.docs-page
|
|
1142
|
+
.tiptap
|
|
1143
|
+
.it-doc-callout[data-variant="info"]
|
|
1144
|
+
.it-doc-callout-text::before {
|
|
1145
|
+
content: "ⓘ ";
|
|
1146
|
+
font-style: normal;
|
|
1147
|
+
font-weight: 600;
|
|
1148
|
+
color: #6e6e6e;
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1055
1151
|
/* ═══════════════════════════════════════════════════════════════
|
|
1056
|
-
Ribbon — ONE
|
|
1152
|
+
Ribbon — ONE compact Docs-style toolbar row
|
|
1057
1153
|
(Edit | File | Text | Paragraph | Insert | Trust)
|
|
1058
1154
|
═══════════════════════════════════════════════════════════════ */
|
|
1059
1155
|
|
|
1060
1156
|
.docs-ribbon {
|
|
1061
|
-
align-items:
|
|
1157
|
+
align-items: center;
|
|
1062
1158
|
gap: 0;
|
|
1063
|
-
padding:
|
|
1159
|
+
padding: 4px 10px;
|
|
1064
1160
|
}
|
|
1065
1161
|
.ribbon-group {
|
|
1066
|
-
display: flex;
|
|
1067
|
-
flex-direction: column;
|
|
1068
|
-
align-items: center;
|
|
1069
|
-
justify-content: space-between;
|
|
1070
|
-
padding: 0 2px;
|
|
1071
|
-
}
|
|
1072
|
-
.ribbon-group-row {
|
|
1073
1162
|
display: flex;
|
|
1074
1163
|
align-items: center;
|
|
1075
1164
|
gap: 2px;
|
|
1076
|
-
|
|
1077
|
-
.ribbon-group-label {
|
|
1078
|
-
font-size: 9px;
|
|
1079
|
-
font-weight: 600;
|
|
1080
|
-
letter-spacing: 0.07em;
|
|
1081
|
-
text-transform: uppercase;
|
|
1082
|
-
color: #9aa0a6;
|
|
1083
|
-
margin-top: 2px;
|
|
1084
|
-
user-select: none;
|
|
1085
|
-
white-space: nowrap;
|
|
1165
|
+
padding: 0 2px;
|
|
1086
1166
|
}
|
|
1087
1167
|
.ribbon-sep {
|
|
1088
1168
|
width: 1px;
|
|
1089
|
-
|
|
1090
|
-
background: #
|
|
1091
|
-
margin:
|
|
1169
|
+
height: 22px;
|
|
1170
|
+
background: #dadce0;
|
|
1171
|
+
margin: 0 6px;
|
|
1092
1172
|
flex-shrink: 0;
|
|
1093
1173
|
}
|
|
1094
1174
|
.ribbon-btn-text {
|
|
@@ -1116,7 +1196,7 @@
|
|
|
1116
1196
|
.ribbon-editing,
|
|
1117
1197
|
.ribbon-locked {
|
|
1118
1198
|
display: flex;
|
|
1119
|
-
align-items:
|
|
1199
|
+
align-items: center;
|
|
1120
1200
|
}
|
|
1121
1201
|
/* Sealed documents: formatting is read-only. */
|
|
1122
1202
|
.ribbon-locked {
|
|
@@ -1152,59 +1232,6 @@
|
|
|
1152
1232
|
white-space: pre-wrap;
|
|
1153
1233
|
}
|
|
1154
1234
|
|
|
1155
|
-
/* ═══════════════════════════════════════════════════════════════
|
|
1156
|
-
Signature line — sign: blocks render like a signed paper document
|
|
1157
|
-
(script autograph over a rule, printed name / role / date below)
|
|
1158
|
-
═══════════════════════════════════════════════════════════════ */
|
|
1159
|
-
|
|
1160
|
-
.docs-page .tiptap .it-doc-sign {
|
|
1161
|
-
display: inline-block;
|
|
1162
|
-
min-width: 300px;
|
|
1163
|
-
max-width: 420px;
|
|
1164
|
-
margin: 22px 0 8px;
|
|
1165
|
-
margin-inline-end: 28px;
|
|
1166
|
-
padding: 0;
|
|
1167
|
-
border: none;
|
|
1168
|
-
background: none;
|
|
1169
|
-
font-weight: 400;
|
|
1170
|
-
user-select: none;
|
|
1171
|
-
}
|
|
1172
|
-
.docs-page .tiptap .it-doc-sign__script {
|
|
1173
|
-
font-family: "Snell Roundhand", "Savoye LET", "Segoe Script",
|
|
1174
|
-
"Brush Script MT", cursive;
|
|
1175
|
-
font-size: 23px;
|
|
1176
|
-
line-height: 1.15;
|
|
1177
|
-
color: #1a2a52;
|
|
1178
|
-
padding: 0 6px 2px;
|
|
1179
|
-
min-height: 27px;
|
|
1180
|
-
}
|
|
1181
|
-
.docs-page .tiptap .it-doc-sign__rule {
|
|
1182
|
-
border-bottom: 1.5px solid #202124;
|
|
1183
|
-
}
|
|
1184
|
-
.docs-page .tiptap .it-doc-sign__row {
|
|
1185
|
-
display: flex;
|
|
1186
|
-
align-items: baseline;
|
|
1187
|
-
gap: 8px;
|
|
1188
|
-
margin-top: 5px;
|
|
1189
|
-
font-size: 0.85rem;
|
|
1190
|
-
}
|
|
1191
|
-
.docs-page .tiptap .it-doc-sign__name {
|
|
1192
|
-
font-weight: 600;
|
|
1193
|
-
color: #111;
|
|
1194
|
-
}
|
|
1195
|
-
.docs-page .tiptap .it-doc-sign__role {
|
|
1196
|
-
color: #555;
|
|
1197
|
-
}
|
|
1198
|
-
.docs-page .tiptap .it-doc-sign__role::before {
|
|
1199
|
-
content: "· ";
|
|
1200
|
-
color: #9aa0a6;
|
|
1201
|
-
}
|
|
1202
|
-
.docs-page .tiptap .it-doc-sign__date {
|
|
1203
|
-
margin-inline-start: auto;
|
|
1204
|
-
color: #777;
|
|
1205
|
-
font-size: 0.8rem;
|
|
1206
|
-
}
|
|
1207
|
-
|
|
1208
1235
|
/* ═══════════════════════════════════════════════════════════════
|
|
1209
1236
|
Document status banner (trust) + document properties strip
|
|
1210
1237
|
═══════════════════════════════════════════════════════════════ */
|
|
@@ -1336,17 +1363,284 @@
|
|
|
1336
1363
|
unicode-bidi: plaintext;
|
|
1337
1364
|
}
|
|
1338
1365
|
|
|
1339
|
-
/* ───
|
|
1340
|
-
|
|
1341
|
-
.docs-toolbar {
|
|
1342
|
-
background: linear-gradient(90deg, rgba(15, 118, 110, 0.07), rgba(183, 106, 31, 0.08));
|
|
1343
|
-
border-bottom: 1px solid rgba(216, 203, 181, 0.95);
|
|
1344
|
-
}
|
|
1366
|
+
/* ─── Active-control accent (Docs blue) ───────────────────── */
|
|
1345
1367
|
|
|
1346
1368
|
.docs-toolbar button.active,
|
|
1347
1369
|
.docs-tb-btn.active {
|
|
1348
|
-
background: rgba(
|
|
1349
|
-
color: #
|
|
1370
|
+
background: rgba(26, 115, 232, 0.12);
|
|
1371
|
+
color: #1a73e8;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
1375
|
+
Horizontal ruler — Google Docs strip above the page
|
|
1376
|
+
═══════════════════════════════════════════════════════════════ */
|
|
1377
|
+
|
|
1378
|
+
.docs-ruler {
|
|
1379
|
+
flex-shrink: 0;
|
|
1380
|
+
height: 20px;
|
|
1381
|
+
background: #fff;
|
|
1382
|
+
border-bottom: 1px solid #dadce0;
|
|
1383
|
+
overflow: hidden;
|
|
1384
|
+
user-select: none;
|
|
1385
|
+
}
|
|
1386
|
+
/* Exactly as wide as the page sheet (geometry.width × zoom), centered the same
|
|
1387
|
+
way; translated by the canvas' scrollLeft so it stays glued to the sheet. */
|
|
1388
|
+
.docs-ruler-track {
|
|
1389
|
+
position: relative;
|
|
1390
|
+
height: 100%;
|
|
1391
|
+
margin: 0 auto;
|
|
1392
|
+
}
|
|
1393
|
+
.docs-ruler-margin {
|
|
1394
|
+
position: absolute;
|
|
1395
|
+
top: 0;
|
|
1396
|
+
bottom: 0;
|
|
1397
|
+
background: rgba(60, 64, 67, 0.1);
|
|
1398
|
+
}
|
|
1399
|
+
.docs-ruler-tick {
|
|
1400
|
+
position: absolute;
|
|
1401
|
+
bottom: 4px;
|
|
1402
|
+
width: 1px;
|
|
1403
|
+
background: #9aa0a6;
|
|
1404
|
+
}
|
|
1405
|
+
.docs-ruler-tick--minor {
|
|
1406
|
+
height: 4px;
|
|
1407
|
+
}
|
|
1408
|
+
.docs-ruler-tick--major {
|
|
1409
|
+
height: 7px;
|
|
1410
|
+
}
|
|
1411
|
+
.docs-ruler-num {
|
|
1412
|
+
position: absolute;
|
|
1413
|
+
top: 50%;
|
|
1414
|
+
transform: translate(-50%, -50%);
|
|
1415
|
+
font-size: 9px;
|
|
1416
|
+
line-height: 1;
|
|
1417
|
+
color: #80868b;
|
|
1418
|
+
font-variant-numeric: tabular-nums;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
/* Draggable margin stops (Google-Docs blue markers). */
|
|
1422
|
+
.docs-ruler--draggable .docs-ruler-stop {
|
|
1423
|
+
position: absolute;
|
|
1424
|
+
z-index: 2;
|
|
1425
|
+
}
|
|
1426
|
+
.docs-ruler-stop--h {
|
|
1427
|
+
top: 2px;
|
|
1428
|
+
width: 9px;
|
|
1429
|
+
height: 9px;
|
|
1430
|
+
margin-left: -4.5px;
|
|
1431
|
+
cursor: ew-resize;
|
|
1432
|
+
border-left: 4px solid transparent;
|
|
1433
|
+
border-right: 4px solid transparent;
|
|
1434
|
+
border-top: 7px solid #5b6b8c;
|
|
1435
|
+
}
|
|
1436
|
+
.docs-ruler-stop--h:hover,
|
|
1437
|
+
.docs-ruler-stop--h.dragging {
|
|
1438
|
+
border-top-color: #1a73e8;
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
1442
|
+
Canvas row — left vertical ruler + the scrollable canvas
|
|
1443
|
+
═══════════════════════════════════════════════════════════════ */
|
|
1444
|
+
.docs-canvas-row {
|
|
1445
|
+
flex: 1;
|
|
1446
|
+
min-height: 0;
|
|
1447
|
+
display: flex;
|
|
1448
|
+
}
|
|
1449
|
+
.docs-canvas-row .docs-canvas {
|
|
1450
|
+
flex: 1;
|
|
1451
|
+
min-width: 0;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
.docs-ruler-v {
|
|
1455
|
+
flex-shrink: 0;
|
|
1456
|
+
width: 20px;
|
|
1457
|
+
background: #fff;
|
|
1458
|
+
border-right: 1px solid #dadce0;
|
|
1459
|
+
overflow: hidden;
|
|
1460
|
+
user-select: none;
|
|
1461
|
+
}
|
|
1462
|
+
.docs-ruler-v-track {
|
|
1463
|
+
position: relative;
|
|
1464
|
+
width: 100%;
|
|
1465
|
+
margin: 14px auto 0; /* matches .docs-canvas top padding so 0 aligns to sheet top */
|
|
1466
|
+
}
|
|
1467
|
+
.docs-ruler-margin--v {
|
|
1468
|
+
position: absolute;
|
|
1469
|
+
left: 0;
|
|
1470
|
+
right: 0;
|
|
1471
|
+
top: auto;
|
|
1472
|
+
bottom: auto;
|
|
1473
|
+
width: auto;
|
|
1474
|
+
background: rgba(60, 64, 67, 0.1);
|
|
1475
|
+
}
|
|
1476
|
+
.docs-ruler-tick--v {
|
|
1477
|
+
bottom: auto;
|
|
1478
|
+
left: auto;
|
|
1479
|
+
right: 4px;
|
|
1480
|
+
width: 4px;
|
|
1481
|
+
height: 1px;
|
|
1482
|
+
}
|
|
1483
|
+
.docs-ruler-tick--v.docs-ruler-tick--major {
|
|
1484
|
+
width: 7px;
|
|
1485
|
+
}
|
|
1486
|
+
.docs-ruler-num--v {
|
|
1487
|
+
top: auto;
|
|
1488
|
+
left: 50%;
|
|
1489
|
+
transform: translate(-50%, -50%);
|
|
1490
|
+
writing-mode: vertical-rl;
|
|
1491
|
+
}
|
|
1492
|
+
.docs-ruler-stop--v {
|
|
1493
|
+
position: absolute;
|
|
1494
|
+
z-index: 2;
|
|
1495
|
+
left: 2px;
|
|
1496
|
+
width: 9px;
|
|
1497
|
+
height: 9px;
|
|
1498
|
+
margin-top: -4.5px;
|
|
1499
|
+
cursor: ns-resize;
|
|
1500
|
+
border-top: 4px solid transparent;
|
|
1501
|
+
border-bottom: 4px solid transparent;
|
|
1502
|
+
border-left: 7px solid #5b6b8c;
|
|
1503
|
+
}
|
|
1504
|
+
.docs-ruler-stop--v:hover,
|
|
1505
|
+
.docs-ruler-stop--v.dragging {
|
|
1506
|
+
border-left-color: #1a73e8;
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
1510
|
+
Trust control — one self-explanatory state button + popover
|
|
1511
|
+
═══════════════════════════════════════════════════════════════ */
|
|
1512
|
+
.trust-control {
|
|
1513
|
+
position: relative;
|
|
1514
|
+
}
|
|
1515
|
+
.trust-face {
|
|
1516
|
+
gap: 5px;
|
|
1517
|
+
}
|
|
1518
|
+
.trust-face__icon {
|
|
1519
|
+
display: inline-flex;
|
|
1520
|
+
}
|
|
1521
|
+
.trust-face__ok {
|
|
1522
|
+
color: #188038;
|
|
1523
|
+
font-weight: 700;
|
|
1524
|
+
}
|
|
1525
|
+
.trust-face--draft {
|
|
1526
|
+
color: #5f6368;
|
|
1527
|
+
}
|
|
1528
|
+
.trust-face--signed {
|
|
1529
|
+
color: #1a73e8;
|
|
1530
|
+
}
|
|
1531
|
+
.trust-face--sealed {
|
|
1532
|
+
color: #188038;
|
|
1533
|
+
}
|
|
1534
|
+
.trust-face--broken {
|
|
1535
|
+
color: #d93025;
|
|
1536
|
+
}
|
|
1537
|
+
.trust-popover {
|
|
1538
|
+
position: absolute;
|
|
1539
|
+
top: calc(100% + 6px);
|
|
1540
|
+
right: 0;
|
|
1541
|
+
z-index: 50;
|
|
1542
|
+
width: 280px;
|
|
1543
|
+
background: #fff;
|
|
1544
|
+
border: 1px solid #dadce0;
|
|
1545
|
+
border-radius: 10px;
|
|
1546
|
+
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16);
|
|
1547
|
+
padding: 12px;
|
|
1548
|
+
font-size: 13px;
|
|
1549
|
+
}
|
|
1550
|
+
.trust-popover__state strong {
|
|
1551
|
+
display: block;
|
|
1552
|
+
font-size: 14px;
|
|
1553
|
+
margin-bottom: 2px;
|
|
1554
|
+
}
|
|
1555
|
+
.trust-popover__meta {
|
|
1556
|
+
color: #5f6368;
|
|
1557
|
+
font-size: 12px;
|
|
1558
|
+
line-height: 1.4;
|
|
1559
|
+
}
|
|
1560
|
+
.trust-popover__divider {
|
|
1561
|
+
height: 1px;
|
|
1562
|
+
background: #ececec;
|
|
1563
|
+
margin: 10px 0;
|
|
1564
|
+
}
|
|
1565
|
+
.trust-popover__action {
|
|
1566
|
+
display: flex;
|
|
1567
|
+
align-items: center;
|
|
1568
|
+
gap: 8px;
|
|
1569
|
+
width: 100%;
|
|
1570
|
+
padding: 8px 10px;
|
|
1571
|
+
margin-top: 4px;
|
|
1572
|
+
border: 1px solid #dadce0;
|
|
1573
|
+
border-radius: 7px;
|
|
1574
|
+
background: #fff;
|
|
1575
|
+
cursor: pointer;
|
|
1576
|
+
font-size: 13px;
|
|
1577
|
+
color: #202124;
|
|
1578
|
+
text-align: left;
|
|
1579
|
+
}
|
|
1580
|
+
.trust-popover__action:hover {
|
|
1581
|
+
background: #f1f3f4;
|
|
1582
|
+
}
|
|
1583
|
+
.trust-popover__action:disabled {
|
|
1584
|
+
opacity: 0.5;
|
|
1585
|
+
cursor: default;
|
|
1586
|
+
}
|
|
1587
|
+
.trust-popover__action--primary {
|
|
1588
|
+
background: #1a73e8;
|
|
1589
|
+
border-color: #1a73e8;
|
|
1590
|
+
color: #fff;
|
|
1591
|
+
}
|
|
1592
|
+
.trust-popover__action--primary:hover {
|
|
1593
|
+
background: #1666c8;
|
|
1594
|
+
}
|
|
1595
|
+
.trust-popover__action--warn {
|
|
1596
|
+
color: #b06000;
|
|
1597
|
+
}
|
|
1598
|
+
.trust-popover__verify {
|
|
1599
|
+
font-size: 12px;
|
|
1600
|
+
margin-bottom: 6px;
|
|
1601
|
+
}
|
|
1602
|
+
.trust-verify--ok {
|
|
1603
|
+
color: #188038;
|
|
1604
|
+
}
|
|
1605
|
+
.trust-verify--bad {
|
|
1606
|
+
color: #d93025;
|
|
1607
|
+
}
|
|
1608
|
+
.trust-popover__hash {
|
|
1609
|
+
margin-top: 6px;
|
|
1610
|
+
}
|
|
1611
|
+
.trust-popover__hash summary {
|
|
1612
|
+
cursor: pointer;
|
|
1613
|
+
color: #5f6368;
|
|
1614
|
+
}
|
|
1615
|
+
.trust-popover__hash code {
|
|
1616
|
+
display: block;
|
|
1617
|
+
margin-top: 4px;
|
|
1618
|
+
word-break: break-all;
|
|
1619
|
+
font-size: 11px;
|
|
1620
|
+
color: #5f6368;
|
|
1621
|
+
}
|
|
1622
|
+
.trust-sign-form {
|
|
1623
|
+
display: flex;
|
|
1624
|
+
flex-direction: column;
|
|
1625
|
+
gap: 6px;
|
|
1626
|
+
}
|
|
1627
|
+
.trust-sign-input {
|
|
1628
|
+
width: 100%;
|
|
1629
|
+
padding: 7px 9px;
|
|
1630
|
+
border: 1px solid #dadce0;
|
|
1631
|
+
border-radius: 6px;
|
|
1632
|
+
font-size: 13px;
|
|
1633
|
+
}
|
|
1634
|
+
.trust-sign-input:focus {
|
|
1635
|
+
outline: none;
|
|
1636
|
+
border-color: #1a73e8;
|
|
1637
|
+
}
|
|
1638
|
+
.trust-sign-actions {
|
|
1639
|
+
display: flex;
|
|
1640
|
+
gap: 6px;
|
|
1641
|
+
}
|
|
1642
|
+
.trust-sign-actions .trust-popover__action {
|
|
1643
|
+
margin-top: 2px;
|
|
1350
1644
|
}
|
|
1351
1645
|
|
|
1352
1646
|
/* ─── Mobile ──────────────────────────────────────────────── */
|
|
@@ -1361,4 +1655,7 @@
|
|
|
1361
1655
|
.docs-canvas {
|
|
1362
1656
|
padding: 0;
|
|
1363
1657
|
}
|
|
1658
|
+
.docs-ruler {
|
|
1659
|
+
display: none;
|
|
1660
|
+
}
|
|
1364
1661
|
}
|