@atom63/resume 0.1.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.
@@ -0,0 +1,205 @@
1
+ /* Screen preview — keep letter layout stable on mobile browsers. */
2
+ #resume-print-target,
3
+ #resume-print-target * {
4
+ -webkit-text-size-adjust: none;
5
+ text-size-adjust: none;
6
+ }
7
+
8
+ [data-resume-scale-root] {
9
+ transform-origin: top left;
10
+ }
11
+
12
+ /* ResumeViewer chrome — the standalone component's own layout (toolbar +
13
+ scroll viewport + scaled page stage). Tailwind-free; the package ships these
14
+ classes so the viewer is self-styled. The neutral viewport background mirrors
15
+ the old muted canvas; the page frames come from the document and paper tokens
16
+ defined in tokens.css and document.css. */
17
+ .resume-viewer {
18
+ display: flex;
19
+ flex-direction: column;
20
+ height: 100%;
21
+ overflow: hidden;
22
+ }
23
+
24
+ .resume-viewer-toolbar {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: space-between;
28
+ gap: 0.75rem;
29
+ padding: 0.375rem 0.75rem;
30
+ border-bottom: 1px solid rgb(0 0 0 / 0.08);
31
+ background: #fff;
32
+ flex: 0 0 auto;
33
+ }
34
+
35
+ .resume-viewer-pagecount {
36
+ font-size: 0.8125rem;
37
+ color: rgb(0 0 0 / 0.55);
38
+ }
39
+
40
+ .resume-viewer-controls {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 0.25rem;
44
+ }
45
+
46
+ .resume-viewer-btn-group {
47
+ display: flex;
48
+ align-items: center;
49
+ }
50
+
51
+ .resume-viewer-btn {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ height: 2rem;
56
+ min-width: 2rem;
57
+ padding: 0 0.375rem;
58
+ border: 0;
59
+ border-radius: 0.375rem;
60
+ background: transparent;
61
+ color: rgb(0 0 0 / 0.7);
62
+ font-size: 0.8125rem;
63
+ cursor: pointer;
64
+ }
65
+
66
+ .resume-viewer-btn:hover:not(:disabled) {
67
+ background: rgb(0 0 0 / 0.06);
68
+ }
69
+
70
+ .resume-viewer-btn:disabled {
71
+ opacity: 0.4;
72
+ cursor: default;
73
+ }
74
+
75
+ .resume-viewer-btn-active {
76
+ background: rgb(0 0 0 / 0.08);
77
+ color: rgb(0 0 0 / 0.9);
78
+ }
79
+
80
+ .resume-viewer-btn-text {
81
+ padding: 0 0.625rem;
82
+ }
83
+
84
+ .resume-viewer-zoom-label {
85
+ display: inline-flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ height: 2rem;
89
+ width: 3rem;
90
+ border: 0;
91
+ border-radius: 0.375rem;
92
+ background: transparent;
93
+ color: rgb(0 0 0 / 0.55);
94
+ font-size: 0.8125rem;
95
+ font-variant-numeric: tabular-nums;
96
+ cursor: pointer;
97
+ }
98
+
99
+ .resume-viewer-zoom-label:hover {
100
+ background: rgb(0 0 0 / 0.06);
101
+ }
102
+
103
+ .resume-viewer-icon {
104
+ width: 1rem;
105
+ height: 1rem;
106
+ }
107
+
108
+ .resume-viewer-scroll {
109
+ flex: 1 1 auto;
110
+ min-height: 0;
111
+ overflow: auto;
112
+ background: rgb(244 244 245);
113
+ }
114
+
115
+ .resume-viewer-scroll-grab {
116
+ cursor: grab;
117
+ }
118
+
119
+ .resume-viewer-scroll-grabbing {
120
+ cursor: grabbing;
121
+ }
122
+
123
+ .resume-viewer-scroll-mobile {
124
+ touch-action: none;
125
+ user-select: none;
126
+ }
127
+
128
+ .resume-viewer-stage {
129
+ margin-top: 1.5rem;
130
+ margin-bottom: 1.5rem;
131
+ padding-left: 1rem;
132
+ padding-right: 1rem;
133
+ }
134
+
135
+ .resume-viewer-page-box {
136
+ margin-left: auto;
137
+ margin-right: auto;
138
+ }
139
+
140
+ .resume-viewer-scale-root {
141
+ position: relative;
142
+ }
143
+
144
+ .resume-viewer-content {
145
+ position: relative;
146
+ display: flex;
147
+ flex-direction: column;
148
+ color: #000;
149
+ }
150
+
151
+ [data-slot="scroll-area-viewport"][data-pan-active],
152
+ .resume-viewer-scroll[data-pan-active] {
153
+ background-color: color-mix(in oklch, var(--muted) 42%, transparent);
154
+ }
155
+
156
+ @media (prefers-reduced-motion: reduce) {
157
+ [data-slot="scroll-area-viewport"][data-pan-active],
158
+ .resume-viewer-scroll[data-pan-active] {
159
+ transition: none;
160
+ }
161
+ }
162
+
163
+ #resume-print-target a,
164
+ #resume-print-target button {
165
+ touch-action: manipulation;
166
+ }
167
+
168
+ @media print {
169
+ /* Body children are hidden/restored via JS (beforeprint/afterprint)
170
+ to preserve <style>/<link>/<script> tags. */
171
+
172
+ /* Hard isolation: while the resume's print clone exists, hide every other
173
+ direct body child (other app windows, stray clones) regardless of JS
174
+ hide-ordering across apps. Scoped to the clone's presence so it never
175
+ affects another app's print. */
176
+ body:has(#resume-print-clone) > :not(#resume-print-clone) {
177
+ display: none !important;
178
+ }
179
+
180
+ /* The clone is a plain wrapper around the engine's real 8.5x11 page frames
181
+ (a direct child of body — no positioning needed). */
182
+ #resume-print-clone {
183
+ color: black !important;
184
+ background: white !important;
185
+ }
186
+
187
+ /* Frames stack with a screen-only gap; remove it so each maps 1:1 to a page. */
188
+ #resume-print-clone > div {
189
+ gap: 0 !important;
190
+ }
191
+
192
+ [data-resume-page] {
193
+ box-shadow: none !important;
194
+ break-after: page;
195
+ break-inside: avoid;
196
+ }
197
+ [data-resume-page]:last-child {
198
+ break-after: auto;
199
+ }
200
+
201
+ @page {
202
+ size: letter;
203
+ margin: 0;
204
+ }
205
+ }