@atelic-action/ui 1.1.0 → 2.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.
- package/README.md +21 -24
- package/dist/vite/artifact-config.js +6 -4
- package/package.json +1 -1
- package/src/artifact/GradeChip.tsx +4 -3
- package/src/artifact/Paragraph.tsx +2 -2
- package/src/artifact/Shot.tsx +6 -4
- package/src/artifact/SignOff.tsx +3 -2
- package/src/artifact/index.ts +17 -7
- package/src/components/DataTable.tsx +25 -18
- package/src/components/IconList.tsx +43 -0
- package/src/components/StackedBar.tsx +1 -1
- package/src/components/index.ts +1 -0
- package/src/styles/artifact.css +48 -2458
- package/src/styles/components.css +46 -1
- package/src/vite/artifact-config.ts +6 -4
- package/src/artifact/Gate.tsx +0 -340
- package/src/artifact/Note.tsx +0 -158
- package/src/artifact/Read.tsx +0 -406
- package/src/artifact/Report.tsx +0 -131
- package/src/artifact/Writeup.tsx +0 -767
package/src/styles/artifact.css
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
/* The artifact documents under src/artifact: the
|
|
2
|
-
the
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
over them whatever its specificity. */
|
|
1
|
+
/* The pieces the artifact documents are built from, under src/artifact: the
|
|
2
|
+
grade chip, the sign off, the shot, and the shell's logo and print rules. The
|
|
3
|
+
composed documents (the writeup, the read, the monthly page, the note,
|
|
4
|
+
and the sealed document stage) and their sheet, with both @page rules,
|
|
5
|
+
live in @atelic-action/artifact (its styles/documents.css), which a site
|
|
6
|
+
imports after this one. This sheet sets no @page. Every rule sits in the
|
|
7
|
+
package's layer like every sheet here, so any rule a site writes outside
|
|
8
|
+
a layer still wins over it whatever its specificity. */
|
|
10
9
|
@layer atelic-ui {
|
|
11
10
|
/* =================================================================
|
|
12
|
-
SHARED: the vocabulary
|
|
13
|
-
|
|
14
|
-
used by more than one
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
SHARED: the vocabulary every document wears, the grade chip
|
|
12
|
+
(GradeChip), the sign off lockup (SignOff), and the shot (Shot). A
|
|
13
|
+
class used by more than one document lives in the base sheet chain
|
|
14
|
+
rather than in a component's stylesheet, so it can never vanish from
|
|
15
|
+
a page that does not import the component that defined it.
|
|
17
16
|
|
|
18
17
|
Tokens only, with one deliberate literal set: the four grade colors.
|
|
19
18
|
================================================================= */
|
|
@@ -36,8 +35,8 @@
|
|
|
36
35
|
min-width: 1.6em;
|
|
37
36
|
text-align: center;
|
|
38
37
|
}
|
|
39
|
-
/* The four grade colors are
|
|
40
|
-
|
|
38
|
+
/* The four grade colors are a deliberate literal set: a grade reads
|
|
39
|
+
green, yellow, orange, red
|
|
41
40
|
everywhere, whatever the brand's palette, so they are not theme tokens.
|
|
42
41
|
The orange sits between the yellow's hue and the red's so the four stay
|
|
43
42
|
apart on paper, and its letter clears AA on its own tint. */
|
|
@@ -117,2465 +116,56 @@
|
|
|
117
116
|
display: none;
|
|
118
117
|
}
|
|
119
118
|
|
|
120
|
-
/*
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
THE SEALED DOCUMENT STAGE: the Gate component (Gate.tsx).
|
|
126
|
-
A dark stage derived from the semantic tokens, so a client's
|
|
127
|
-
theme.css recolors it. The gate card reuses the login
|
|
128
|
-
screen's vocabulary above (eyebrow, headline, lead, form, input,
|
|
129
|
-
error); this section only stages it dark and adds the document
|
|
130
|
-
classes the decrypted HTML is written against.
|
|
131
|
-
================================================================= */
|
|
132
|
-
.atelic-ui .gate-stage {
|
|
133
|
-
--gs-stage: var(--surface-dark);
|
|
134
|
-
--gs-bright: color-mix(in srgb, var(--surface) 96%, white);
|
|
135
|
-
--gs-dim: color-mix(in srgb, var(--surface) 62%, var(--surface-dark));
|
|
136
|
-
--gs-faint: color-mix(in srgb, var(--surface) 40%, var(--surface-dark));
|
|
137
|
-
--gs-panel: color-mix(in srgb, var(--surface-dark) 88%, var(--surface));
|
|
138
|
-
--gs-border: color-mix(in srgb, var(--surface-dark) 72%, var(--surface));
|
|
139
|
-
--gs-hairline: color-mix(in srgb, var(--surface) 10%, transparent);
|
|
140
|
-
|
|
141
|
-
/* The navbar is fixed, so it adds no document height: a stage sized
|
|
142
|
-
100svh minus the nav plus a credit bar shorter than the nav leaves
|
|
143
|
-
the document shorter than the viewport, and the body's light
|
|
144
|
-
background shows beneath the credit bar. The stage therefore owns
|
|
145
|
-
the full viewport and clears the nav itself, painting dark edge to
|
|
146
|
-
edge behind the bar. */
|
|
147
|
-
min-height: 100svh;
|
|
148
|
-
padding-top: var(--nav-height);
|
|
149
|
-
background: var(--gs-stage);
|
|
150
|
-
color: var(--gs-bright);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/* Overscroll and any sub-viewport rounding still expose the page body at
|
|
154
|
-
the edges; a page carrying the stage paints its whole shell dark. */
|
|
155
|
-
.atelic-ui:has(.gate-stage) {
|
|
156
|
-
background: var(--surface-dark);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/* ---- the gate card, staged dark ---- */
|
|
160
|
-
.atelic-ui .gate-hall {
|
|
161
|
-
display: grid;
|
|
162
|
-
place-items: center;
|
|
163
|
-
min-height: calc(100svh - var(--nav-height));
|
|
164
|
-
padding-block: clamp(48px, 9vh, 96px);
|
|
165
|
-
}
|
|
166
|
-
.atelic-ui .gate-card {
|
|
167
|
-
width: 100%;
|
|
168
|
-
max-width: 520px;
|
|
169
|
-
margin-inline: auto;
|
|
170
|
-
padding: clamp(28px, 5vw, 44px);
|
|
171
|
-
border: 1px solid var(--gs-border);
|
|
172
|
-
border-radius: var(--radius-lg);
|
|
173
|
-
background: var(--gs-panel);
|
|
174
|
-
text-align: center;
|
|
175
|
-
}
|
|
176
|
-
.atelic-ui .gate-stage .gate-eyebrow {
|
|
177
|
-
margin: 0 0 12px;
|
|
178
|
-
font-size: 12.5px;
|
|
179
|
-
letter-spacing: 0.02em;
|
|
180
|
-
color: var(--gs-faint);
|
|
181
|
-
}
|
|
182
|
-
.atelic-ui .gate-stage .gate-headline {
|
|
183
|
-
margin: 0 0 12px;
|
|
184
|
-
font-family: var(--font-sans);
|
|
185
|
-
font-weight: 800;
|
|
186
|
-
letter-spacing: -0.015em;
|
|
187
|
-
font-size: clamp(26px, 3.4vw, 34px);
|
|
188
|
-
line-height: 1.12;
|
|
189
|
-
max-width: none;
|
|
190
|
-
color: var(--gs-bright);
|
|
191
|
-
}
|
|
192
|
-
.atelic-ui .gate-stage .gate-lead {
|
|
193
|
-
margin: 0 auto 26px;
|
|
194
|
-
max-width: 42ch;
|
|
195
|
-
font-size: 15px;
|
|
196
|
-
line-height: 1.6;
|
|
197
|
-
color: var(--gs-dim);
|
|
198
|
-
}
|
|
199
|
-
.atelic-ui .gate-stage .gate-input {
|
|
200
|
-
border-color: var(--gs-border);
|
|
201
|
-
background: color-mix(in srgb, var(--surface-dark) 94%, var(--surface));
|
|
202
|
-
color: var(--gs-bright);
|
|
203
|
-
}
|
|
204
|
-
.atelic-ui .gate-stage .gate-input::placeholder {
|
|
205
|
-
color: var(--gs-faint);
|
|
206
|
-
}
|
|
207
|
-
.atelic-ui .gate-stage .gate-input:focus-visible {
|
|
208
|
-
border-color: var(--primary-bright);
|
|
209
|
-
box-shadow: 0 0 0 3px var(--primary-focus-ring);
|
|
210
|
-
}
|
|
211
|
-
.atelic-ui .gate-stage .gate-error {
|
|
212
|
-
margin: 20px auto 0;
|
|
213
|
-
max-width: 46ch;
|
|
214
|
-
font-size: 14.5px;
|
|
215
|
-
line-height: 1.55;
|
|
216
|
-
color: var(--gs-dim);
|
|
217
|
-
background: none;
|
|
218
|
-
border: none;
|
|
219
|
-
padding: 0;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/* ---- the document ----
|
|
223
|
-
Everything below styles HTML the content module authors, so the
|
|
224
|
-
selectors are element level inside .gate-content rather than a class
|
|
225
|
-
per line. A client document writes plain markup and inherits this. */
|
|
226
|
-
.atelic-ui .gate-doc {
|
|
227
|
-
/* The stage itself clears the fixed nav, so the document pads only
|
|
228
|
-
its own breathing room. */
|
|
229
|
-
padding-block: clamp(44px, 8vh, 88px) clamp(64px, 12vh, 132px);
|
|
230
|
-
}
|
|
231
|
-
.atelic-ui .gate-content {
|
|
232
|
-
/* The document column matches the chrome: .wrap and .nav-inner share
|
|
233
|
-
--max-width, so the text aligns with the header bar's edges rather
|
|
234
|
-
than sitting in a narrower centered measure. */
|
|
235
|
-
color: var(--gs-dim);
|
|
236
|
-
font-size: 16.5px;
|
|
237
|
-
line-height: 1.7;
|
|
238
|
-
}
|
|
239
|
-
.atelic-ui .gate-content h1 {
|
|
240
|
-
margin: 0 0 10px;
|
|
241
|
-
font-size: clamp(30px, 4.4vw, 46px);
|
|
242
|
-
line-height: 1.06;
|
|
243
|
-
color: var(--gs-bright);
|
|
244
|
-
text-wrap: balance;
|
|
245
|
-
}
|
|
246
|
-
.atelic-ui .gate-content h2 {
|
|
247
|
-
margin: 52px 0 14px;
|
|
248
|
-
font-size: clamp(21px, 2.6vw, 27px);
|
|
249
|
-
line-height: 1.2;
|
|
250
|
-
color: var(--gs-bright);
|
|
251
|
-
}
|
|
252
|
-
.atelic-ui .gate-content h3 {
|
|
253
|
-
margin: 28px 0 8px;
|
|
254
|
-
font-size: 17px;
|
|
255
|
-
color: var(--gs-bright);
|
|
256
|
-
}
|
|
257
|
-
.atelic-ui .gate-content p {
|
|
258
|
-
margin: 0 0 16px;
|
|
259
|
-
text-wrap: pretty;
|
|
260
|
-
}
|
|
261
|
-
.atelic-ui .gate-content ul {
|
|
262
|
-
margin: 0 0 16px;
|
|
263
|
-
padding-left: 22px;
|
|
264
|
-
display: flex;
|
|
265
|
-
flex-direction: column;
|
|
266
|
-
gap: 8px;
|
|
267
|
-
list-style: disc;
|
|
268
|
-
}
|
|
269
|
-
.atelic-ui .gate-content li {
|
|
270
|
-
display: list-item;
|
|
271
|
-
list-style: disc;
|
|
272
|
-
margin: 0;
|
|
273
|
-
}
|
|
274
|
-
.atelic-ui .gate-content li::marker {
|
|
275
|
-
color: var(--primary-bright);
|
|
276
|
-
}
|
|
277
|
-
.atelic-ui .gate-content strong {
|
|
278
|
-
color: var(--gs-bright);
|
|
279
|
-
font-weight: 600;
|
|
280
|
-
}
|
|
281
|
-
.atelic-ui .gate-content a {
|
|
282
|
-
color: var(--primary-bright);
|
|
283
|
-
text-decoration: none;
|
|
284
|
-
border-bottom: 1px solid currentColor;
|
|
285
|
-
}
|
|
286
|
-
.atelic-ui .gate-content hr {
|
|
287
|
-
margin: 44px 0;
|
|
288
|
-
border: 0;
|
|
289
|
-
border-top: 1px solid var(--gs-hairline);
|
|
290
|
-
}
|
|
291
|
-
.atelic-ui .gate-meta {
|
|
292
|
-
margin: 0 0 34px;
|
|
293
|
-
font-family: var(--font-mono);
|
|
294
|
-
font-size: 12.5px;
|
|
295
|
-
color: var(--gs-faint);
|
|
296
|
-
}
|
|
297
|
-
.atelic-ui .gate-lede {
|
|
298
|
-
font-size: 18px;
|
|
299
|
-
color: var(--gs-bright);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/* Tier cards: the shape of a three option quote. Faded panels on the
|
|
303
|
-
stage, one hairline lifted to mark the recommended option; no filled
|
|
304
|
-
color anywhere, so the CTA button stays the only saturated thing. */
|
|
305
|
-
.atelic-ui .gate-tiers {
|
|
306
|
-
display: grid;
|
|
307
|
-
/* Three explicit columns: auto-fit minted a fourth empty track at
|
|
308
|
-
document width and squeezed the cards into three quarters of the
|
|
309
|
-
row. A proposal's tier row is three builds wide by design. */
|
|
310
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
311
|
-
gap: 16px;
|
|
312
|
-
margin: 24px 0 8px;
|
|
313
|
-
}
|
|
314
|
-
@media (max-width: 860px) {
|
|
315
|
-
.atelic-ui .gate-tiers {
|
|
316
|
-
grid-template-columns: 1fr;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
.atelic-ui .gate-tier {
|
|
119
|
+
/* ---- the shot: the owner's own screen over its caption ----
|
|
120
|
+
It reads the writeup's own two tokens (--op-card, --op-ink-faint), which
|
|
121
|
+
a document maps on its root, and falls back to the theme's when it sits
|
|
122
|
+
outside one. A document sizes it and lays shots out in its own sheet. */
|
|
123
|
+
.atelic-ui .op-shot {
|
|
320
124
|
display: flex;
|
|
321
125
|
flex-direction: column;
|
|
322
126
|
gap: 6px;
|
|
323
|
-
padding: 22px;
|
|
324
|
-
border: 1px solid var(--gs-border);
|
|
325
|
-
border-radius: var(--radius-lg);
|
|
326
|
-
background: var(--gs-panel);
|
|
327
|
-
min-width: 0;
|
|
328
|
-
}
|
|
329
|
-
.atelic-ui .gate-tier.is-picked {
|
|
330
|
-
border-color: color-mix(in srgb, var(--primary-bright) 55%, transparent);
|
|
331
|
-
}
|
|
332
|
-
.atelic-ui .gate-tier-name {
|
|
333
|
-
font-weight: 600;
|
|
334
|
-
font-size: 17px;
|
|
335
|
-
color: var(--gs-bright);
|
|
336
|
-
}
|
|
337
|
-
.atelic-ui .gate-tier-price {
|
|
338
|
-
font-family: var(--font-mono);
|
|
339
|
-
font-size: 21px;
|
|
340
|
-
color: var(--primary-bright);
|
|
341
|
-
}
|
|
342
|
-
.atelic-ui .gate-tier-note {
|
|
343
|
-
font-size: 14px;
|
|
344
|
-
line-height: 1.55;
|
|
345
|
-
color: var(--gs-dim);
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
/* Trade arithmetic on a card: a sum column sitting on the card's left,
|
|
349
|
-
digits right-aligned against each other the way a hand total lines
|
|
350
|
-
up, with any annotation (the credit's label) to the right of its
|
|
351
|
-
figure. Markup:
|
|
352
|
-
|
|
353
|
-
<div class="gate-tier-math">
|
|
354
|
-
<span class="gate-tier-was">$7,400</span>
|
|
355
|
-
<span class="gate-tier-credit">− $3,660</span>
|
|
356
|
-
<span class="gate-tier-mathlabel">install credit</span>
|
|
357
|
-
<span class="gate-tier-price">$3,740</span>
|
|
358
|
-
</div>
|
|
359
|
-
|
|
360
|
-
Amounts take grid column one (right-aligned, shared right edge);
|
|
361
|
-
labels take column two. A bare .gate-tier-price outside the math
|
|
362
|
-
block (the add-on card) keeps its standalone look. */
|
|
363
|
-
.atelic-ui .gate-tier-math {
|
|
364
|
-
display: grid;
|
|
365
|
-
grid-template-columns: max-content auto;
|
|
366
|
-
column-gap: 10px;
|
|
367
|
-
row-gap: 2px;
|
|
368
|
-
align-items: baseline;
|
|
369
|
-
justify-content: start;
|
|
370
|
-
}
|
|
371
|
-
.atelic-ui .gate-tier-math .gate-tier-was,
|
|
372
|
-
.atelic-ui .gate-tier-math .gate-tier-credit,
|
|
373
|
-
.atelic-ui .gate-tier-math .gate-tier-price {
|
|
374
|
-
grid-column: 1;
|
|
375
|
-
text-align: right;
|
|
376
|
-
}
|
|
377
|
-
/* The label never wraps, so a mark inside it (the asterisk that points
|
|
378
|
-
at the footnote under the tiers) stays on the label's line:
|
|
379
|
-
<span class="gate-tier-mathlabel">founding member credit<svg>...</svg></span> */
|
|
380
|
-
.atelic-ui .gate-tier-mathlabel {
|
|
381
|
-
grid-column: 2;
|
|
382
|
-
font-size: 13px;
|
|
383
|
-
color: var(--gs-faint);
|
|
384
|
-
white-space: nowrap;
|
|
385
|
-
}
|
|
386
|
-
.atelic-ui .gate-tier-mathlabel svg {
|
|
387
|
-
display: inline-block;
|
|
388
|
-
width: 11px;
|
|
389
|
-
height: 11px;
|
|
390
|
-
vertical-align: -1px;
|
|
391
|
-
margin-left: 2px;
|
|
392
|
-
color: var(--primary-bright);
|
|
393
|
-
}
|
|
394
|
-
.atelic-ui .gate-tier-was {
|
|
395
|
-
font-family: var(--font-mono);
|
|
396
|
-
font-size: 15px;
|
|
397
|
-
color: var(--gs-faint);
|
|
398
|
-
text-decoration: line-through;
|
|
399
|
-
}
|
|
400
|
-
.atelic-ui .gate-tier-credit {
|
|
401
|
-
font-family: var(--font-mono);
|
|
402
|
-
font-size: 14px;
|
|
403
|
-
color: var(--gs-dim);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
/* A full width card in the tier grid, for an add-on (a monthly service
|
|
407
|
-
under one-time builds) that applies across every column. */
|
|
408
|
-
.atelic-ui .gate-tiers .gate-tier.is-addon {
|
|
409
|
-
grid-column: 1 / -1;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
/* The add-ons row: two monthly cards (Operate, Operate with Paid) side
|
|
413
|
-
by side under the builds, instead of each full width. The row spans
|
|
414
|
-
the tier grid; the cards inside it sit in its own two columns, and
|
|
415
|
-
stack with the tiers on a phone.
|
|
416
|
-
<div class="gate-addons">
|
|
417
|
-
<div class="gate-tier is-addon">...</div>
|
|
418
|
-
<div class="gate-tier is-addon is-picked">...</div>
|
|
419
|
-
</div> */
|
|
420
|
-
.atelic-ui .gate-tiers .gate-addons {
|
|
421
|
-
grid-column: 1 / -1;
|
|
422
|
-
display: grid;
|
|
423
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
424
|
-
gap: 16px;
|
|
425
|
-
}
|
|
426
|
-
.atelic-ui .gate-tiers .gate-addons .gate-tier.is-addon {
|
|
427
|
-
grid-column: auto;
|
|
428
|
-
}
|
|
429
|
-
@media (max-width: 860px) {
|
|
430
|
-
.atelic-ui .gate-tiers .gate-addons {
|
|
431
|
-
grid-template-columns: 1fr;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/* The footnote under the tiers: a credit's terms in one line, led by
|
|
436
|
-
the same mark the card's label carries.
|
|
437
|
-
<p class="gate-footnote"><svg>...</svg><span>...</span></p> */
|
|
438
|
-
.atelic-ui .gate-content .gate-footnote {
|
|
439
|
-
display: flex;
|
|
440
|
-
gap: 8px;
|
|
441
|
-
align-items: flex-start;
|
|
442
|
-
margin: 14px 0 0;
|
|
443
|
-
font-size: 14px;
|
|
444
|
-
line-height: 1.5;
|
|
445
|
-
color: var(--gs-dim);
|
|
446
|
-
}
|
|
447
|
-
.atelic-ui .gate-content .gate-footnote svg {
|
|
448
|
-
width: 14px;
|
|
449
|
-
height: 14px;
|
|
450
|
-
flex: 0 0 auto;
|
|
451
|
-
margin-top: 3px;
|
|
452
|
-
color: var(--primary-bright);
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/* The icon list: the standard sent artifact list form, each line led
|
|
456
|
-
by a small lucide icon that says what the line means. The sealed
|
|
457
|
-
content inlines the SVGs. */
|
|
458
|
-
.atelic-ui .gate-content ul.icon-list {
|
|
459
|
-
list-style: none;
|
|
460
|
-
margin: 0 0 16px;
|
|
461
|
-
padding: 0;
|
|
462
|
-
display: flex;
|
|
463
|
-
flex-direction: column;
|
|
464
|
-
gap: 12px;
|
|
465
|
-
}
|
|
466
|
-
.atelic-ui .gate-content ul.icon-list li {
|
|
467
|
-
display: flex;
|
|
468
|
-
align-items: flex-start;
|
|
469
|
-
gap: 12px;
|
|
470
|
-
margin: 0;
|
|
471
|
-
list-style: none;
|
|
472
|
-
}
|
|
473
|
-
.atelic-ui .gate-content ul.icon-list svg {
|
|
474
|
-
width: 18px;
|
|
475
|
-
height: 18px;
|
|
476
|
-
flex: 0 0 auto;
|
|
477
|
-
margin-top: 3px;
|
|
478
|
-
color: var(--primary-bright);
|
|
479
|
-
}
|
|
480
|
-
/* The icon list inside a tier card, sized for the card: a tier lists
|
|
481
|
-
what it buys with icons that mean the thing, never checks. These tie
|
|
482
|
-
the document list's selectors, so they sit after them. */
|
|
483
|
-
.atelic-ui .gate-tier ul.icon-list {
|
|
484
|
-
margin: 6px 0 0;
|
|
485
|
-
gap: 8px;
|
|
486
|
-
font-size: 14px;
|
|
487
|
-
line-height: 1.5;
|
|
488
|
-
color: var(--gs-dim);
|
|
489
|
-
}
|
|
490
|
-
.atelic-ui .gate-tier ul.icon-list svg {
|
|
491
|
-
width: 16px;
|
|
492
|
-
height: 16px;
|
|
493
|
-
margin-top: 2px;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
/* Numbered flow: the ordered list for a step-by-step close. */
|
|
497
|
-
.atelic-ui .gate-content ol {
|
|
498
|
-
margin: 0 0 16px;
|
|
499
|
-
padding-left: 24px;
|
|
500
|
-
display: flex;
|
|
501
|
-
flex-direction: column;
|
|
502
|
-
gap: 10px;
|
|
503
|
-
}
|
|
504
|
-
.atelic-ui .gate-content ol li {
|
|
505
|
-
display: list-item;
|
|
506
|
-
list-style: decimal;
|
|
507
127
|
margin: 0;
|
|
508
128
|
}
|
|
509
|
-
.atelic-ui .
|
|
510
|
-
|
|
511
|
-
font-weight: 700;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
/* Icon bullets: a checklist variant of the document list, worn by any
|
|
515
|
-
ul.gate-checks in the sealed content or inside a tier card. */
|
|
516
|
-
.atelic-ui .gate-content ul.gate-checks {
|
|
517
|
-
list-style: none;
|
|
518
|
-
padding-left: 0;
|
|
519
|
-
}
|
|
520
|
-
.atelic-ui .gate-content .gate-checks li {
|
|
521
|
-
position: relative;
|
|
522
|
-
list-style: none;
|
|
523
|
-
padding-left: 26px;
|
|
524
|
-
}
|
|
525
|
-
.atelic-ui .gate-content .gate-checks li::before {
|
|
526
|
-
/* The lucide check, masked so it takes the accent color. A glyph
|
|
527
|
-
character would trip the icons-over-emojis test; an SVG matches
|
|
528
|
-
the icon set the rest of the site draws from. */
|
|
529
|
-
content: "";
|
|
530
|
-
position: absolute;
|
|
531
|
-
left: 0;
|
|
532
|
-
top: 0.28em;
|
|
533
|
-
width: 14px;
|
|
534
|
-
height: 14px;
|
|
535
|
-
background-color: var(--primary-bright);
|
|
536
|
-
-webkit-mask:
|
|
537
|
-
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")
|
|
538
|
-
center / contain no-repeat;
|
|
539
|
-
mask:
|
|
540
|
-
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")
|
|
541
|
-
center / contain no-repeat;
|
|
542
|
-
}
|
|
543
|
-
.atelic-ui .gate-tier ul.gate-checks {
|
|
544
|
-
margin: 6px 0 0;
|
|
545
|
-
display: grid;
|
|
546
|
-
gap: 8px;
|
|
547
|
-
font-size: 14px;
|
|
548
|
-
line-height: 1.5;
|
|
549
|
-
color: var(--gs-dim);
|
|
550
|
-
}
|
|
551
|
-
.atelic-ui .gate-tier .gate-checks li {
|
|
552
|
-
padding-left: 22px;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
/* ---- the close: sign off, then the person lockup ---- */
|
|
556
|
-
.atelic-ui .gate-sign {
|
|
557
|
-
margin: 44px 0 18px;
|
|
558
|
-
/* The pitch surface sign off is the script face (voice.md rule 9),
|
|
559
|
-
the same face the writeup and the monthly page close on, centered
|
|
560
|
-
on the dark stage. */
|
|
561
|
-
font-family: var(--font-script);
|
|
562
|
-
font-size: clamp(38px, 5.5vw, 56px);
|
|
563
|
-
color: var(--secondary-soft);
|
|
564
|
-
text-align: center;
|
|
565
|
-
}
|
|
566
|
-
.atelic-ui .gate-person {
|
|
567
|
-
display: flex;
|
|
568
|
-
align-items: center;
|
|
569
|
-
justify-content: center;
|
|
570
|
-
gap: 18px;
|
|
571
|
-
text-align: left;
|
|
572
|
-
}
|
|
573
|
-
.atelic-ui .gate-person img {
|
|
574
|
-
width: 88px;
|
|
575
|
-
height: 88px;
|
|
576
|
-
border-radius: 50%;
|
|
577
|
-
object-fit: cover;
|
|
578
|
-
display: block;
|
|
579
|
-
flex: none;
|
|
580
|
-
}
|
|
581
|
-
.atelic-ui .gate-person-name {
|
|
582
|
-
display: block;
|
|
583
|
-
font-weight: 600;
|
|
584
|
-
font-size: 17px;
|
|
585
|
-
color: var(--gs-bright);
|
|
586
|
-
}
|
|
587
|
-
.atelic-ui .gate-person-role {
|
|
129
|
+
.atelic-ui .op-shot a,
|
|
130
|
+
.atelic-ui .op-shot-frame {
|
|
588
131
|
display: block;
|
|
589
|
-
margin-top: 4px;
|
|
590
|
-
font-size: 14px;
|
|
591
|
-
color: var(--gs-dim);
|
|
592
|
-
}
|
|
593
|
-
.atelic-ui .gate-person-role a {
|
|
594
|
-
color: inherit;
|
|
595
|
-
border-bottom: 1px solid currentColor;
|
|
596
|
-
}
|
|
597
|
-
.atelic-ui .gate-person-mail {
|
|
598
|
-
display: inline-flex;
|
|
599
|
-
align-items: center;
|
|
600
|
-
gap: 7px;
|
|
601
|
-
margin-top: 8px;
|
|
602
|
-
font-size: 14px;
|
|
603
|
-
font-weight: 500;
|
|
604
|
-
letter-spacing: 0.02em;
|
|
605
|
-
color: var(--primary-bright);
|
|
606
|
-
border-bottom: 1px solid currentColor;
|
|
607
|
-
padding-bottom: 1px;
|
|
608
|
-
}
|
|
609
|
-
.atelic-ui .gate-person-mail svg {
|
|
610
|
-
width: 15px;
|
|
611
|
-
height: 15px;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
/* =================================================================
|
|
615
|
-
THE MONTHLY PAGE: one letter sheet and its hosted twin. Three
|
|
616
|
-
renderings of one DOM, the same as the writeup's:
|
|
617
|
-
|
|
618
|
-
- Screen (wide): the sheet at letter width on the surface, under the
|
|
619
|
-
artifact shell's dark header.
|
|
620
|
-
- Column (under 900px): the same sheet at phone type sizes; the leads
|
|
621
|
-
run two across and each grade row folds into a labeled block.
|
|
622
|
-
- Print: exactly one letter sheet, zero page margin, the header and
|
|
623
|
-
the credit band dropped. Content that misses the sheet is clipped,
|
|
624
|
-
never reflowed, so a print of one sheet is the check.
|
|
625
|
-
|
|
626
|
-
Tokens only (theme.css), except the printed sheet's white. The grade
|
|
627
|
-
chip and the sign off are the shared classes at the head of this sheet.
|
|
628
|
-
================================================================= */
|
|
629
|
-
.atelic-ui .rp {
|
|
630
|
-
--rp-ink: var(--ink);
|
|
631
|
-
--rp-ink-soft: var(--ink-soft);
|
|
632
|
-
--rp-ink-faint: var(--neutral-500);
|
|
633
|
-
--rp-rule: var(--hairline-strong);
|
|
634
|
-
--rp-accent: var(--primary);
|
|
635
|
-
--rp-paper: #ffffff;
|
|
636
|
-
font-family: var(--font-sans);
|
|
637
|
-
color: var(--rp-ink);
|
|
638
|
-
background: var(--surface);
|
|
639
|
-
padding: calc(var(--nav-height) + 32px) 24px 48px;
|
|
640
|
-
}
|
|
641
|
-
.atelic-ui .rp a {
|
|
642
|
-
color: inherit;
|
|
643
|
-
text-decoration: none;
|
|
644
|
-
}
|
|
645
|
-
.atelic-ui .rp a:hover {
|
|
646
|
-
color: var(--rp-accent);
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
/* ---- the sheet ---- */
|
|
650
|
-
.atelic-ui .rp-sheet {
|
|
651
|
-
width: 8.5in;
|
|
652
|
-
max-width: 100%;
|
|
653
|
-
margin: 0 auto;
|
|
654
|
-
padding: 0.5in 0.65in 0.45in;
|
|
655
|
-
display: flex;
|
|
656
|
-
flex-direction: column;
|
|
657
|
-
background: var(--rp-paper);
|
|
658
|
-
border-radius: 7px;
|
|
659
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.18);
|
|
660
|
-
print-color-adjust: exact;
|
|
661
|
-
-webkit-print-color-adjust: exact;
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
/* ---- the title and the period ---- */
|
|
665
|
-
.atelic-ui .rp-period {
|
|
666
|
-
font-family: var(--font-mono);
|
|
667
|
-
font-size: 8pt;
|
|
668
|
-
letter-spacing: 0.12em;
|
|
669
|
-
text-transform: uppercase;
|
|
670
|
-
color: var(--rp-accent);
|
|
671
|
-
}
|
|
672
|
-
.atelic-ui .rp h1 {
|
|
673
|
-
font-family: var(--font-sans);
|
|
674
|
-
font-size: 25pt;
|
|
675
|
-
font-weight: 600;
|
|
676
|
-
letter-spacing: -0.03em;
|
|
677
|
-
line-height: 1.08;
|
|
678
|
-
margin: 6pt 0 14pt;
|
|
679
|
-
text-wrap: balance;
|
|
680
|
-
color: var(--rp-ink);
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
/* ---- the leads: four questions, each a figure and one sentence ---- */
|
|
684
|
-
.atelic-ui .rp-leads {
|
|
685
|
-
display: grid;
|
|
686
|
-
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
687
|
-
gap: 0 16pt;
|
|
688
|
-
padding: 10pt 0 14pt;
|
|
689
|
-
border-top: 1.5px solid var(--rp-ink);
|
|
690
|
-
border-bottom: 1px solid var(--rp-rule);
|
|
691
|
-
}
|
|
692
|
-
.atelic-ui .rp-lead {
|
|
693
|
-
display: flex;
|
|
694
|
-
flex-direction: column;
|
|
695
|
-
gap: 3pt;
|
|
696
|
-
min-width: 0;
|
|
697
|
-
}
|
|
698
|
-
.atelic-ui .rp-q {
|
|
699
|
-
margin: 0;
|
|
700
|
-
font-family: var(--font-mono);
|
|
701
|
-
font-size: 7pt;
|
|
702
|
-
font-weight: 500;
|
|
703
|
-
letter-spacing: 0.1em;
|
|
704
|
-
line-height: 1.4;
|
|
705
|
-
text-transform: uppercase;
|
|
706
|
-
color: var(--rp-accent);
|
|
707
|
-
}
|
|
708
|
-
.atelic-ui .rp-figure {
|
|
709
|
-
font-size: 18pt;
|
|
710
|
-
font-weight: 600;
|
|
711
|
-
letter-spacing: -0.02em;
|
|
712
|
-
line-height: 1.1;
|
|
713
|
-
color: var(--rp-ink);
|
|
714
|
-
}
|
|
715
|
-
.atelic-ui .rp-lead p {
|
|
716
|
-
margin: 0;
|
|
717
|
-
font-size: 8.4pt;
|
|
718
|
-
line-height: 1.4;
|
|
719
|
-
color: var(--rp-ink-soft);
|
|
720
|
-
text-wrap: pretty;
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
/* ---- the seven grades: now, last month, baseline, what moved ---- */
|
|
724
|
-
.atelic-ui .rp-grades {
|
|
725
132
|
width: 100%;
|
|
726
|
-
border-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
}
|
|
731
|
-
.atelic-ui .rp-grades th {
|
|
732
|
-
text-align: left;
|
|
733
|
-
padding: 0 6pt 4pt 0;
|
|
734
|
-
border-bottom: 1.5px solid var(--rp-ink);
|
|
735
|
-
font-family: var(--font-mono);
|
|
736
|
-
font-size: 6.5pt;
|
|
737
|
-
font-weight: 500;
|
|
738
|
-
letter-spacing: 0.1em;
|
|
739
|
-
text-transform: uppercase;
|
|
740
|
-
white-space: nowrap;
|
|
741
|
-
color: var(--rp-ink-faint);
|
|
742
|
-
}
|
|
743
|
-
.atelic-ui .rp-grades td {
|
|
744
|
-
padding: 4pt 6pt 4pt 0;
|
|
745
|
-
border-bottom: 1px solid var(--rp-rule);
|
|
746
|
-
vertical-align: top;
|
|
747
|
-
color: var(--rp-ink);
|
|
748
|
-
}
|
|
749
|
-
.atelic-ui .rp-grades tr.is-tier-start:not(:first-child) td {
|
|
750
|
-
border-top: 1px solid var(--rp-ink);
|
|
751
|
-
}
|
|
752
|
-
.atelic-ui .rp-tier {
|
|
753
|
-
width: 0.85in;
|
|
754
|
-
font-family: var(--font-mono);
|
|
755
|
-
font-size: 7pt;
|
|
756
|
-
letter-spacing: 0.1em;
|
|
757
|
-
text-transform: uppercase;
|
|
758
|
-
white-space: nowrap;
|
|
759
|
-
}
|
|
760
|
-
.atelic-ui .rp-section {
|
|
761
|
-
width: 1.9in;
|
|
762
|
-
font-weight: 600;
|
|
763
|
-
white-space: nowrap;
|
|
764
|
-
}
|
|
765
|
-
.atelic-ui .rp-now,
|
|
766
|
-
.atelic-ui .rp-earlier {
|
|
767
|
-
width: 0.65in;
|
|
768
|
-
white-space: nowrap;
|
|
133
|
+
border-radius: var(--radius-sm);
|
|
134
|
+
overflow: hidden;
|
|
135
|
+
border: 1px solid var(--neutral-200);
|
|
136
|
+
background: var(--op-card, var(--card));
|
|
769
137
|
}
|
|
770
|
-
.atelic-ui .
|
|
771
|
-
|
|
138
|
+
.atelic-ui .op-shot a {
|
|
139
|
+
cursor: zoom-in;
|
|
772
140
|
}
|
|
773
|
-
/* The
|
|
774
|
-
.atelic-ui .
|
|
775
|
-
|
|
141
|
+
/* The expand badge on a linked crop: off here, the note turns it on. */
|
|
142
|
+
.atelic-ui .op-shot-open {
|
|
143
|
+
display: none;
|
|
776
144
|
}
|
|
777
|
-
.atelic-ui .
|
|
778
|
-
|
|
779
|
-
|
|
145
|
+
.atelic-ui .op-shot img {
|
|
146
|
+
width: 100%;
|
|
147
|
+
height: auto;
|
|
148
|
+
display: block;
|
|
780
149
|
}
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
padding-top: 10pt;
|
|
786
|
-
border-top: 1px solid var(--rp-rule);
|
|
787
|
-
font-size: 8pt;
|
|
788
|
-
line-height: 1.6;
|
|
789
|
-
color: var(--rp-ink-faint);
|
|
150
|
+
.atelic-ui .op-shot figcaption {
|
|
151
|
+
font-size: 12.5px;
|
|
152
|
+
line-height: 1.45;
|
|
153
|
+
color: var(--op-ink-faint, var(--neutral-500));
|
|
790
154
|
}
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
.atelic-ui .rp {
|
|
795
|
-
padding: calc(var(--nav-height) + 8px) 0 0;
|
|
796
|
-
}
|
|
797
|
-
.atelic-ui .rp-sheet {
|
|
798
|
-
padding: 22px 18px 24px;
|
|
799
|
-
border-radius: 0;
|
|
800
|
-
box-shadow: none;
|
|
801
|
-
}
|
|
802
|
-
.atelic-ui .rp-period {
|
|
803
|
-
font-size: 11px;
|
|
804
|
-
}
|
|
805
|
-
.atelic-ui .rp h1 {
|
|
806
|
-
font-size: 30px;
|
|
807
|
-
margin: 8px 0 16px;
|
|
808
|
-
}
|
|
809
|
-
.atelic-ui .rp-leads {
|
|
810
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
811
|
-
gap: 18px 16px;
|
|
812
|
-
padding: 16px 0 18px;
|
|
813
|
-
}
|
|
814
|
-
.atelic-ui .rp-q {
|
|
815
|
-
font-size: 11px;
|
|
816
|
-
}
|
|
817
|
-
.atelic-ui .rp-figure {
|
|
818
|
-
font-size: 24px;
|
|
819
|
-
}
|
|
820
|
-
.atelic-ui .rp-lead p {
|
|
821
|
-
font-size: 14px;
|
|
822
|
-
line-height: 1.45;
|
|
823
|
-
}
|
|
824
|
-
.atelic-ui .rp-grades {
|
|
825
|
-
font-size: 14px;
|
|
826
|
-
}
|
|
827
|
-
.atelic-ui .rp-grades thead {
|
|
828
|
-
position: absolute;
|
|
829
|
-
width: 1px;
|
|
830
|
-
height: 1px;
|
|
831
|
-
overflow: hidden;
|
|
832
|
-
clip: rect(0, 0, 0, 0);
|
|
833
|
-
white-space: nowrap;
|
|
834
|
-
}
|
|
835
|
-
.atelic-ui .rp-grades tr {
|
|
836
|
-
display: flex;
|
|
837
|
-
flex-wrap: wrap;
|
|
838
|
-
align-items: baseline;
|
|
839
|
-
gap: 6px 14px;
|
|
840
|
-
padding: 10px 0;
|
|
841
|
-
border-bottom: 1px solid var(--rp-rule);
|
|
842
|
-
}
|
|
843
|
-
.atelic-ui .rp-grades tr.is-tier-start:not(:first-child) {
|
|
844
|
-
border-top: 1px solid var(--rp-ink);
|
|
845
|
-
}
|
|
846
|
-
.atelic-ui .rp-grades td {
|
|
847
|
-
display: block;
|
|
848
|
-
width: auto;
|
|
849
|
-
padding: 0;
|
|
850
|
-
border: none;
|
|
851
|
-
}
|
|
852
|
-
.atelic-ui .rp-grades tr.is-tier-start:not(:first-child) td {
|
|
853
|
-
border: none;
|
|
854
|
-
}
|
|
855
|
-
/* Each row folds to the tier on its own line (first row of a tier
|
|
856
|
-
only), the section, the three letters, then what moved. */
|
|
857
|
-
.atelic-ui .rp-grades .rp-tier,
|
|
858
|
-
.atelic-ui .rp-grades .rp-section,
|
|
859
|
-
.atelic-ui .rp-grades .rp-moved {
|
|
860
|
-
width: 100%;
|
|
861
|
-
}
|
|
862
|
-
.atelic-ui .rp-tier {
|
|
863
|
-
font-size: 10px;
|
|
864
|
-
}
|
|
865
|
-
.atelic-ui .rp-tier:empty {
|
|
866
|
-
display: none;
|
|
867
|
-
}
|
|
868
|
-
.atelic-ui .rp-section {
|
|
869
|
-
white-space: normal;
|
|
870
|
-
}
|
|
871
|
-
.atelic-ui .rp-now::before,
|
|
872
|
-
.atelic-ui .rp-earlier::before {
|
|
873
|
-
content: attr(data-label);
|
|
874
|
-
margin-right: 6px;
|
|
875
|
-
font-family: var(--font-mono);
|
|
876
|
-
font-size: 10px;
|
|
877
|
-
letter-spacing: 0.08em;
|
|
878
|
-
text-transform: uppercase;
|
|
879
|
-
color: var(--rp-ink-faint);
|
|
880
|
-
}
|
|
881
|
-
.atelic-ui .rp-earlier:empty {
|
|
882
|
-
display: none;
|
|
883
|
-
}
|
|
884
|
-
.atelic-ui .rp-close {
|
|
885
|
-
padding-top: 16px;
|
|
886
|
-
font-size: 13px;
|
|
155
|
+
@media print {
|
|
156
|
+
.atelic-ui .op-shot a {
|
|
157
|
+
cursor: auto;
|
|
887
158
|
}
|
|
888
159
|
}
|
|
889
160
|
|
|
890
|
-
/* ---- print:
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
margin: 0;
|
|
894
|
-
}
|
|
161
|
+
/* ---- print: the shell's chrome steps aside on every artifact page ----
|
|
162
|
+
ArtifactShell's header, credit band, and skip link belong to the screen;
|
|
163
|
+
a printed document is the page alone. */
|
|
895
164
|
@media print {
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
padding: 0;
|
|
900
|
-
background: none;
|
|
901
|
-
}
|
|
902
|
-
.atelic-ui:has(.rp) .nav,
|
|
903
|
-
.atelic-ui:has(.rp) .skip-link,
|
|
904
|
-
.atelic-ui:has(.rp) .credit-bar {
|
|
165
|
+
.atelic-ui .nav,
|
|
166
|
+
.atelic-ui .credit-bar,
|
|
167
|
+
.atelic-ui .skip-link {
|
|
905
168
|
display: none;
|
|
906
169
|
}
|
|
907
|
-
.atelic-ui .rp {
|
|
908
|
-
padding: 0;
|
|
909
|
-
background: none;
|
|
910
|
-
}
|
|
911
|
-
.atelic-ui .rp-sheet {
|
|
912
|
-
width: 8.5in;
|
|
913
|
-
height: 11in;
|
|
914
|
-
max-width: none;
|
|
915
|
-
margin: 0;
|
|
916
|
-
overflow: hidden;
|
|
917
|
-
border-radius: 0;
|
|
918
|
-
box-shadow: none;
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
/* =================================================================
|
|
923
|
-
THE WRITEUP: a web page first, and the printed copy from the same
|
|
924
|
-
page.
|
|
925
|
-
|
|
926
|
-
- Phone first: the base rules are the phone's. Each section is a card
|
|
927
|
-
of small blocks in one column; a table's rows stack, each fact
|
|
928
|
-
wearing its column's label, so nothing scrolls sideways.
|
|
929
|
-
- Wide (721px and up): the same cards with room: the overview on one
|
|
930
|
-
line a section, real table columns, the owner's screen beside the
|
|
931
|
-
findings.
|
|
932
|
-
- Print: the chrome steps aside, the lockup and the pointer to the
|
|
933
|
-
hosted page appear, the type comes down, and the cards flow across
|
|
934
|
-
letter pages. Nothing is clipped and no block splits across pages.
|
|
935
|
-
|
|
936
|
-
Tokens only (theme.css). The blocks inside a section (the checklist,
|
|
937
|
-
the sortable table, the charts, the stat row, the callout, the
|
|
938
|
-
disclosure) and their tones are styles/components.css's; this sheet sets
|
|
939
|
-
the document around them and their sizes here.
|
|
940
|
-
================================================================= */
|
|
941
|
-
.atelic-ui .op {
|
|
942
|
-
--op-ink: var(--ink);
|
|
943
|
-
--op-ink-soft: var(--ink-soft);
|
|
944
|
-
--op-ink-faint: var(--neutral-500);
|
|
945
|
-
--op-rule: var(--neutral-100);
|
|
946
|
-
--op-accent: var(--primary);
|
|
947
|
-
--op-card: var(--card);
|
|
948
|
-
font-family: var(--font-sans);
|
|
949
|
-
color: var(--op-ink);
|
|
950
|
-
background: var(--surface);
|
|
951
|
-
min-height: 100vh;
|
|
952
|
-
}
|
|
953
|
-
.atelic-ui .op a {
|
|
954
|
-
color: inherit;
|
|
955
|
-
text-decoration: none;
|
|
956
|
-
}
|
|
957
|
-
.atelic-ui .op-doc {
|
|
958
|
-
max-width: 920px;
|
|
959
|
-
margin: 0 auto;
|
|
960
|
-
padding: calc(var(--nav-height) + 22px) 16px 48px;
|
|
961
|
-
font-size: 16px;
|
|
962
|
-
line-height: 1.5;
|
|
963
|
-
print-color-adjust: exact;
|
|
964
|
-
-webkit-print-color-adjust: exact;
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
/* ---- the head: who it is for, what it is ---- */
|
|
968
|
-
.atelic-ui .op-top {
|
|
969
|
-
display: none;
|
|
970
|
-
}
|
|
971
|
-
.atelic-ui .op-meta {
|
|
972
|
-
margin: 0 0 10px;
|
|
973
|
-
font-family: var(--font-mono);
|
|
974
|
-
font-size: 12.5px;
|
|
975
|
-
letter-spacing: 0.04em;
|
|
976
|
-
color: var(--op-ink-faint);
|
|
977
|
-
}
|
|
978
|
-
.atelic-ui .op-meta b {
|
|
979
|
-
font-weight: 500;
|
|
980
|
-
color: var(--op-ink-soft);
|
|
981
|
-
}
|
|
982
|
-
/* On a phone the date takes its own line; wide, it follows a middle dot. */
|
|
983
|
-
.atelic-ui .op-meta-sep {
|
|
984
|
-
display: none;
|
|
985
|
-
}
|
|
986
|
-
.atelic-ui .op-meta-date {
|
|
987
|
-
display: block;
|
|
988
|
-
}
|
|
989
|
-
.atelic-ui .op h1 {
|
|
990
|
-
font-size: clamp(32px, 5vw, 44px);
|
|
991
|
-
font-weight: 650;
|
|
992
|
-
letter-spacing: -0.03em;
|
|
993
|
-
line-height: 1.08;
|
|
994
|
-
margin: 0;
|
|
995
|
-
text-wrap: balance;
|
|
996
|
-
color: var(--op-ink);
|
|
997
|
-
}
|
|
998
|
-
.atelic-ui .op-intro {
|
|
999
|
-
margin: 14px 0 0;
|
|
1000
|
-
max-width: 62ch;
|
|
1001
|
-
font-size: 16.5px;
|
|
1002
|
-
line-height: 1.5;
|
|
1003
|
-
color: var(--op-ink-soft);
|
|
1004
|
-
text-wrap: pretty;
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
/* ---- the grade chip, at web sizes ---- */
|
|
1008
|
-
.atelic-ui .op .op-grade {
|
|
1009
|
-
display: inline-grid;
|
|
1010
|
-
place-items: center;
|
|
1011
|
-
margin: 0;
|
|
1012
|
-
padding: 0;
|
|
1013
|
-
width: 26px;
|
|
1014
|
-
height: 26px;
|
|
1015
|
-
border-radius: 8px;
|
|
1016
|
-
font-family: var(--font-sans);
|
|
1017
|
-
font-size: 14px;
|
|
1018
|
-
font-weight: 700;
|
|
1019
|
-
letter-spacing: 0;
|
|
1020
|
-
line-height: 1;
|
|
1021
|
-
vertical-align: middle;
|
|
1022
|
-
flex: none;
|
|
1023
|
-
}
|
|
1024
|
-
|
|
1025
|
-
/* ---- the overview: the key, then every section under its tier, each a
|
|
1026
|
-
grade, a name that links to the section, and one plain read ---- */
|
|
1027
|
-
.atelic-ui .op-ov {
|
|
1028
|
-
margin-top: 22px;
|
|
1029
|
-
scroll-margin-top: calc(var(--nav-height) + 16px);
|
|
1030
|
-
}
|
|
1031
|
-
.atelic-ui .op-ov-head {
|
|
1032
|
-
display: flex;
|
|
1033
|
-
flex-wrap: wrap;
|
|
1034
|
-
align-items: center;
|
|
1035
|
-
justify-content: space-between;
|
|
1036
|
-
gap: 8px 20px;
|
|
1037
|
-
margin-bottom: 10px;
|
|
1038
|
-
}
|
|
1039
|
-
.atelic-ui .op-ov-title {
|
|
1040
|
-
font-size: 13px;
|
|
1041
|
-
font-family: var(--font-mono);
|
|
1042
|
-
font-weight: 500;
|
|
1043
|
-
letter-spacing: 0.1em;
|
|
1044
|
-
text-transform: uppercase;
|
|
1045
|
-
color: var(--op-ink-faint);
|
|
1046
|
-
margin: 0;
|
|
1047
|
-
}
|
|
1048
|
-
.atelic-ui .op-legend {
|
|
1049
|
-
list-style: none;
|
|
1050
|
-
margin: 0;
|
|
1051
|
-
padding: 0;
|
|
1052
|
-
display: flex;
|
|
1053
|
-
flex-wrap: wrap;
|
|
1054
|
-
gap: 6px 16px;
|
|
1055
|
-
font-size: 13.5px;
|
|
1056
|
-
color: var(--op-ink-soft);
|
|
1057
|
-
}
|
|
1058
|
-
.atelic-ui .op-legend li {
|
|
1059
|
-
display: inline-flex;
|
|
1060
|
-
align-items: center;
|
|
1061
|
-
gap: 7px;
|
|
1062
|
-
}
|
|
1063
|
-
.atelic-ui .op-legend .op-grade {
|
|
1064
|
-
width: 22px;
|
|
1065
|
-
height: 22px;
|
|
1066
|
-
border-radius: 6px;
|
|
1067
|
-
font-size: 12px;
|
|
1068
|
-
}
|
|
1069
|
-
.atelic-ui .op-ov-card {
|
|
1070
|
-
background: var(--op-card);
|
|
1071
|
-
border: 1px solid var(--op-rule);
|
|
1072
|
-
border-radius: var(--radius-md);
|
|
1073
|
-
box-shadow: var(--shadow-sm);
|
|
1074
|
-
overflow: hidden;
|
|
1075
|
-
}
|
|
1076
|
-
.atelic-ui .op-ov-tier-label {
|
|
1077
|
-
padding: 7px 16px;
|
|
1078
|
-
background: var(--surface-alt);
|
|
1079
|
-
font-family: var(--font-mono);
|
|
1080
|
-
font-size: 11.5px;
|
|
1081
|
-
letter-spacing: 0.1em;
|
|
1082
|
-
text-transform: uppercase;
|
|
1083
|
-
color: var(--op-ink-soft);
|
|
1084
|
-
}
|
|
1085
|
-
.atelic-ui .op-ov-tier ul {
|
|
1086
|
-
list-style: none;
|
|
1087
|
-
margin: 0;
|
|
1088
|
-
padding: 0;
|
|
1089
|
-
}
|
|
1090
|
-
.atelic-ui .op-ov-row {
|
|
1091
|
-
position: relative;
|
|
1092
|
-
display: grid;
|
|
1093
|
-
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
1094
|
-
column-gap: 12px;
|
|
1095
|
-
row-gap: 2px;
|
|
1096
|
-
align-items: start;
|
|
1097
|
-
padding: 12px 12px 12px 16px;
|
|
1098
|
-
border-top: 1px solid var(--op-rule);
|
|
1099
|
-
}
|
|
1100
|
-
.atelic-ui .op-ov-row:hover {
|
|
1101
|
-
background: var(--surface);
|
|
1102
|
-
}
|
|
1103
|
-
.atelic-ui .op-ov-grade {
|
|
1104
|
-
grid-row: 1 / span 2;
|
|
1105
|
-
display: inline-flex;
|
|
1106
|
-
align-items: center;
|
|
1107
|
-
gap: 6px;
|
|
1108
|
-
}
|
|
1109
|
-
.atelic-ui .op-ov-grade .op-grade {
|
|
1110
|
-
width: 30px;
|
|
1111
|
-
height: 30px;
|
|
1112
|
-
border-radius: 9px;
|
|
1113
|
-
font-size: 15px;
|
|
1114
|
-
}
|
|
1115
|
-
.atelic-ui .op-ov-before .op-grade {
|
|
1116
|
-
opacity: 0.45;
|
|
1117
|
-
}
|
|
1118
|
-
.atelic-ui .op-ov-name {
|
|
1119
|
-
font-size: 16px;
|
|
1120
|
-
font-weight: 650;
|
|
1121
|
-
letter-spacing: -0.01em;
|
|
1122
|
-
line-height: 1.35;
|
|
1123
|
-
padding-top: 3px;
|
|
1124
|
-
}
|
|
1125
|
-
/* The name is the link, and it covers the row; a link inside the read
|
|
1126
|
-
sits above it. */
|
|
1127
|
-
.atelic-ui .op-ov-name a::after {
|
|
1128
|
-
content: "";
|
|
1129
|
-
position: absolute;
|
|
1130
|
-
inset: 0;
|
|
1131
|
-
}
|
|
1132
|
-
.atelic-ui .op-ov-row:hover .op-ov-name {
|
|
1133
|
-
color: var(--op-accent);
|
|
1134
|
-
}
|
|
1135
|
-
.atelic-ui .op-ov-read {
|
|
1136
|
-
grid-column: 2;
|
|
1137
|
-
font-size: 15px;
|
|
1138
|
-
line-height: 1.45;
|
|
1139
|
-
color: var(--op-ink-soft);
|
|
1140
|
-
text-wrap: pretty;
|
|
1141
|
-
}
|
|
1142
|
-
.atelic-ui .op-ov-read a {
|
|
1143
|
-
position: relative;
|
|
1144
|
-
z-index: 1;
|
|
1145
|
-
color: var(--op-accent);
|
|
1146
|
-
text-decoration: underline;
|
|
1147
|
-
text-underline-offset: 2px;
|
|
1148
|
-
}
|
|
1149
|
-
.atelic-ui .op-ov-go {
|
|
1150
|
-
grid-column: 3;
|
|
1151
|
-
grid-row: 1;
|
|
1152
|
-
margin-top: 5px;
|
|
1153
|
-
color: var(--neutral-300);
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
/* ---- a part: the tier and the question it answers ---- */
|
|
1157
|
-
.atelic-ui .op-part {
|
|
1158
|
-
margin: 34px 0 10px;
|
|
1159
|
-
scroll-margin-top: calc(var(--nav-height) + 16px);
|
|
1160
|
-
}
|
|
1161
|
-
.atelic-ui .op-part h2 {
|
|
1162
|
-
font-size: 27px;
|
|
1163
|
-
font-weight: 650;
|
|
1164
|
-
letter-spacing: -0.025em;
|
|
1165
|
-
line-height: 1.1;
|
|
1166
|
-
margin: 0;
|
|
1167
|
-
color: var(--op-ink);
|
|
1168
|
-
}
|
|
1169
|
-
.atelic-ui .op-part p {
|
|
1170
|
-
margin: 6px 0 0;
|
|
1171
|
-
font-size: 16.5px;
|
|
1172
|
-
color: var(--op-ink-soft);
|
|
1173
|
-
}
|
|
1174
|
-
|
|
1175
|
-
/* ---- a topic: one section, a card of blocks ---- */
|
|
1176
|
-
.atelic-ui .op-topic {
|
|
1177
|
-
background: var(--op-card);
|
|
1178
|
-
border: 1px solid var(--op-rule);
|
|
1179
|
-
border-radius: var(--radius-md);
|
|
1180
|
-
box-shadow: var(--shadow-sm);
|
|
1181
|
-
padding: 18px 16px 16px;
|
|
1182
|
-
margin-top: 12px;
|
|
1183
|
-
scroll-margin-top: calc(var(--nav-height) + 16px);
|
|
1184
|
-
}
|
|
1185
|
-
.atelic-ui .op-topic-head {
|
|
1186
|
-
display: flex;
|
|
1187
|
-
justify-content: space-between;
|
|
1188
|
-
align-items: flex-start;
|
|
1189
|
-
gap: 20px;
|
|
1190
|
-
}
|
|
1191
|
-
.atelic-ui .op-topic h3 {
|
|
1192
|
-
font-size: 21px;
|
|
1193
|
-
font-weight: 650;
|
|
1194
|
-
letter-spacing: -0.02em;
|
|
1195
|
-
line-height: 1.2;
|
|
1196
|
-
margin: 0;
|
|
1197
|
-
color: var(--op-ink);
|
|
1198
|
-
}
|
|
1199
|
-
.atelic-ui .op-topic h3 a {
|
|
1200
|
-
display: inline-flex;
|
|
1201
|
-
align-items: center;
|
|
1202
|
-
gap: 6px;
|
|
1203
|
-
border-bottom: 1px solid var(--neutral-200);
|
|
1204
|
-
}
|
|
1205
|
-
.atelic-ui .op-topic h3 a svg {
|
|
1206
|
-
color: var(--op-ink-faint);
|
|
1207
|
-
}
|
|
1208
|
-
.atelic-ui .op-topic h3 a:hover,
|
|
1209
|
-
.atelic-ui .op-topic h3 a:hover svg {
|
|
1210
|
-
color: var(--op-accent);
|
|
1211
|
-
border-color: var(--op-accent);
|
|
1212
|
-
}
|
|
1213
|
-
.atelic-ui .op-def {
|
|
1214
|
-
margin: 6px 0 0;
|
|
1215
|
-
font-size: 16px;
|
|
1216
|
-
line-height: 1.45;
|
|
1217
|
-
color: var(--op-ink-soft);
|
|
1218
|
-
text-wrap: pretty;
|
|
1219
|
-
}
|
|
1220
|
-
/* why the letter: the rule the section met, in a line */
|
|
1221
|
-
.atelic-ui .op-why {
|
|
1222
|
-
margin: 6px 0 0;
|
|
1223
|
-
font-size: 14.5px;
|
|
1224
|
-
line-height: 1.45;
|
|
1225
|
-
color: var(--op-ink-soft);
|
|
1226
|
-
text-wrap: pretty;
|
|
1227
|
-
}
|
|
1228
|
-
.atelic-ui .op-why b {
|
|
1229
|
-
font-weight: 650;
|
|
1230
|
-
color: var(--op-ink);
|
|
1231
|
-
}
|
|
1232
|
-
.atelic-ui .op-topic-head > .op-grade {
|
|
1233
|
-
width: 42px;
|
|
1234
|
-
height: 42px;
|
|
1235
|
-
border-radius: 12px;
|
|
1236
|
-
font-size: 21px;
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
/* ---- blocks inside a topic, one under another ---- */
|
|
1240
|
-
.atelic-ui .op-blocks {
|
|
1241
|
-
display: grid;
|
|
1242
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1243
|
-
}
|
|
1244
|
-
.atelic-ui .op-block {
|
|
1245
|
-
margin-top: 16px;
|
|
1246
|
-
padding-top: 16px;
|
|
1247
|
-
border-top: 1px solid var(--op-rule);
|
|
1248
|
-
min-width: 0;
|
|
1249
|
-
}
|
|
1250
|
-
.atelic-ui .op-block-head {
|
|
1251
|
-
margin-bottom: 12px;
|
|
1252
|
-
}
|
|
1253
|
-
.atelic-ui .op-block-head h4 {
|
|
1254
|
-
font-size: 16px;
|
|
1255
|
-
font-weight: 650;
|
|
1256
|
-
letter-spacing: -0.005em;
|
|
1257
|
-
margin: 0;
|
|
1258
|
-
color: var(--op-ink);
|
|
1259
|
-
}
|
|
1260
|
-
.atelic-ui .op-block-head p {
|
|
1261
|
-
margin: 3px 0 0;
|
|
1262
|
-
font-size: 15px;
|
|
1263
|
-
line-height: 1.45;
|
|
1264
|
-
color: var(--op-ink-soft);
|
|
1265
|
-
text-wrap: pretty;
|
|
1266
|
-
}
|
|
1267
|
-
.atelic-ui .op-note {
|
|
1268
|
-
margin: 12px 0 0;
|
|
1269
|
-
font-size: 15px;
|
|
1270
|
-
line-height: 1.5;
|
|
1271
|
-
color: var(--op-ink-soft);
|
|
1272
|
-
text-wrap: pretty;
|
|
1273
|
-
}
|
|
1274
|
-
.atelic-ui .op-note b {
|
|
1275
|
-
color: var(--op-ink);
|
|
1276
|
-
font-weight: 600;
|
|
1277
|
-
}
|
|
1278
|
-
.atelic-ui .op-dash {
|
|
1279
|
-
display: inline-block;
|
|
1280
|
-
width: 14px;
|
|
1281
|
-
height: 1.5px;
|
|
1282
|
-
vertical-align: 0.3em;
|
|
1283
|
-
background: var(--neutral-300);
|
|
1284
|
-
}
|
|
1285
|
-
|
|
1286
|
-
/* The blocks are the shared package's components. These are the writeup's
|
|
1287
|
-
sizes for them. */
|
|
1288
|
-
.atelic-ui .op-checks .checklist,
|
|
1289
|
-
.atelic-ui .op-scale .threshold-scale {
|
|
1290
|
-
font-size: 15px;
|
|
1291
|
-
}
|
|
1292
|
-
.atelic-ui .op-bar .chart-key,
|
|
1293
|
-
.atelic-ui .op-columns .chart-key {
|
|
1294
|
-
font-size: 13px;
|
|
1295
|
-
}
|
|
1296
|
-
|
|
1297
|
-
/* the table: its layout is the shared DataTable's; these are the writeup's
|
|
1298
|
-
own sizes and the two line row names. */
|
|
1299
|
-
.atelic-ui .op-table .data-table {
|
|
1300
|
-
font-size: 15px;
|
|
1301
|
-
}
|
|
1302
|
-
.atelic-ui .op-table tbody th b {
|
|
1303
|
-
display: block;
|
|
1304
|
-
font-weight: 600;
|
|
1305
|
-
}
|
|
1306
|
-
.atelic-ui .op-table tbody th a,
|
|
1307
|
-
.atelic-ui .op-table .op-sub {
|
|
1308
|
-
display: block;
|
|
1309
|
-
font-family: var(--font-mono);
|
|
1310
|
-
font-size: 12px;
|
|
1311
|
-
color: var(--op-ink-faint);
|
|
1312
|
-
overflow-wrap: anywhere;
|
|
1313
|
-
}
|
|
1314
|
-
.atelic-ui .op-table tbody th a:hover {
|
|
1315
|
-
color: var(--op-accent);
|
|
1316
|
-
}
|
|
1317
|
-
.atelic-ui .op-table tr[data-tone="bad"] th b {
|
|
1318
|
-
color: var(--tone-bad);
|
|
1319
|
-
}
|
|
1320
|
-
.atelic-ui .op-table td {
|
|
1321
|
-
white-space: nowrap;
|
|
1322
|
-
}
|
|
1323
|
-
/* A cell of running words wraps; a cell of figures never does. */
|
|
1324
|
-
.atelic-ui .op-table td:has(.op-wrap) {
|
|
1325
|
-
white-space: normal;
|
|
1326
|
-
}
|
|
1327
|
-
.atelic-ui .op-mark-cell {
|
|
1328
|
-
display: inline-flex;
|
|
1329
|
-
align-items: center;
|
|
1330
|
-
gap: 6px;
|
|
1331
|
-
color: var(--tone);
|
|
1332
|
-
font-weight: 600;
|
|
1333
|
-
}
|
|
1334
|
-
/* the icon keeps its size however long the words beside it run */
|
|
1335
|
-
.atelic-ui .op-mark-cell svg {
|
|
1336
|
-
flex: none;
|
|
1337
|
-
}
|
|
1338
|
-
.atelic-ui .op-rating {
|
|
1339
|
-
display: inline-flex;
|
|
1340
|
-
align-items: center;
|
|
1341
|
-
gap: 4px;
|
|
1342
|
-
font-weight: 600;
|
|
1343
|
-
color: var(--tone, var(--op-ink));
|
|
1344
|
-
}
|
|
1345
|
-
.atelic-ui .op-rating svg {
|
|
1346
|
-
color: var(--tone, var(--tone-warn-fill));
|
|
1347
|
-
fill: currentColor;
|
|
1348
|
-
}
|
|
1349
|
-
|
|
1350
|
-
/* a few big numbers: the shared StatRow, at the writeup's sizes */
|
|
1351
|
-
.atelic-ui .op-stats .stat-row {
|
|
1352
|
-
gap: 18px 28px;
|
|
1353
|
-
}
|
|
1354
|
-
.atelic-ui .op-stats .stat .num {
|
|
1355
|
-
font-size: 28px;
|
|
1356
|
-
font-weight: 700;
|
|
1357
|
-
letter-spacing: -0.02em;
|
|
1358
|
-
line-height: 1.1;
|
|
1359
|
-
color: var(--tone, var(--op-ink));
|
|
1360
|
-
}
|
|
1361
|
-
.atelic-ui .op-stats .stat-delta {
|
|
1362
|
-
font-size: 13px;
|
|
1363
|
-
}
|
|
1364
|
-
.atelic-ui .op-stats .stat .lbl {
|
|
1365
|
-
margin-top: 6px;
|
|
1366
|
-
font-size: 15px;
|
|
1367
|
-
}
|
|
1368
|
-
|
|
1369
|
-
/* pictures on their own: the same size, side by side */
|
|
1370
|
-
.atelic-ui .op-shots-row {
|
|
1371
|
-
display: grid;
|
|
1372
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1373
|
-
gap: 16px;
|
|
1374
|
-
max-width: 520px;
|
|
1375
|
-
align-items: start;
|
|
1376
|
-
}
|
|
1377
|
-
/* three sit on one line, on a phone as well */
|
|
1378
|
-
.atelic-ui .op-shots-row[data-count="3"] {
|
|
1379
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1380
|
-
gap: 12px;
|
|
1381
|
-
max-width: 780px;
|
|
1382
|
-
}
|
|
1383
|
-
.atelic-ui .op-shots-row .op-shot a,
|
|
1384
|
-
.atelic-ui .op-shots-row .op-shot-frame {
|
|
1385
|
-
aspect-ratio: 3 / 4;
|
|
1386
|
-
background: var(--surface);
|
|
1387
|
-
}
|
|
1388
|
-
.atelic-ui .op-shots-row .op-shot img {
|
|
1389
|
-
width: 100%;
|
|
1390
|
-
height: 100%;
|
|
1391
|
-
object-fit: contain;
|
|
1392
|
-
object-position: center;
|
|
1393
|
-
}
|
|
1394
|
-
|
|
1395
|
-
/* the native disclosure: the shared one, at the writeup's sizes */
|
|
1396
|
-
.atelic-ui .op-block.disclosure.is-native {
|
|
1397
|
-
border-top: 1px solid var(--op-rule);
|
|
1398
|
-
}
|
|
1399
|
-
.atelic-ui .op-more .disclosure-label {
|
|
1400
|
-
font-size: 16px;
|
|
1401
|
-
}
|
|
1402
|
-
.atelic-ui .op-more .disclosure-summary {
|
|
1403
|
-
font-size: 15px;
|
|
1404
|
-
line-height: 1.45;
|
|
1405
|
-
}
|
|
1406
|
-
.atelic-ui .op-more.is-native > .disclosure-body {
|
|
1407
|
-
margin-top: 0;
|
|
1408
|
-
}
|
|
1409
|
-
.atelic-ui .op-more-body {
|
|
1410
|
-
display: grid;
|
|
1411
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1412
|
-
}
|
|
1413
|
-
.atelic-ui .op-more-body > .op-block:first-child {
|
|
1414
|
-
border-top: 0;
|
|
1415
|
-
margin-top: 6px;
|
|
1416
|
-
padding-top: 6px;
|
|
1417
|
-
}
|
|
1418
|
-
|
|
1419
|
-
/* findings: the shared Callout, one under another, with the owner's screen
|
|
1420
|
-
beside them */
|
|
1421
|
-
.atelic-ui .op-findings.has-shots {
|
|
1422
|
-
display: grid;
|
|
1423
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1424
|
-
gap: 18px;
|
|
1425
|
-
align-items: start;
|
|
1426
|
-
}
|
|
1427
|
-
.atelic-ui .op-findings-list {
|
|
1428
|
-
display: flex;
|
|
1429
|
-
flex-direction: column;
|
|
1430
|
-
gap: 14px;
|
|
1431
|
-
}
|
|
1432
|
-
.atelic-ui .op-findings .callout {
|
|
1433
|
-
font-size: 15.5px;
|
|
1434
|
-
line-height: 1.5;
|
|
1435
|
-
}
|
|
1436
|
-
.atelic-ui .op-findings .callout a,
|
|
1437
|
-
.atelic-ui .op-note a,
|
|
1438
|
-
.atelic-ui .op-block-head p a {
|
|
1439
|
-
color: var(--op-accent);
|
|
1440
|
-
text-decoration: underline;
|
|
1441
|
-
text-underline-offset: 2px;
|
|
1442
|
-
overflow-wrap: anywhere;
|
|
1443
|
-
}
|
|
1444
|
-
.atelic-ui .op-shots {
|
|
1445
|
-
display: flex;
|
|
1446
|
-
flex-direction: column;
|
|
1447
|
-
gap: 14px;
|
|
1448
|
-
max-width: 340px;
|
|
1449
|
-
}
|
|
1450
|
-
.atelic-ui .op-shot {
|
|
1451
|
-
display: flex;
|
|
1452
|
-
flex-direction: column;
|
|
1453
|
-
gap: 6px;
|
|
1454
|
-
margin: 0;
|
|
1455
|
-
}
|
|
1456
|
-
.atelic-ui .op-shot a,
|
|
1457
|
-
.atelic-ui .op-shot-frame {
|
|
1458
|
-
display: block;
|
|
1459
|
-
width: 100%;
|
|
1460
|
-
border-radius: var(--radius-sm);
|
|
1461
|
-
overflow: hidden;
|
|
1462
|
-
border: 1px solid var(--neutral-200);
|
|
1463
|
-
background: var(--op-card);
|
|
1464
|
-
}
|
|
1465
|
-
.atelic-ui .op-shot a {
|
|
1466
|
-
cursor: zoom-in;
|
|
1467
|
-
}
|
|
1468
|
-
/* The expand badge on a linked crop: off here, the note turns it on. */
|
|
1469
|
-
.atelic-ui .op-shot-open {
|
|
1470
|
-
display: none;
|
|
1471
|
-
}
|
|
1472
|
-
.atelic-ui .op-shot img {
|
|
1473
|
-
width: 100%;
|
|
1474
|
-
height: auto;
|
|
1475
|
-
display: block;
|
|
1476
|
-
}
|
|
1477
|
-
.atelic-ui .op-shot-brief {
|
|
1478
|
-
display: grid;
|
|
1479
|
-
place-items: center;
|
|
1480
|
-
min-height: 140px;
|
|
1481
|
-
border: 1px dashed var(--neutral-300);
|
|
1482
|
-
border-radius: var(--radius-sm);
|
|
1483
|
-
font-family: var(--font-mono);
|
|
1484
|
-
font-size: 12px;
|
|
1485
|
-
color: var(--op-ink-faint);
|
|
1486
|
-
padding: 12px;
|
|
1487
|
-
text-align: center;
|
|
1488
|
-
}
|
|
1489
|
-
.atelic-ui .op-shot figcaption {
|
|
1490
|
-
font-size: 12.5px;
|
|
1491
|
-
line-height: 1.45;
|
|
1492
|
-
color: var(--op-ink-faint);
|
|
1493
|
-
}
|
|
1494
|
-
|
|
1495
|
-
/* sources: the tools the readings came from */
|
|
1496
|
-
.atelic-ui .op-sources {
|
|
1497
|
-
margin-top: 16px;
|
|
1498
|
-
padding-top: 12px;
|
|
1499
|
-
border-top: 1px solid var(--op-rule);
|
|
1500
|
-
display: flex;
|
|
1501
|
-
flex-wrap: wrap;
|
|
1502
|
-
align-items: baseline;
|
|
1503
|
-
gap: 6px 16px;
|
|
1504
|
-
font-size: 13.5px;
|
|
1505
|
-
}
|
|
1506
|
-
.atelic-ui .op-sources-label {
|
|
1507
|
-
font-family: var(--font-mono);
|
|
1508
|
-
font-size: 11.5px;
|
|
1509
|
-
letter-spacing: 0.1em;
|
|
1510
|
-
text-transform: uppercase;
|
|
1511
|
-
color: var(--op-ink-faint);
|
|
1512
|
-
}
|
|
1513
|
-
.atelic-ui .op-sources ul {
|
|
1514
|
-
list-style: none;
|
|
1515
|
-
margin: 0;
|
|
1516
|
-
padding: 0;
|
|
1517
|
-
display: flex;
|
|
1518
|
-
flex-wrap: wrap;
|
|
1519
|
-
gap: 6px 18px;
|
|
1520
|
-
color: var(--op-ink-soft);
|
|
1521
|
-
}
|
|
1522
|
-
.atelic-ui .op-sources a {
|
|
1523
|
-
display: inline-flex;
|
|
1524
|
-
align-items: center;
|
|
1525
|
-
gap: 3px;
|
|
1526
|
-
color: var(--op-accent);
|
|
1527
|
-
font-weight: 550;
|
|
1528
|
-
}
|
|
1529
|
-
.atelic-ui .op-sources a:hover {
|
|
1530
|
-
text-decoration: underline;
|
|
1531
|
-
text-underline-offset: 2px;
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
/* ---- the rented line: paid's facts in one line, ungraded ---- */
|
|
1535
|
-
.atelic-ui .op-rented {
|
|
1536
|
-
display: flex;
|
|
1537
|
-
flex-direction: column;
|
|
1538
|
-
gap: 6px;
|
|
1539
|
-
margin: 18px 0 0;
|
|
1540
|
-
padding: 16px;
|
|
1541
|
-
background: var(--surface-alt);
|
|
1542
|
-
border-radius: var(--radius-md);
|
|
1543
|
-
font-size: 15.5px;
|
|
1544
|
-
line-height: 1.5;
|
|
1545
|
-
color: var(--op-ink);
|
|
1546
|
-
text-wrap: pretty;
|
|
1547
|
-
}
|
|
1548
|
-
.atelic-ui .op-rented-label {
|
|
1549
|
-
flex: none;
|
|
1550
|
-
font-family: var(--font-mono);
|
|
1551
|
-
font-size: 11.5px;
|
|
1552
|
-
letter-spacing: 0.1em;
|
|
1553
|
-
text-transform: uppercase;
|
|
1554
|
-
color: var(--op-ink-soft);
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
/* ---- the markets table: on a phone each market stacks, its letters on
|
|
1558
|
-
one line with their column's label; wide, it is a table ---- */
|
|
1559
|
-
.atelic-ui .op-markets-table {
|
|
1560
|
-
display: block;
|
|
1561
|
-
width: 100%;
|
|
1562
|
-
margin-top: 18px;
|
|
1563
|
-
font-size: 15px;
|
|
1564
|
-
line-height: 1.4;
|
|
1565
|
-
}
|
|
1566
|
-
.atelic-ui .op-markets-table tbody {
|
|
1567
|
-
display: block;
|
|
1568
|
-
}
|
|
1569
|
-
.atelic-ui .op-markets-table thead {
|
|
1570
|
-
position: absolute;
|
|
1571
|
-
width: 1px;
|
|
1572
|
-
height: 1px;
|
|
1573
|
-
overflow: hidden;
|
|
1574
|
-
clip: rect(0, 0, 0, 0);
|
|
1575
|
-
white-space: nowrap;
|
|
1576
|
-
}
|
|
1577
|
-
.atelic-ui .op-markets-table tbody tr {
|
|
1578
|
-
display: flex;
|
|
1579
|
-
flex-wrap: wrap;
|
|
1580
|
-
align-items: center;
|
|
1581
|
-
column-gap: 16px;
|
|
1582
|
-
row-gap: 6px;
|
|
1583
|
-
padding: 12px 0;
|
|
1584
|
-
border-bottom: 1px solid var(--op-rule);
|
|
1585
|
-
}
|
|
1586
|
-
.atelic-ui .op-markets-table tbody tr:last-child {
|
|
1587
|
-
border-bottom: 0;
|
|
1588
|
-
}
|
|
1589
|
-
.atelic-ui .op-markets-table th,
|
|
1590
|
-
.atelic-ui .op-markets-table td {
|
|
1591
|
-
text-align: left;
|
|
1592
|
-
color: var(--op-ink);
|
|
1593
|
-
}
|
|
1594
|
-
.atelic-ui .op-markets-table .op-markets-market,
|
|
1595
|
-
.atelic-ui .op-markets-table .op-markets-read {
|
|
1596
|
-
width: 100%;
|
|
1597
|
-
}
|
|
1598
|
-
.atelic-ui .op-markets-market {
|
|
1599
|
-
font-weight: 600;
|
|
1600
|
-
}
|
|
1601
|
-
.atelic-ui .op-markets-place {
|
|
1602
|
-
display: block;
|
|
1603
|
-
font-weight: 400;
|
|
1604
|
-
font-size: 12.5px;
|
|
1605
|
-
color: var(--op-ink-faint);
|
|
1606
|
-
}
|
|
1607
|
-
.atelic-ui .op-markets-col,
|
|
1608
|
-
.atelic-ui .op-markets-label {
|
|
1609
|
-
font-family: var(--font-mono);
|
|
1610
|
-
font-size: 11.5px;
|
|
1611
|
-
font-weight: 400;
|
|
1612
|
-
letter-spacing: 0.08em;
|
|
1613
|
-
text-transform: uppercase;
|
|
1614
|
-
color: var(--op-ink-soft);
|
|
1615
|
-
white-space: nowrap;
|
|
1616
|
-
}
|
|
1617
|
-
.atelic-ui .op-markets-label {
|
|
1618
|
-
margin-right: 6px;
|
|
1619
|
-
}
|
|
1620
|
-
.atelic-ui .op-markets-grade {
|
|
1621
|
-
white-space: nowrap;
|
|
1622
|
-
}
|
|
1623
|
-
.atelic-ui .op-markets-table .op-markets-read {
|
|
1624
|
-
color: var(--op-ink-soft);
|
|
1625
|
-
text-wrap: pretty;
|
|
1626
|
-
}
|
|
1627
|
-
|
|
1628
|
-
/* ---- the close ---- */
|
|
1629
|
-
.atelic-ui .op-close {
|
|
1630
|
-
margin-top: 44px;
|
|
1631
|
-
padding-top: 22px;
|
|
1632
|
-
border-top: 1px solid var(--neutral-200);
|
|
1633
|
-
display: flex;
|
|
1634
|
-
flex-direction: column;
|
|
1635
|
-
align-items: flex-start;
|
|
1636
|
-
gap: 14px;
|
|
1637
|
-
font-size: 14px;
|
|
1638
|
-
line-height: 1.6;
|
|
1639
|
-
color: var(--op-ink-faint);
|
|
1640
|
-
}
|
|
1641
|
-
.atelic-ui .op-close b {
|
|
1642
|
-
font-weight: 500;
|
|
1643
|
-
color: var(--op-ink);
|
|
1644
|
-
}
|
|
1645
|
-
/* The sign off lockup itself (.op-who, .op-sign) is shared with the monthly
|
|
1646
|
-
page, so it lives with the shared classes at the head of this sheet. */
|
|
1647
|
-
.atelic-ui .op .op-sign {
|
|
1648
|
-
font-size: 24px;
|
|
1649
|
-
margin-bottom: 8px;
|
|
1650
|
-
}
|
|
1651
|
-
.atelic-ui .op .op-who {
|
|
1652
|
-
gap: 14px;
|
|
1653
|
-
}
|
|
1654
|
-
.atelic-ui .op .op-who img {
|
|
1655
|
-
width: 56px;
|
|
1656
|
-
height: 56px;
|
|
1657
|
-
}
|
|
1658
|
-
/* The pointer to the hosted page belongs to the printed copy alone. */
|
|
1659
|
-
.atelic-ui .op-twin {
|
|
1660
|
-
display: none;
|
|
1661
|
-
}
|
|
1662
|
-
.atelic-ui .op-sr-only {
|
|
1663
|
-
position: absolute;
|
|
1664
|
-
width: 1px;
|
|
1665
|
-
height: 1px;
|
|
1666
|
-
padding: 0;
|
|
1667
|
-
margin: -1px;
|
|
1668
|
-
overflow: hidden;
|
|
1669
|
-
clip: rect(0, 0, 0, 0);
|
|
1670
|
-
white-space: nowrap;
|
|
1671
|
-
border: 0;
|
|
1672
|
-
}
|
|
1673
|
-
|
|
1674
|
-
/* ---- wide: the same page with room ---- */
|
|
1675
|
-
@media print, (min-width: 721px) {
|
|
1676
|
-
.atelic-ui .op-meta-sep,
|
|
1677
|
-
.atelic-ui .op-meta-date {
|
|
1678
|
-
display: inline;
|
|
1679
|
-
}
|
|
1680
|
-
.atelic-ui .op-doc {
|
|
1681
|
-
padding: calc(var(--nav-height) + 32px) 24px 64px;
|
|
1682
|
-
}
|
|
1683
|
-
.atelic-ui .op-intro {
|
|
1684
|
-
font-size: 18px;
|
|
1685
|
-
}
|
|
1686
|
-
.atelic-ui .op-ov-tier-label {
|
|
1687
|
-
padding: 7px 20px;
|
|
1688
|
-
}
|
|
1689
|
-
.atelic-ui .op-ov-row {
|
|
1690
|
-
grid-template-columns: auto 232px minmax(0, 1fr) auto;
|
|
1691
|
-
column-gap: 16px;
|
|
1692
|
-
padding: 11px 14px 11px 20px;
|
|
1693
|
-
}
|
|
1694
|
-
.atelic-ui .op-ov-grade {
|
|
1695
|
-
grid-row: 1;
|
|
1696
|
-
}
|
|
1697
|
-
.atelic-ui .op-ov-read {
|
|
1698
|
-
grid-column: 3;
|
|
1699
|
-
padding-top: 4px;
|
|
1700
|
-
}
|
|
1701
|
-
.atelic-ui .op-ov-go {
|
|
1702
|
-
grid-column: 4;
|
|
1703
|
-
}
|
|
1704
|
-
.atelic-ui .op-part {
|
|
1705
|
-
margin: 40px 0 12px;
|
|
1706
|
-
}
|
|
1707
|
-
.atelic-ui .op-part h2 {
|
|
1708
|
-
font-size: 30px;
|
|
1709
|
-
}
|
|
1710
|
-
.atelic-ui .op-part p {
|
|
1711
|
-
font-size: 17px;
|
|
1712
|
-
}
|
|
1713
|
-
.atelic-ui .op-topic {
|
|
1714
|
-
padding: 22px 26px 18px;
|
|
1715
|
-
}
|
|
1716
|
-
.atelic-ui .op-topic h3 {
|
|
1717
|
-
font-size: 23px;
|
|
1718
|
-
}
|
|
1719
|
-
.atelic-ui .op-topic-head > .op-grade {
|
|
1720
|
-
width: 46px;
|
|
1721
|
-
height: 46px;
|
|
1722
|
-
border-radius: 13px;
|
|
1723
|
-
font-size: 23px;
|
|
1724
|
-
}
|
|
1725
|
-
.atelic-ui .op-findings.has-shots {
|
|
1726
|
-
grid-template-columns: minmax(0, 1fr) 250px;
|
|
1727
|
-
gap: 28px;
|
|
1728
|
-
}
|
|
1729
|
-
.atelic-ui .op-findings .op-shots {
|
|
1730
|
-
max-width: none;
|
|
1731
|
-
}
|
|
1732
|
-
.atelic-ui .op-rented {
|
|
1733
|
-
flex-direction: row;
|
|
1734
|
-
align-items: baseline;
|
|
1735
|
-
gap: 16px;
|
|
1736
|
-
padding: 16px 26px;
|
|
1737
|
-
}
|
|
1738
|
-
.atelic-ui .op-close {
|
|
1739
|
-
flex-direction: row;
|
|
1740
|
-
justify-content: space-between;
|
|
1741
|
-
align-items: flex-end;
|
|
1742
|
-
}
|
|
1743
|
-
|
|
1744
|
-
/* the markets as a real table */
|
|
1745
|
-
.atelic-ui .op-markets-table {
|
|
1746
|
-
display: table;
|
|
1747
|
-
border-collapse: collapse;
|
|
1748
|
-
}
|
|
1749
|
-
.atelic-ui .op-markets-table tbody {
|
|
1750
|
-
display: table-row-group;
|
|
1751
|
-
}
|
|
1752
|
-
.atelic-ui .op-markets-table thead {
|
|
1753
|
-
position: static;
|
|
1754
|
-
width: auto;
|
|
1755
|
-
height: auto;
|
|
1756
|
-
overflow: visible;
|
|
1757
|
-
clip: auto;
|
|
1758
|
-
}
|
|
1759
|
-
.atelic-ui .op-markets-table tbody tr {
|
|
1760
|
-
display: table-row;
|
|
1761
|
-
padding: 0;
|
|
1762
|
-
border: 0;
|
|
1763
|
-
}
|
|
1764
|
-
.atelic-ui .op-markets-table th,
|
|
1765
|
-
.atelic-ui .op-markets-table td {
|
|
1766
|
-
display: table-cell;
|
|
1767
|
-
padding: 10px 14px 10px 0;
|
|
1768
|
-
border-bottom: 1px solid var(--op-rule);
|
|
1769
|
-
vertical-align: top;
|
|
1770
|
-
}
|
|
1771
|
-
.atelic-ui .op-markets-table thead th {
|
|
1772
|
-
padding-top: 0;
|
|
1773
|
-
padding-bottom: 8px;
|
|
1774
|
-
border-bottom: 1.5px solid var(--op-ink);
|
|
1775
|
-
vertical-align: bottom;
|
|
1776
|
-
}
|
|
1777
|
-
.atelic-ui .op-markets-table tbody tr:last-child th,
|
|
1778
|
-
.atelic-ui .op-markets-table tbody tr:last-child td {
|
|
1779
|
-
border-bottom: 0;
|
|
1780
|
-
}
|
|
1781
|
-
.atelic-ui .op-markets-table .op-markets-market {
|
|
1782
|
-
width: 170px;
|
|
1783
|
-
}
|
|
1784
|
-
.atelic-ui .op-markets-table .op-markets-read {
|
|
1785
|
-
width: auto;
|
|
1786
|
-
}
|
|
1787
|
-
.atelic-ui .op-markets-col {
|
|
1788
|
-
width: 64px;
|
|
1789
|
-
}
|
|
1790
|
-
.atelic-ui .op-markets-label {
|
|
1791
|
-
display: none;
|
|
1792
|
-
}
|
|
1793
|
-
}
|
|
1794
|
-
|
|
1795
|
-
/* ---- print: the same page, on letter paper ---- */
|
|
1796
|
-
@page {
|
|
1797
|
-
size: letter;
|
|
1798
|
-
margin: 0.5in 0.55in 0.6in;
|
|
1799
|
-
@bottom-right {
|
|
1800
|
-
content: counter(page) " / " counter(pages);
|
|
1801
|
-
font-family: ui-monospace, "SF Mono", monospace;
|
|
1802
|
-
font-size: 7.5pt;
|
|
1803
|
-
color: #75858f;
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
-
@media print {
|
|
1807
|
-
html,
|
|
1808
|
-
body {
|
|
1809
|
-
margin: 0;
|
|
1810
|
-
padding: 0;
|
|
1811
|
-
background: none;
|
|
1812
|
-
}
|
|
1813
|
-
/* The sheet is the page at three quarters size. The zoom sits on the root,
|
|
1814
|
-
where the browser sizes each block for its page breaks at the printed
|
|
1815
|
-
size; on the document it measured them full size and broke early. */
|
|
1816
|
-
html:has(.atelic-ui .op-doc) {
|
|
1817
|
-
zoom: 0.74;
|
|
1818
|
-
}
|
|
1819
|
-
.atelic-ui .nav,
|
|
1820
|
-
.atelic-ui .credit-bar,
|
|
1821
|
-
.atelic-ui .skip-link,
|
|
1822
|
-
.atelic-ui .op-ov-go,
|
|
1823
|
-
.atelic-ui .op-topic h3 a svg {
|
|
1824
|
-
display: none;
|
|
1825
|
-
}
|
|
1826
|
-
.atelic-ui,
|
|
1827
|
-
.atelic-ui .op {
|
|
1828
|
-
background: none;
|
|
1829
|
-
min-height: 0;
|
|
1830
|
-
}
|
|
1831
|
-
.atelic-ui .op-doc {
|
|
1832
|
-
max-width: none;
|
|
1833
|
-
padding: 0;
|
|
1834
|
-
}
|
|
1835
|
-
.atelic-ui .op-top {
|
|
1836
|
-
display: flex;
|
|
1837
|
-
align-items: center;
|
|
1838
|
-
gap: 12px;
|
|
1839
|
-
margin-bottom: 18px;
|
|
1840
|
-
}
|
|
1841
|
-
.atelic-ui .op-mark {
|
|
1842
|
-
font-weight: 600;
|
|
1843
|
-
font-size: 22px;
|
|
1844
|
-
letter-spacing: -0.045em;
|
|
1845
|
-
display: inline-flex;
|
|
1846
|
-
align-items: center;
|
|
1847
|
-
gap: 0.38em;
|
|
1848
|
-
color: var(--op-ink);
|
|
1849
|
-
font-family: var(--font-brand);
|
|
1850
|
-
}
|
|
1851
|
-
.atelic-ui .op-run {
|
|
1852
|
-
display: inline-block;
|
|
1853
|
-
width: 1.7em;
|
|
1854
|
-
height: 2px;
|
|
1855
|
-
background: linear-gradient(90deg, var(--op-accent), transparent);
|
|
1856
|
-
}
|
|
1857
|
-
.atelic-ui .op-x {
|
|
1858
|
-
font-family: var(--font-mono);
|
|
1859
|
-
font-size: 16px;
|
|
1860
|
-
color: var(--op-ink-faint);
|
|
1861
|
-
line-height: 1;
|
|
1862
|
-
}
|
|
1863
|
-
.atelic-ui .op-recipient {
|
|
1864
|
-
height: 30px;
|
|
1865
|
-
width: auto;
|
|
1866
|
-
display: block;
|
|
1867
|
-
}
|
|
1868
|
-
.atelic-ui .op-ov-card,
|
|
1869
|
-
.atelic-ui .op-topic {
|
|
1870
|
-
box-shadow: none;
|
|
1871
|
-
border-color: var(--neutral-200);
|
|
1872
|
-
}
|
|
1873
|
-
.atelic-ui .op-topic h3 a {
|
|
1874
|
-
border-bottom: 0;
|
|
1875
|
-
}
|
|
1876
|
-
/* A small block stays whole; a table or a disclosure may run over a
|
|
1877
|
-
page, row by row, with its heading kept beside its first rows. */
|
|
1878
|
-
.atelic-ui .op-ov,
|
|
1879
|
-
.atelic-ui .op-block,
|
|
1880
|
-
.atelic-ui .op-rented,
|
|
1881
|
-
.atelic-ui .op-close,
|
|
1882
|
-
.atelic-ui .op-topic-head,
|
|
1883
|
-
.atelic-ui .op-block-head,
|
|
1884
|
-
.atelic-ui .op-markets-table tr,
|
|
1885
|
-
.atelic-ui .data-table tr {
|
|
1886
|
-
break-inside: avoid;
|
|
1887
|
-
}
|
|
1888
|
-
.atelic-ui .op-block.op-table,
|
|
1889
|
-
.atelic-ui .op-block.op-more,
|
|
1890
|
-
.atelic-ui .op-block.op-checks,
|
|
1891
|
-
.atelic-ui .op-block.op-findings,
|
|
1892
|
-
.atelic-ui .op-markets {
|
|
1893
|
-
break-inside: auto;
|
|
1894
|
-
}
|
|
1895
|
-
/* A list of checks or findings runs over a page item by item, so a
|
|
1896
|
-
section starts in whatever space the last one left. */
|
|
1897
|
-
.atelic-ui .op-checks .checklist > li,
|
|
1898
|
-
.atelic-ui .op-findings .callout {
|
|
1899
|
-
break-inside: avoid;
|
|
1900
|
-
}
|
|
1901
|
-
.atelic-ui .op-part,
|
|
1902
|
-
.atelic-ui .is-native > .disclosure-head {
|
|
1903
|
-
break-inside: avoid;
|
|
1904
|
-
break-after: avoid;
|
|
1905
|
-
}
|
|
1906
|
-
.atelic-ui .op-topic-head,
|
|
1907
|
-
.atelic-ui .op-block-head,
|
|
1908
|
-
.atelic-ui .is-native > .disclosure-head,
|
|
1909
|
-
.atelic-ui .data-table thead {
|
|
1910
|
-
break-after: avoid;
|
|
1911
|
-
}
|
|
1912
|
-
.atelic-ui .op-shot a {
|
|
1913
|
-
cursor: auto;
|
|
1914
|
-
}
|
|
1915
|
-
.atelic-ui .op-twin {
|
|
1916
|
-
display: flex;
|
|
1917
|
-
align-items: center;
|
|
1918
|
-
gap: 14px;
|
|
1919
|
-
}
|
|
1920
|
-
.atelic-ui .op-twin-text {
|
|
1921
|
-
text-align: right;
|
|
1922
|
-
font-family: var(--font-mono);
|
|
1923
|
-
font-size: 12px;
|
|
1924
|
-
letter-spacing: 0.04em;
|
|
1925
|
-
}
|
|
1926
|
-
.atelic-ui .op-twin-text b {
|
|
1927
|
-
display: block;
|
|
1928
|
-
font-family: var(--font-sans);
|
|
1929
|
-
font-size: 16px;
|
|
1930
|
-
font-weight: 600;
|
|
1931
|
-
letter-spacing: -0.01em;
|
|
1932
|
-
margin-top: 2px;
|
|
1933
|
-
}
|
|
1934
|
-
.atelic-ui .op-qr {
|
|
1935
|
-
width: 96px;
|
|
1936
|
-
height: 96px;
|
|
1937
|
-
display: block;
|
|
1938
|
-
}
|
|
1939
|
-
}
|
|
1940
|
-
|
|
1941
|
-
/* =================================================================
|
|
1942
|
-
THE NOTE: the first touch set as a page (Note.tsx). A letter, not a
|
|
1943
|
-
report, read on a phone first. Its column is the writeup's 920px,
|
|
1944
|
-
centered under the header with the header's own gutters, and every
|
|
1945
|
-
line of text runs the column's full width.
|
|
1946
|
-
|
|
1947
|
-
- The two lanes are separate sections stacked top to bottom at
|
|
1948
|
-
every width and on paper, never side by side.
|
|
1949
|
-
- Phone first: a finding is its Callout with the owner's screen
|
|
1950
|
-
under it. Wide (721px and up) and on paper, a finding with a
|
|
1951
|
-
screen is one row, the words left and the screen right, top
|
|
1952
|
-
aligned; the screen's column sizes to the picture, a phone crop
|
|
1953
|
-
about 260px and a wide card up to 45% of the row. A finding
|
|
1954
|
-
with no screen takes the full width.
|
|
1955
|
-
- Print: one letter sheet. The chrome steps aside (the writeup's print
|
|
1956
|
-
rules already hide the header and the credit band on any artifact
|
|
1957
|
-
page), the type comes down, and the screens shrink. The note sets
|
|
1958
|
-
no @page of its own: the writeup's, the later one in this sheet,
|
|
1959
|
-
sets letter paper for every artifact page.
|
|
1960
|
-
|
|
1961
|
-
Tokens only. The finding is the shared Callout (styles/components.css),
|
|
1962
|
-
the screen the writeup's .op-shot, the sign off the shared .op-who;
|
|
1963
|
-
this sheet sets the letter around them and their sizes here.
|
|
1964
|
-
================================================================= */
|
|
1965
|
-
/* The borrowed .op-shot reads the writeup's own two tokens, mapped here as
|
|
1966
|
-
the writeup's .op root maps them. */
|
|
1967
|
-
.atelic-ui .nt {
|
|
1968
|
-
--op-card: var(--card);
|
|
1969
|
-
--op-ink-faint: var(--neutral-500);
|
|
1970
|
-
font-family: var(--font-sans);
|
|
1971
|
-
color: var(--ink);
|
|
1972
|
-
background: var(--surface);
|
|
1973
|
-
}
|
|
1974
|
-
/* The writeup's column (.op-doc, 920px), centered under the header and
|
|
1975
|
-
held off the edges by the header's gutters (chrome.css, .nav-inner). */
|
|
1976
|
-
.atelic-ui .nt-doc {
|
|
1977
|
-
max-width: calc(920px + 2 * var(--gutter));
|
|
1978
|
-
margin: 0 auto;
|
|
1979
|
-
padding: calc(var(--nav-height) + 22px) var(--gutter) 48px;
|
|
1980
|
-
font-size: 17px;
|
|
1981
|
-
line-height: 1.6;
|
|
1982
|
-
print-color-adjust: exact;
|
|
1983
|
-
-webkit-print-color-adjust: exact;
|
|
1984
|
-
}
|
|
1985
|
-
.atelic-ui .nt a {
|
|
1986
|
-
color: var(--primary);
|
|
1987
|
-
text-decoration: underline;
|
|
1988
|
-
text-underline-offset: 2px;
|
|
1989
|
-
text-decoration-thickness: 1px;
|
|
1990
|
-
overflow-wrap: anywhere;
|
|
1991
|
-
}
|
|
1992
|
-
.atelic-ui .nt a:hover {
|
|
1993
|
-
text-decoration-thickness: 2px;
|
|
1994
|
-
}
|
|
1995
|
-
|
|
1996
|
-
/* ---- the head: who it is for, then the title ---- */
|
|
1997
|
-
.atelic-ui .nt-meta {
|
|
1998
|
-
margin: 0 0 10px;
|
|
1999
|
-
font-family: var(--font-mono);
|
|
2000
|
-
font-size: 12.5px;
|
|
2001
|
-
letter-spacing: 0.04em;
|
|
2002
|
-
color: var(--neutral-500);
|
|
2003
|
-
}
|
|
2004
|
-
.atelic-ui .nt-meta b {
|
|
2005
|
-
font-weight: 500;
|
|
2006
|
-
color: var(--ink-soft);
|
|
2007
|
-
}
|
|
2008
|
-
.atelic-ui .nt-meta-date {
|
|
2009
|
-
white-space: nowrap;
|
|
2010
|
-
}
|
|
2011
|
-
.atelic-ui .nt h1 {
|
|
2012
|
-
font-size: clamp(30px, 6vw, 40px);
|
|
2013
|
-
font-weight: 650;
|
|
2014
|
-
letter-spacing: -0.03em;
|
|
2015
|
-
line-height: 1.1;
|
|
2016
|
-
margin: 0;
|
|
2017
|
-
text-wrap: balance;
|
|
2018
|
-
color: var(--ink);
|
|
2019
|
-
}
|
|
2020
|
-
|
|
2021
|
-
/* ---- the opener: the letter's first paragraph ---- */
|
|
2022
|
-
.atelic-ui .nt-opener {
|
|
2023
|
-
margin: 18px 0 0;
|
|
2024
|
-
font-size: 18px;
|
|
2025
|
-
line-height: 1.6;
|
|
2026
|
-
color: var(--ink);
|
|
2027
|
-
text-wrap: pretty;
|
|
2028
|
-
}
|
|
2029
|
-
|
|
2030
|
-
/* ---- the two lanes, each a heading and its findings, one above the
|
|
2031
|
-
other at every width ---- */
|
|
2032
|
-
.atelic-ui .nt-lanes {
|
|
2033
|
-
display: grid;
|
|
2034
|
-
grid-template-columns: minmax(0, 1fr);
|
|
2035
|
-
gap: 26px;
|
|
2036
|
-
margin-top: 30px;
|
|
2037
|
-
padding-top: 24px;
|
|
2038
|
-
border-top: 1px solid var(--neutral-100);
|
|
2039
|
-
}
|
|
2040
|
-
.atelic-ui .nt-lane {
|
|
2041
|
-
min-width: 0;
|
|
2042
|
-
}
|
|
2043
|
-
.atelic-ui .nt-lane h2 {
|
|
2044
|
-
margin: 0 0 14px;
|
|
2045
|
-
font-size: 19px;
|
|
2046
|
-
font-weight: 650;
|
|
2047
|
-
letter-spacing: -0.015em;
|
|
2048
|
-
line-height: 1.25;
|
|
2049
|
-
color: var(--ink);
|
|
2050
|
-
}
|
|
2051
|
-
.atelic-ui .nt-findings {
|
|
2052
|
-
list-style: none;
|
|
2053
|
-
margin: 0;
|
|
2054
|
-
padding: 0;
|
|
2055
|
-
display: flex;
|
|
2056
|
-
flex-direction: column;
|
|
2057
|
-
gap: 18px;
|
|
2058
|
-
}
|
|
2059
|
-
.atelic-ui .nt-finding .callout {
|
|
2060
|
-
font-size: 16px;
|
|
2061
|
-
line-height: 1.5;
|
|
2062
|
-
}
|
|
2063
|
-
/* The screen is a thumbnail under its finding, set in from the icon so it
|
|
2064
|
-
lines up with the words. It keeps its own shape, held to 200px tall and
|
|
2065
|
-
never the lane's full width; a click opens the full picture. */
|
|
2066
|
-
.atelic-ui .nt-finding .op-shot {
|
|
2067
|
-
margin: 10px 0 0 28px;
|
|
2068
|
-
}
|
|
2069
|
-
.atelic-ui .nt-finding .op-shot a,
|
|
2070
|
-
.atelic-ui .nt-finding .op-shot-frame {
|
|
2071
|
-
width: fit-content;
|
|
2072
|
-
max-width: 100%;
|
|
2073
|
-
}
|
|
2074
|
-
.atelic-ui .nt-finding .op-shot img {
|
|
2075
|
-
width: auto;
|
|
2076
|
-
max-width: min(100%, 280px);
|
|
2077
|
-
max-height: 200px;
|
|
2078
|
-
}
|
|
2079
|
-
/* A linked thumbnail says it opens: the badge in its corner, and the
|
|
2080
|
-
frame takes the accent on hover and focus. */
|
|
2081
|
-
.atelic-ui .nt-finding .op-shot a {
|
|
2082
|
-
position: relative;
|
|
2083
|
-
color: inherit;
|
|
2084
|
-
text-decoration: none;
|
|
2085
|
-
transition:
|
|
2086
|
-
border-color 0.15s ease,
|
|
2087
|
-
box-shadow 0.15s ease;
|
|
2088
|
-
}
|
|
2089
|
-
.atelic-ui .nt-finding .op-shot a:hover,
|
|
2090
|
-
.atelic-ui .nt-finding .op-shot a:focus-visible {
|
|
2091
|
-
border-color: var(--primary);
|
|
2092
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 25%, transparent);
|
|
2093
|
-
}
|
|
2094
|
-
.atelic-ui .nt-finding .op-shot-open {
|
|
2095
|
-
position: absolute;
|
|
2096
|
-
right: 4px;
|
|
2097
|
-
bottom: 4px;
|
|
2098
|
-
display: flex;
|
|
2099
|
-
align-items: center;
|
|
2100
|
-
justify-content: center;
|
|
2101
|
-
width: 20px;
|
|
2102
|
-
height: 20px;
|
|
2103
|
-
border-radius: 50%;
|
|
2104
|
-
background: color-mix(in srgb, var(--ink) 72%, transparent);
|
|
2105
|
-
color: var(--surface);
|
|
2106
|
-
}
|
|
2107
|
-
.atelic-ui .nt-finding .op-shot a:hover .op-shot-open,
|
|
2108
|
-
.atelic-ui .nt-finding .op-shot a:focus-visible .op-shot-open {
|
|
2109
|
-
background: var(--primary);
|
|
2110
|
-
}
|
|
2111
|
-
/* The caption wraps to the picture's width and never sets the column's. */
|
|
2112
|
-
.atelic-ui .nt-finding .op-shot figcaption {
|
|
2113
|
-
width: 0;
|
|
2114
|
-
min-width: 100%;
|
|
2115
|
-
font-size: 12.5px;
|
|
2116
|
-
line-height: 1.45;
|
|
2117
|
-
color: var(--neutral-500);
|
|
2118
|
-
}
|
|
2119
|
-
|
|
2120
|
-
/* ---- where the work would start ---- */
|
|
2121
|
-
.atelic-ui .nt-start {
|
|
2122
|
-
margin-top: 30px;
|
|
2123
|
-
padding-top: 24px;
|
|
2124
|
-
border-top: 1px solid var(--neutral-100);
|
|
2125
|
-
}
|
|
2126
|
-
.atelic-ui .nt-start-lead {
|
|
2127
|
-
margin: 0 0 10px;
|
|
2128
|
-
font-weight: 650;
|
|
2129
|
-
color: var(--ink);
|
|
2130
|
-
}
|
|
2131
|
-
/* The site base strips list markers; the steps want theirs back. */
|
|
2132
|
-
.atelic-ui .nt-start ul {
|
|
2133
|
-
margin: 0;
|
|
2134
|
-
padding-left: 1.2em;
|
|
2135
|
-
list-style: disc;
|
|
2136
|
-
display: grid;
|
|
2137
|
-
gap: 8px;
|
|
2138
|
-
color: var(--ink-soft);
|
|
2139
|
-
}
|
|
2140
|
-
.atelic-ui .nt-start li {
|
|
2141
|
-
padding-left: 2px;
|
|
2142
|
-
}
|
|
2143
|
-
.atelic-ui .nt-start li::marker {
|
|
2144
|
-
color: var(--primary);
|
|
2145
|
-
}
|
|
2146
|
-
.atelic-ui .nt-start b {
|
|
2147
|
-
font-weight: 600;
|
|
2148
|
-
color: var(--ink);
|
|
2149
|
-
}
|
|
2150
|
-
|
|
2151
|
-
/* ---- the close: who is writing, the offer, then the sign off ---- */
|
|
2152
|
-
.atelic-ui .nt-close {
|
|
2153
|
-
margin-top: 30px;
|
|
2154
|
-
padding-top: 24px;
|
|
2155
|
-
border-top: 1px solid var(--neutral-100);
|
|
2156
|
-
}
|
|
2157
|
-
.atelic-ui .nt-close p {
|
|
2158
|
-
margin: 0 0 14px;
|
|
2159
|
-
text-wrap: pretty;
|
|
2160
|
-
}
|
|
2161
|
-
.atelic-ui .nt-close .op-who {
|
|
2162
|
-
margin-top: 22px;
|
|
2163
|
-
gap: 14px;
|
|
2164
|
-
font-size: 14px;
|
|
2165
|
-
line-height: 1.6;
|
|
2166
|
-
color: var(--neutral-500);
|
|
2167
|
-
}
|
|
2168
|
-
.atelic-ui .nt-close .op-who img {
|
|
2169
|
-
width: 56px;
|
|
2170
|
-
height: 56px;
|
|
2171
|
-
}
|
|
2172
|
-
.atelic-ui .nt-close .op-sign {
|
|
2173
|
-
font-size: 24px;
|
|
2174
|
-
margin-bottom: 8px;
|
|
2175
|
-
}
|
|
2176
|
-
/* The sign off's own links read as the writeup's do: quiet, in the text color. */
|
|
2177
|
-
.atelic-ui .nt-close .op-who a {
|
|
2178
|
-
color: inherit;
|
|
2179
|
-
text-decoration: none;
|
|
2180
|
-
}
|
|
2181
|
-
|
|
2182
|
-
/* ---- wide: more room, and each screen beside its finding ---- */
|
|
2183
|
-
@media (min-width: 721px) {
|
|
2184
|
-
.atelic-ui .nt-doc {
|
|
2185
|
-
padding-top: calc(var(--nav-height) + 36px);
|
|
2186
|
-
padding-bottom: 64px;
|
|
2187
|
-
}
|
|
2188
|
-
.atelic-ui .nt-lanes {
|
|
2189
|
-
gap: 32px;
|
|
2190
|
-
}
|
|
2191
|
-
}
|
|
2192
|
-
|
|
2193
|
-
/* A finding with a screen is one row: the words left, the screen right,
|
|
2194
|
-
top aligned. The screen is a thumbnail about as tall as a three line
|
|
2195
|
-
finding, so a phone crop reads as a tall one about 80px wide and a
|
|
2196
|
-
wide card as a short wide one; the column shrinks to it, held to 45%
|
|
2197
|
-
of the row, with room enough for the caption under it. */
|
|
2198
|
-
@media print, (min-width: 721px) {
|
|
2199
|
-
.atelic-ui .nt-finding.has-shot {
|
|
2200
|
-
display: grid;
|
|
2201
|
-
grid-template-columns: minmax(0, 1fr) fit-content(45%);
|
|
2202
|
-
column-gap: 32px;
|
|
2203
|
-
align-items: start;
|
|
2204
|
-
}
|
|
2205
|
-
.atelic-ui .nt-finding.has-shot .op-shot {
|
|
2206
|
-
margin: 0;
|
|
2207
|
-
min-width: 150px;
|
|
2208
|
-
}
|
|
2209
|
-
.atelic-ui .nt-finding .op-shot img {
|
|
2210
|
-
max-width: 100%;
|
|
2211
|
-
max-height: 170px;
|
|
2212
|
-
}
|
|
2213
|
-
.atelic-ui .nt-finding .op-shot figcaption {
|
|
2214
|
-
font-size: 12px;
|
|
2215
|
-
}
|
|
2216
|
-
}
|
|
2217
|
-
|
|
2218
|
-
/* ---- print: one letter sheet ----
|
|
2219
|
-
The rows hold on paper, since they are shorter than the stacked page.
|
|
2220
|
-
The sheet is the page at the writeup's three quarters, the thumbnails
|
|
2221
|
-
are held short with room for their captions, and the badge drops. */
|
|
2222
|
-
@media print {
|
|
2223
|
-
html:has(.atelic-ui .nt-doc) {
|
|
2224
|
-
zoom: 0.74;
|
|
2225
|
-
}
|
|
2226
|
-
.atelic-ui .nt {
|
|
2227
|
-
background: none;
|
|
2228
|
-
}
|
|
2229
|
-
.atelic-ui .nt-doc {
|
|
2230
|
-
max-width: none;
|
|
2231
|
-
padding: 0;
|
|
2232
|
-
font-size: 15px;
|
|
2233
|
-
line-height: 1.45;
|
|
2234
|
-
}
|
|
2235
|
-
.atelic-ui .nt h1 {
|
|
2236
|
-
font-size: 32px;
|
|
2237
|
-
}
|
|
2238
|
-
.atelic-ui .nt-opener {
|
|
2239
|
-
margin-top: 12px;
|
|
2240
|
-
font-size: 16px;
|
|
2241
|
-
}
|
|
2242
|
-
.atelic-ui .nt-lanes,
|
|
2243
|
-
.atelic-ui .nt-start,
|
|
2244
|
-
.atelic-ui .nt-close {
|
|
2245
|
-
margin-top: 16px;
|
|
2246
|
-
padding-top: 14px;
|
|
2247
|
-
}
|
|
2248
|
-
.atelic-ui .nt-lanes {
|
|
2249
|
-
gap: 18px;
|
|
2250
|
-
}
|
|
2251
|
-
.atelic-ui .nt-lane h2 {
|
|
2252
|
-
margin-bottom: 10px;
|
|
2253
|
-
break-after: avoid;
|
|
2254
|
-
}
|
|
2255
|
-
.atelic-ui .nt-findings {
|
|
2256
|
-
gap: 14px;
|
|
2257
|
-
}
|
|
2258
|
-
.atelic-ui .nt-finding .callout {
|
|
2259
|
-
font-size: 14.5px;
|
|
2260
|
-
}
|
|
2261
|
-
.atelic-ui .nt-finding.has-shot {
|
|
2262
|
-
grid-template-columns: minmax(0, 1fr) fit-content(40%);
|
|
2263
|
-
column-gap: 24px;
|
|
2264
|
-
}
|
|
2265
|
-
.atelic-ui .nt-finding.has-shot .op-shot {
|
|
2266
|
-
min-width: 1.6in;
|
|
2267
|
-
}
|
|
2268
|
-
.atelic-ui .nt-finding .op-shot img {
|
|
2269
|
-
max-height: 1.5in;
|
|
2270
|
-
}
|
|
2271
|
-
.atelic-ui .nt-finding .op-shot-open {
|
|
2272
|
-
display: none;
|
|
2273
|
-
}
|
|
2274
|
-
.atelic-ui .nt-finding .op-shot figcaption {
|
|
2275
|
-
font-size: 11.5px;
|
|
2276
|
-
line-height: 1.35;
|
|
2277
|
-
}
|
|
2278
|
-
.atelic-ui .nt-finding .op-shot a {
|
|
2279
|
-
cursor: auto;
|
|
2280
|
-
}
|
|
2281
|
-
.atelic-ui .nt-start ul {
|
|
2282
|
-
gap: 4px;
|
|
2283
|
-
}
|
|
2284
|
-
.atelic-ui .nt-close p {
|
|
2285
|
-
margin-bottom: 10px;
|
|
2286
|
-
}
|
|
2287
|
-
.atelic-ui .nt-close .op-who {
|
|
2288
|
-
margin-top: 14px;
|
|
2289
|
-
}
|
|
2290
|
-
.atelic-ui .nt-finding,
|
|
2291
|
-
.atelic-ui .nt-start,
|
|
2292
|
-
.atelic-ui .nt-close {
|
|
2293
|
-
break-inside: avoid;
|
|
2294
|
-
}
|
|
2295
|
-
}
|
|
2296
|
-
|
|
2297
|
-
/* =================================================================
|
|
2298
|
-
THE READ: the baseline's grades explained by cause (Read.tsx). The
|
|
2299
|
-
writeup's sibling: it sits inside the writeup's own .op root, so the
|
|
2300
|
-
column, the head, the grade chip and its key, the tier heading, the
|
|
2301
|
-
section card, the screen, the sources, the close, and every print
|
|
2302
|
-
rule of the writeup's are its own already. This block adds only what
|
|
2303
|
-
the read has and the writeup does not: the gist table, the three
|
|
2304
|
-
beats of a section, the proof pictures in a row, and the numbered
|
|
2305
|
-
plan. It sets no @page; the writeup's, earlier in this sheet and the
|
|
2306
|
-
later of the two there, sets letter paper for every artifact page.
|
|
2307
|
-
|
|
2308
|
-
Tokens only (theme.css).
|
|
2309
|
-
================================================================= */
|
|
2310
|
-
|
|
2311
|
-
/* Prose links read as links here, where the writeup's are quiet. */
|
|
2312
|
-
.atelic-ui .rd-lede a,
|
|
2313
|
-
.atelic-ui .rd-beat a,
|
|
2314
|
-
.atelic-ui .rd-gist-read a,
|
|
2315
|
-
.atelic-ui .rd-plan a,
|
|
2316
|
-
.atelic-ui .rd-closing a {
|
|
2317
|
-
color: var(--op-accent);
|
|
2318
|
-
text-decoration: underline;
|
|
2319
|
-
text-underline-offset: 2px;
|
|
2320
|
-
text-decoration-thickness: 1px;
|
|
2321
|
-
overflow-wrap: anywhere;
|
|
2322
|
-
}
|
|
2323
|
-
|
|
2324
|
-
/* ---- the gist table: section, grade, and one line, under its tier ---- */
|
|
2325
|
-
.atelic-ui .rd-gist {
|
|
2326
|
-
margin-top: 26px;
|
|
2327
|
-
}
|
|
2328
|
-
.atelic-ui .rd-gist-card {
|
|
2329
|
-
min-width: 0;
|
|
2330
|
-
background: var(--op-card);
|
|
2331
|
-
border: 1px solid var(--op-rule);
|
|
2332
|
-
border-radius: var(--radius-md);
|
|
2333
|
-
box-shadow: var(--shadow-sm);
|
|
2334
|
-
overflow: hidden;
|
|
2335
|
-
}
|
|
2336
|
-
.atelic-ui .rd-gist-table {
|
|
2337
|
-
width: 100%;
|
|
2338
|
-
border-collapse: collapse;
|
|
2339
|
-
font-size: 15px;
|
|
2340
|
-
line-height: 1.45;
|
|
2341
|
-
}
|
|
2342
|
-
.atelic-ui .rd-gist-table thead th {
|
|
2343
|
-
padding: 9px 12px;
|
|
2344
|
-
text-align: left;
|
|
2345
|
-
font-family: var(--font-mono);
|
|
2346
|
-
font-size: 11px;
|
|
2347
|
-
font-weight: 500;
|
|
2348
|
-
letter-spacing: 0.1em;
|
|
2349
|
-
text-transform: uppercase;
|
|
2350
|
-
color: var(--op-ink-faint);
|
|
2351
|
-
border-bottom: 1px solid var(--op-rule);
|
|
2352
|
-
}
|
|
2353
|
-
.atelic-ui .rd-gist-tier th {
|
|
2354
|
-
padding: 7px 12px;
|
|
2355
|
-
background: var(--surface-alt);
|
|
2356
|
-
text-align: left;
|
|
2357
|
-
font-family: var(--font-mono);
|
|
2358
|
-
font-size: 11.5px;
|
|
2359
|
-
font-weight: 500;
|
|
2360
|
-
letter-spacing: 0.1em;
|
|
2361
|
-
text-transform: uppercase;
|
|
2362
|
-
color: var(--op-ink-soft);
|
|
2363
|
-
}
|
|
2364
|
-
.atelic-ui .rd-gist-table tbody tr + tr > * {
|
|
2365
|
-
border-top: 1px solid var(--op-rule);
|
|
2366
|
-
}
|
|
2367
|
-
.atelic-ui .rd-gist-table tbody th[scope="row"],
|
|
2368
|
-
.atelic-ui .rd-gist-table td {
|
|
2369
|
-
padding: 11px 12px;
|
|
2370
|
-
vertical-align: top;
|
|
2371
|
-
text-align: left;
|
|
2372
|
-
}
|
|
2373
|
-
.atelic-ui .rd-gist-table .rd-gist-section {
|
|
2374
|
-
font-weight: 650;
|
|
2375
|
-
letter-spacing: -0.01em;
|
|
2376
|
-
width: 30%;
|
|
2377
|
-
}
|
|
2378
|
-
.atelic-ui .rd-gist-table tbody .rd-gist-section a:hover {
|
|
2379
|
-
color: var(--op-accent);
|
|
2380
|
-
}
|
|
2381
|
-
.atelic-ui .rd-gist-table .rd-gist-grade {
|
|
2382
|
-
width: 1%;
|
|
2383
|
-
white-space: nowrap;
|
|
2384
|
-
text-align: center;
|
|
2385
|
-
}
|
|
2386
|
-
.atelic-ui .rd-gist-table td.rd-gist-read {
|
|
2387
|
-
color: var(--op-ink-soft);
|
|
2388
|
-
text-wrap: pretty;
|
|
2389
|
-
min-width: 0;
|
|
2390
|
-
}
|
|
2391
|
-
|
|
2392
|
-
/* ---- a section: the trade name over the question, then three beats ---- */
|
|
2393
|
-
.atelic-ui .rd-name {
|
|
2394
|
-
margin: 0 0 4px;
|
|
2395
|
-
font-family: var(--font-mono);
|
|
2396
|
-
font-size: 11.5px;
|
|
2397
|
-
letter-spacing: 0.1em;
|
|
2398
|
-
text-transform: uppercase;
|
|
2399
|
-
color: var(--op-ink-faint);
|
|
2400
|
-
}
|
|
2401
|
-
.atelic-ui .rd-grade .op-grade {
|
|
2402
|
-
width: 42px;
|
|
2403
|
-
height: 42px;
|
|
2404
|
-
border-radius: 12px;
|
|
2405
|
-
font-size: 21px;
|
|
2406
|
-
}
|
|
2407
|
-
.atelic-ui .rd-beat {
|
|
2408
|
-
margin-top: 16px;
|
|
2409
|
-
min-width: 0;
|
|
2410
|
-
}
|
|
2411
|
-
.atelic-ui .rd-beat h4 {
|
|
2412
|
-
margin: 0 0 6px;
|
|
2413
|
-
font-family: var(--font-mono);
|
|
2414
|
-
font-size: 11.5px;
|
|
2415
|
-
font-weight: 500;
|
|
2416
|
-
letter-spacing: 0.1em;
|
|
2417
|
-
text-transform: uppercase;
|
|
2418
|
-
color: var(--op-ink-faint);
|
|
2419
|
-
}
|
|
2420
|
-
.atelic-ui .rd-beat p {
|
|
2421
|
-
margin: 0 0 10px;
|
|
2422
|
-
max-width: 68ch;
|
|
2423
|
-
text-wrap: pretty;
|
|
2424
|
-
}
|
|
2425
|
-
.atelic-ui .rd-beat p:last-child {
|
|
2426
|
-
margin-bottom: 0;
|
|
2427
|
-
}
|
|
2428
|
-
.atelic-ui .rd-examples {
|
|
2429
|
-
list-style: disc;
|
|
2430
|
-
margin: 8px 0 0;
|
|
2431
|
-
padding-left: 1.2em;
|
|
2432
|
-
max-width: 68ch;
|
|
2433
|
-
color: var(--op-ink-soft);
|
|
2434
|
-
}
|
|
2435
|
-
.atelic-ui .rd-examples li + li {
|
|
2436
|
-
margin-top: 4px;
|
|
2437
|
-
}
|
|
2438
|
-
/* Why is one sentence, set apart: a tinted panel with the accent's rule. */
|
|
2439
|
-
.atelic-ui .rd-why {
|
|
2440
|
-
padding: 12px 14px;
|
|
2441
|
-
border-left: 3px solid var(--op-accent);
|
|
2442
|
-
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
|
2443
|
-
background: var(--surface-alt);
|
|
2444
|
-
}
|
|
2445
|
-
.atelic-ui .rd-why p {
|
|
2446
|
-
font-size: 16.5px;
|
|
2447
|
-
font-weight: 550;
|
|
2448
|
-
line-height: 1.45;
|
|
2449
|
-
color: var(--op-ink);
|
|
2450
|
-
}
|
|
2451
|
-
/* The proof pictures sit in a row at one size, a search capture per
|
|
2452
|
-
market; a phone stacks them. */
|
|
2453
|
-
.atelic-ui .rd-shots {
|
|
2454
|
-
display: grid;
|
|
2455
|
-
grid-template-columns: minmax(0, 1fr);
|
|
2456
|
-
gap: 14px;
|
|
2457
|
-
margin-top: 14px;
|
|
2458
|
-
}
|
|
2459
|
-
|
|
2460
|
-
/* ---- the plan: the steps in order, numbered ---- */
|
|
2461
|
-
.atelic-ui .rd-plan {
|
|
2462
|
-
margin-top: 34px;
|
|
2463
|
-
scroll-margin-top: calc(var(--nav-height) + 16px);
|
|
2464
|
-
}
|
|
2465
|
-
.atelic-ui .rd-plan h2 {
|
|
2466
|
-
font-size: 27px;
|
|
2467
|
-
font-weight: 650;
|
|
2468
|
-
letter-spacing: -0.025em;
|
|
2469
|
-
line-height: 1.1;
|
|
2470
|
-
margin: 0;
|
|
2471
|
-
color: var(--op-ink);
|
|
2472
|
-
}
|
|
2473
|
-
.atelic-ui .rd-plan-lead {
|
|
2474
|
-
margin: 6px 0 0;
|
|
2475
|
-
font-size: 16.5px;
|
|
2476
|
-
color: var(--op-ink-soft);
|
|
2477
|
-
}
|
|
2478
|
-
.atelic-ui .rd-steps {
|
|
2479
|
-
list-style: none;
|
|
2480
|
-
counter-reset: rd-step;
|
|
2481
|
-
margin: 12px 0 0;
|
|
2482
|
-
padding: 0;
|
|
2483
|
-
background: var(--op-card);
|
|
2484
|
-
border: 1px solid var(--op-rule);
|
|
2485
|
-
border-radius: var(--radius-md);
|
|
2486
|
-
box-shadow: var(--shadow-sm);
|
|
2487
|
-
}
|
|
2488
|
-
.atelic-ui .rd-step {
|
|
2489
|
-
counter-increment: rd-step;
|
|
2490
|
-
display: grid;
|
|
2491
|
-
grid-template-columns: auto minmax(0, 1fr);
|
|
2492
|
-
column-gap: 12px;
|
|
2493
|
-
padding: 14px 16px;
|
|
2494
|
-
}
|
|
2495
|
-
.atelic-ui .rd-step + .rd-step {
|
|
2496
|
-
border-top: 1px solid var(--op-rule);
|
|
2497
|
-
}
|
|
2498
|
-
.atelic-ui .rd-step::before {
|
|
2499
|
-
content: counter(rd-step);
|
|
2500
|
-
display: inline-grid;
|
|
2501
|
-
place-items: center;
|
|
2502
|
-
width: 28px;
|
|
2503
|
-
height: 28px;
|
|
2504
|
-
border: 1.5px solid var(--op-accent);
|
|
2505
|
-
border-radius: 999px;
|
|
2506
|
-
color: var(--op-accent);
|
|
2507
|
-
font-size: 14px;
|
|
2508
|
-
font-weight: 700;
|
|
2509
|
-
line-height: 1;
|
|
2510
|
-
}
|
|
2511
|
-
.atelic-ui .rd-step p {
|
|
2512
|
-
margin: 3px 0 0;
|
|
2513
|
-
color: var(--op-ink-soft);
|
|
2514
|
-
text-wrap: pretty;
|
|
2515
|
-
}
|
|
2516
|
-
.atelic-ui .rd-step-title {
|
|
2517
|
-
font-weight: 650;
|
|
2518
|
-
color: var(--op-ink);
|
|
2519
|
-
}
|
|
2520
|
-
.atelic-ui .rd-step-who {
|
|
2521
|
-
display: inline-block;
|
|
2522
|
-
margin-left: 2px;
|
|
2523
|
-
padding: 1px 8px;
|
|
2524
|
-
border: 1px solid var(--neutral-200);
|
|
2525
|
-
border-radius: 999px;
|
|
2526
|
-
font-family: var(--font-mono);
|
|
2527
|
-
font-size: 11px;
|
|
2528
|
-
letter-spacing: 0.06em;
|
|
2529
|
-
text-transform: uppercase;
|
|
2530
|
-
vertical-align: 0.15em;
|
|
2531
|
-
color: var(--op-ink-soft);
|
|
2532
|
-
}
|
|
2533
|
-
|
|
2534
|
-
/* ---- the close: one line, then the sign off under its rule ---- */
|
|
2535
|
-
.atelic-ui .rd-closing {
|
|
2536
|
-
margin: 34px 0 0;
|
|
2537
|
-
max-width: 62ch;
|
|
2538
|
-
font-size: 17px;
|
|
2539
|
-
line-height: 1.5;
|
|
2540
|
-
color: var(--op-ink);
|
|
2541
|
-
}
|
|
2542
|
-
|
|
2543
|
-
/* ---- wide and on paper: the pictures beside each other ---- */
|
|
2544
|
-
@media print, (min-width: 721px) {
|
|
2545
|
-
.atelic-ui .rd-gist-table tbody th[scope="row"],
|
|
2546
|
-
.atelic-ui .rd-gist-table td,
|
|
2547
|
-
.atelic-ui .rd-gist-table thead th,
|
|
2548
|
-
.atelic-ui .rd-gist-tier th {
|
|
2549
|
-
padding-left: 20px;
|
|
2550
|
-
padding-right: 16px;
|
|
2551
|
-
}
|
|
2552
|
-
.atelic-ui .rd-shots[data-count="2"] {
|
|
2553
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
2554
|
-
}
|
|
2555
|
-
.atelic-ui .rd-shots[data-count="3"] {
|
|
2556
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2557
|
-
}
|
|
2558
|
-
}
|
|
2559
|
-
|
|
2560
|
-
/* ---- print: the writeup's rules carry the page; these hold the read's
|
|
2561
|
-
own blocks whole ---- */
|
|
2562
|
-
@media print {
|
|
2563
|
-
.atelic-ui .rd-gist-card,
|
|
2564
|
-
.atelic-ui .rd-steps {
|
|
2565
|
-
box-shadow: none;
|
|
2566
|
-
border-color: var(--neutral-200);
|
|
2567
|
-
}
|
|
2568
|
-
.atelic-ui .rd-gist-table tr,
|
|
2569
|
-
.atelic-ui .rd-closing,
|
|
2570
|
-
.atelic-ui .rd-why,
|
|
2571
|
-
.atelic-ui .rd-step,
|
|
2572
|
-
.atelic-ui .rd-close,
|
|
2573
|
-
.atelic-ui .rd-shots .op-shot {
|
|
2574
|
-
break-inside: avoid;
|
|
2575
|
-
}
|
|
2576
|
-
.atelic-ui .rd-beat h4,
|
|
2577
|
-
.atelic-ui .rd-plan h2 {
|
|
2578
|
-
break-after: avoid;
|
|
2579
|
-
}
|
|
2580
170
|
}
|
|
2581
171
|
}
|