@anthusai/papyrus 1.0.0-next.2 → 1.0.0-next.3

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.
Files changed (42) hide show
  1. package/amplify/data/resource.js +26 -0
  2. package/amplify/data/resource.ts +30 -0
  3. package/amplify/data/schema.js +26 -0
  4. package/amplify/data/schema.ts +30 -0
  5. package/amplify/functions/content-actions/handler.py +107 -0
  6. package/amplify/functions/content-actions/requirements.txt +4 -0
  7. package/amplify/functions/content-actions/resource.js +40 -0
  8. package/amplify/functions/content-actions/resource.ts +54 -0
  9. package/amplify/functions/shared/python-bundle.js +17 -2
  10. package/amplify/functions/shared/python-bundle.ts +23 -2
  11. package/amplify/site-backend.js +10 -0
  12. package/amplify/site-backend.ts +15 -0
  13. package/app/[year]/[month]/[day]/[articleSlug]/page.tsx +2 -2
  14. package/app/globals.css +1 -4
  15. package/app/layout.tsx +4 -12
  16. package/components/news-desk-page.tsx +1 -4
  17. package/lib/content-actions-client.ts +98 -0
  18. package/lib/empty-theme.css +1 -0
  19. package/lib/layout-scenarios.ts +8 -8
  20. package/lib/site-brand-tenant.ts +3 -22
  21. package/lib/site-brand.ts +44 -42
  22. package/middleware.ts +10 -35
  23. package/package.json +2 -1
  24. package/renderers/pretext/article-page.tsx +1 -6
  25. package/renderers/pretext/presentation-shell.tsx +2 -9
  26. package/routes.manifest.json +1 -1
  27. package/src/with-papyrus.mjs +15 -2
  28. package/publications/anth_us/brand.ts +0 -68
  29. package/publications/anth_us/theme.css +0 -66
  30. package/publications/pilobol_us/brand.ts +0 -37
  31. package/publications/pilobol_us/theme.css +0 -140
  32. package/publications/threat_intelligence/blog-defense/graph.ts +0 -636
  33. package/publications/threat_intelligence/blog-defense/layout.ts +0 -934
  34. package/publications/threat_intelligence/blog-defense/page-background.tsx +0 -590
  35. package/publications/threat_intelligence/brand.ts +0 -40
  36. package/publications/threat_intelligence/pictograms/art.tsx +0 -608
  37. package/publications/threat_intelligence/pictograms/figure.tsx +0 -82
  38. package/publications/threat_intelligence/pictograms/registry.ts +0 -30
  39. package/publications/threat_intelligence/pictograms/system.tsx +0 -305
  40. package/publications/threat_intelligence/seed/seed-edition-content.json +0 -629
  41. package/publications/threat_intelligence/theme.css +0 -1440
  42. /package/{publications/papyrus/theme.css → app/papyrus-theme.css} +0 -0
@@ -1,1440 +0,0 @@
1
- /* Threat Intelligence publication theme tokens and brand styling. */
2
- /* Extracted from app/globals.css to keep Papyrus framework CSS publication-agnostic. */
3
-
4
- /* Shared --ti-* tokens (were scattered in :root, @media dark, .dark-theme blocks) */
5
- :root {
6
- --ti-alarm-red: var(--tomato-11);
7
- --ti-section-rule: var(--ti-alarm-red);
8
- --ti-footer-control: var(--slate-11);
9
- --ti-footer-control-selected: var(--slate-12);
10
- }
11
-
12
- /* Tailwind theme bridge for TI tokens */
13
- :root {
14
- --color-ti-section-rule: var(--ti-section-rule);
15
- --color-ti-footer-control: var(--ti-footer-control);
16
- --color-ti-footer-control-selected: var(--ti-footer-control-selected);
17
- }
18
-
19
- @media (prefers-color-scheme: dark) {
20
- :root:not([data-papyrus-theme="light"]):not(.light-theme) {
21
- --ti-alarm-red: var(--tomato-9);
22
- --ti-pictogram-edge: var(--slate-6);
23
- --ti-pictogram-node: var(--slate-5);
24
- --ti-pictogram-throb: var(--tomato-8);
25
- --ti-pictogram-core-glow: var(--ti-alarm-red);
26
- --ti-pictogram-compromised: var(--ti-alarm-red);
27
- --ti-pictogram-compromised-stroke: var(--sand-2);
28
- }
29
- }
30
-
31
- :root.dark-theme,
32
- :root[data-papyrus-theme="dark"] {
33
- --ti-alarm-red: var(--tomato-9);
34
- }
35
-
36
- /* Main TI brand block (was lines 10139-11541 of globals.css) */
37
-
38
- :root[data-site-brand="threat-intelligence"] {
39
- color-scheme: light;
40
- --background: var(--sand-2);
41
- --foreground: var(--sand-11);
42
- --foreground-strong: var(--sand-12);
43
- --foreground-muted: var(--sand-10);
44
- --card: var(--sand-1);
45
- --card-foreground: var(--sand-11);
46
- --popover: var(--sand-1);
47
- --popover-foreground: var(--sand-11);
48
- --primary: var(--sand-12);
49
- --primary-foreground: var(--sand-1);
50
- --secondary: var(--sand-3);
51
- --secondary-foreground: var(--sand-11);
52
- --muted: var(--sand-3);
53
- --muted-foreground: var(--sand-10);
54
- --accent: var(--sand-4);
55
- --accent-foreground: var(--sand-11);
56
- --border: var(--sand-6);
57
- --input: var(--sand-6);
58
- --ring: var(--sand-8);
59
- --surface: var(--sand-1);
60
- --surface-foreground: var(--sand-11);
61
- --danger: var(--tomato-9);
62
- --danger-foreground: var(--sand-1);
63
- --ti-alarm-red: var(--tomato-11);
64
- --ti-pictogram-edge: var(--slate-8);
65
- --ti-pictogram-node: var(--slate-8);
66
- --ti-pictogram-muted: var(--slate-6);
67
- --ti-pictogram-throb: var(--tomato-8);
68
- --ti-pictogram-core-glow: var(--ti-alarm-red);
69
- --ti-pictogram-compromised: var(--ti-alarm-red);
70
- --ti-pictogram-compromised-stroke: var(--sand-1);
71
- --ti-pictogram-accent-glow: rgb(234 88 12 / 0.18);
72
- --ti-cta-background: var(--ti-alarm-red);
73
- --ti-cta-background-hover: var(--ti-alarm-red);
74
- --ti-cta-foreground: var(--danger-foreground);
75
- --ti-neutral-button-background: var(--ti-headline-color);
76
- --ti-section-rule: var(--ti-alarm-red);
77
- --ti-footer-control: var(--sand-11);
78
- --ti-footer-control-selected: var(--sand-12);
79
- --ti-rhythm: 7px;
80
- --ti-copy-font-size: 18px;
81
- --ti-copy-line-height: calc(var(--ti-rhythm) * 4);
82
- --ti-meta-font-size: 12px;
83
- --ti-meta-line-height: calc(var(--ti-rhythm) * 2);
84
- --ti-meta-letter-spacing: 0.09em;
85
- --ti-deck-font-size: clamp(18px, 1.35vw, 20px);
86
- --ti-deck-line-height: var(--ti-copy-line-height);
87
- --ti-secondary-headline-line-box: calc(var(--ti-rhythm) * 6);
88
- --ti-secondary-headline-font-size: clamp(34px, 2.65vw, 42px);
89
- --ti-lead-headline-line-box: calc(var(--ti-rhythm) * 8);
90
- --ti-lead-headline-font-size: clamp(42px, 4.2vw, 56px);
91
- --ti-section-band-height: var(--ti-secondary-headline-line-box);
92
- --ti-section-label-scale: 1.34;
93
- --ti-section-label-scale-trimmed: 1.48;
94
- --ti-masthead-word-line-box: clamp(calc(var(--ti-rhythm) * 8), 7.1vw, calc(var(--ti-rhythm) * 13));
95
- --ti-masthead-font-size: calc(var(--ti-masthead-word-line-box) * 1.42);
96
- --ti-stack-gap: var(--ti-rhythm);
97
- --ti-section-nav-gap: var(--ti-rhythm);
98
- --ti-section-content-gap: calc(var(--ti-rhythm) * 7);
99
- --ti-section-stack-gap: calc(var(--ti-rhythm) * 12);
100
- --ti-footer-card-min-height: calc(var(--ti-rhythm) * 20);
101
- --ti-headline-color: var(--sand-12);
102
- --ti-body-color: var(--sand-11);
103
- --ti-secondary-color: var(--sand-10);
104
- --ti-panel-surface: var(--sand-1);
105
- --ti-panel-background: var(--sand-2);
106
- --ink-rgb: 99 99 94;
107
- --ink-solid-rgb: 33 32 28;
108
- --ink-display-alpha: 0.92;
109
- --paper: var(--background);
110
- --paper-rgb: 249 249 248;
111
- --paper-deep: var(--sand-3);
112
- --empty-bg: var(--sand-3);
113
- --substrate-rgb: 242 242 240;
114
- --paper-grain-alpha: 0;
115
- --paper-grain-highlight-alpha: 0;
116
- --paper-fiber-alpha: 0;
117
- --paper-mottle-light-alpha: 0;
118
- --paper-mottle-shadow-alpha: 0;
119
- --paper-edge-left-alpha: 0;
120
- --paper-edge-right-alpha: 0;
121
- --paper-edge-right-highlight-alpha: 0;
122
- --paper-edge-top-alpha: 0;
123
- --paper-edge-bottom-alpha: 0;
124
- --paper-background: var(--background);
125
- --paper-background-size: 100% 100%;
126
- --paper-page-background: var(--paper-background);
127
- --paper-page-background-size: 100% 100%;
128
- --paper-drop-shadow: 0 18px 44px -34px rgb(15 23 42 / 0.38);
129
- --site-body-font:
130
- var(--font-sans), "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
131
- --site-display-font:
132
- var(--font-sans), "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
133
- --site-ui-font:
134
- var(--font-sans), "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
135
- }
136
-
137
- @media (prefers-color-scheme: dark) {
138
- :root[data-site-brand="threat-intelligence"]:not([data-papyrus-theme="light"]):not(.light-theme) {
139
- color-scheme: dark;
140
- --background: var(--sand-2);
141
- --foreground: var(--sand-11);
142
- --foreground-strong: var(--sand-12);
143
- --foreground-muted: var(--sand-10);
144
- --card: var(--sand-1);
145
- --card-foreground: var(--sand-11);
146
- --popover: var(--sand-1);
147
- --popover-foreground: var(--sand-11);
148
- --primary: var(--sand-12);
149
- --primary-foreground: var(--sand-1);
150
- --secondary: var(--sand-3);
151
- --secondary-foreground: var(--sand-11);
152
- --muted: var(--sand-3);
153
- --muted-foreground: var(--sand-10);
154
- --accent: var(--sand-4);
155
- --accent-foreground: var(--sand-11);
156
- --border: var(--sand-6);
157
- --input: var(--sand-6);
158
- --ring: var(--sand-8);
159
- --surface: var(--sand-1);
160
- --surface-foreground: var(--sand-11);
161
- --destructive-foreground: var(--sand-12);
162
- --danger-foreground: var(--destructive-foreground);
163
- --ti-alarm-red: var(--tomato-9);
164
- --ti-pictogram-edge: var(--slate-6);
165
- --ti-pictogram-node: var(--slate-5);
166
- --ti-pictogram-muted: var(--slate-7);
167
- --ti-pictogram-throb: var(--tomato-8);
168
- --ti-pictogram-core-glow: var(--ti-alarm-red);
169
- --ti-pictogram-compromised: var(--ti-alarm-red);
170
- --ti-pictogram-compromised-stroke: var(--sand-2);
171
- --ti-pictogram-accent-glow: rgb(251 146 60 / 0.2);
172
- --ti-cta-background: var(--tomato-7);
173
- --ti-cta-background-hover: var(--tomato-6);
174
- --ti-cta-foreground: var(--sand-12);
175
- --ti-neutral-button-background: var(--tomato-7);
176
- --ti-headline-color: var(--sand-12);
177
- --ti-body-color: var(--sand-11);
178
- --ti-secondary-color: var(--sand-10);
179
- --ti-panel-surface: var(--sand-1);
180
- --ti-panel-background: var(--sand-2);
181
- --ti-footer-control: var(--sand-11);
182
- --ti-footer-control-selected: var(--ti-cta-background);
183
- --ink-rgb: 181 179 173;
184
- --ink-solid-rgb: 238 238 236;
185
- --ink-display-alpha: 0.96;
186
- --paper: var(--background);
187
- --paper-rgb: 25 25 24;
188
- --paper-deep: var(--sand-3);
189
- --empty-bg: var(--sand-3);
190
- --substrate-rgb: 17 17 16;
191
- --paper-background: var(--background);
192
- --paper-page-background: var(--paper-background);
193
- --paper-drop-shadow: 0 22px 46px -28px rgb(0 0 0 / 0.86);
194
- }
195
- }
196
-
197
- :root.dark-theme[data-site-brand="threat-intelligence"],
198
- :root[data-site-brand="threat-intelligence"][data-papyrus-theme="dark"] {
199
- color-scheme: dark;
200
- --background: var(--sand-2);
201
- --foreground: var(--sand-11);
202
- --foreground-strong: var(--sand-12);
203
- --foreground-muted: var(--sand-10);
204
- --card: var(--sand-1);
205
- --card-foreground: var(--sand-11);
206
- --popover: var(--sand-1);
207
- --popover-foreground: var(--sand-11);
208
- --primary: var(--sand-12);
209
- --primary-foreground: var(--sand-1);
210
- --secondary: var(--sand-3);
211
- --secondary-foreground: var(--sand-11);
212
- --muted: var(--sand-3);
213
- --muted-foreground: var(--sand-10);
214
- --accent: var(--sand-4);
215
- --accent-foreground: var(--sand-11);
216
- --border: var(--sand-6);
217
- --input: var(--sand-6);
218
- --ring: var(--sand-8);
219
- --surface: var(--sand-1);
220
- --surface-foreground: var(--sand-11);
221
- --destructive-foreground: var(--sand-12);
222
- --danger-foreground: var(--destructive-foreground);
223
- --ti-alarm-red: var(--tomato-9);
224
- --ti-pictogram-edge: var(--slate-6);
225
- --ti-pictogram-node: var(--slate-5);
226
- --ti-pictogram-muted: var(--slate-7);
227
- --ti-pictogram-throb: var(--tomato-8);
228
- --ti-pictogram-core-glow: var(--ti-alarm-red);
229
- --ti-pictogram-compromised: var(--ti-alarm-red);
230
- --ti-pictogram-compromised-stroke: var(--sand-2);
231
- --ti-pictogram-accent-glow: rgb(251 146 60 / 0.2);
232
- --ti-cta-background: var(--tomato-7);
233
- --ti-cta-background-hover: var(--tomato-6);
234
- --ti-cta-foreground: var(--sand-12);
235
- --ti-neutral-button-background: var(--tomato-7);
236
- --ti-headline-color: var(--sand-12);
237
- --ti-body-color: var(--sand-11);
238
- --ti-secondary-color: var(--sand-10);
239
- --ti-panel-surface: var(--sand-1);
240
- --ti-panel-background: var(--sand-2);
241
- --ti-footer-control: var(--sand-11);
242
- --ti-footer-control-selected: var(--ti-cta-background);
243
- --ink-rgb: 181 179 173;
244
- --ink-solid-rgb: 238 238 236;
245
- --ink-display-alpha: 0.96;
246
- --paper: var(--background);
247
- --paper-rgb: 25 25 24;
248
- --paper-deep: var(--sand-3);
249
- --empty-bg: var(--sand-3);
250
- --substrate-rgb: 17 17 16;
251
- --paper-background: var(--background);
252
- --paper-page-background: var(--paper-background);
253
- --paper-drop-shadow: 0 22px 46px -28px rgb(0 0 0 / 0.86);
254
- }
255
-
256
- :root[data-site-brand="threat-intelligence"] .paper-page,
257
- :root[data-site-brand="threat-intelligence"] .site-shell,
258
- :root[data-site-brand="threat-intelligence"] .presentation-page,
259
- :root[data-site-brand="threat-intelligence"] .article-page,
260
- :root[data-site-brand="threat-intelligence"] .settings-page {
261
- font-family: var(--site-body-font);
262
- }
263
-
264
- :root[data-site-brand="threat-intelligence"] body {
265
- --ti-body-page-padding-x: clamp(18px, 4vw, 56px);
266
- --ti-blog-rail-max-width: 1180px;
267
- --ti-body-rail-width: min(
268
- calc(100vw - (var(--ti-body-page-padding-x) * 2)),
269
- var(--ti-blog-rail-max-width),
270
- calc(var(--ti-masthead-font-size) * 9.55)
271
- );
272
- --ti-body-rail-margin: max(0px, calc((100vw - var(--ti-body-rail-width)) * 0.5));
273
- --ti-body-background-mark-size: clamp(300px, 33vw, 470px);
274
- --ti-body-background-mark-right: calc(var(--ti-body-rail-margin) - (var(--ti-body-background-mark-size) * 0.3));
275
- --ti-body-background-mark-top: clamp(-180px, -9vw, -112px);
276
-
277
- background: var(--background);
278
- overflow-x: hidden;
279
- overflow-x: clip;
280
- overflow-y: visible;
281
- position: relative;
282
- }
283
-
284
- :root[data-site-brand="threat-intelligence"] body:has(.presentation-page--blog)::before {
285
- content: none;
286
- display: none;
287
- }
288
-
289
- :root[data-site-brand="threat-intelligence"] body:has(.presentation-page--blog) .papyrus-console-page {
290
- position: relative;
291
- z-index: 1;
292
- }
293
-
294
- :root[data-site-brand="threat-intelligence"] .masthead h1,
295
- :root[data-site-brand="threat-intelligence"] .presentation-header h1,
296
- :root[data-site-brand="threat-intelligence"] .presentation-item__header h2,
297
- :root[data-site-brand="threat-intelligence"] .article-page h1 {
298
- font-family: var(--site-display-font);
299
- letter-spacing: 0;
300
- }
301
-
302
- :root[data-site-brand="threat-intelligence"] .masthead h1 {
303
- font-size: clamp(2rem, 4.9vw, 4rem);
304
- line-height: 1.06;
305
- text-transform: uppercase;
306
- }
307
-
308
- :root[data-site-brand="threat-intelligence"] .masthead::before,
309
- :root[data-site-brand="threat-intelligence"] .masthead::after {
310
- display: none;
311
- }
312
-
313
- :root[data-site-brand="threat-intelligence"] .masthead__rule,
314
- :root[data-site-brand="threat-intelligence"] .masthead__meta::after {
315
- border-top-width: 1px;
316
- }
317
-
318
- :root[data-site-brand="threat-intelligence"] .presentation-header p,
319
- :root[data-site-brand="threat-intelligence"] .presentation-section-header p,
320
- :root[data-site-brand="threat-intelligence"] .presentation-item__header p,
321
- :root[data-site-brand="threat-intelligence"] .presentation-header span,
322
- :root[data-site-brand="threat-intelligence"] .presentation-section-header span,
323
- :root[data-site-brand="threat-intelligence"] .presentation-item__header span {
324
- font-family: var(--site-ui-font);
325
- }
326
-
327
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header {
328
- --threat-intelligence-masthead-rhythm: var(--ti-stack-gap);
329
-
330
- align-content: center;
331
- align-items: end;
332
- border-bottom: 0;
333
- border-top: 0;
334
- display: grid;
335
- gap: 0;
336
- grid-template-columns: minmax(0, 0.77fr) minmax(160px, 0.23fr);
337
- margin-left: auto;
338
- margin-right: auto;
339
- margin-bottom: calc(var(--ti-rhythm) * 2);
340
- max-width: var(--ti-blog-rail-width);
341
- min-height: clamp(196px, 22vw, 308px);
342
- padding: clamp(18px, 3vw, 40px) 0 clamp(18px, 2.8vw, 32px);
343
- position: relative;
344
- width: var(--ti-blog-rail-width);
345
- }
346
-
347
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__copy-stack {
348
- align-self: end;
349
- display: grid;
350
- gap: var(--threat-intelligence-masthead-rhythm);
351
- grid-column: 1;
352
- grid-row: 1;
353
- max-width: min(100%, 58rem);
354
- min-width: 0;
355
- width: min(100%, 58rem);
356
- }
357
-
358
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header h1 {
359
- display: contents;
360
- margin: 0;
361
- }
362
-
363
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header h1 span {
364
- color: var(--ti-alarm-red);
365
- display: block;
366
- font-family: var(--site-display-font);
367
- font-size: var(--ti-masthead-font-size);
368
- font-style: normal;
369
- font-weight: 900;
370
- letter-spacing: 0;
371
- line-height: var(--ti-masthead-word-line-box);
372
- max-width: 100%;
373
- overflow-wrap: normal;
374
- text-wrap: balance;
375
- text-transform: uppercase;
376
- width: 100%;
377
- }
378
-
379
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__meta {
380
- align-items: baseline;
381
- border-left: 0;
382
- display: flex;
383
- flex-direction: row;
384
- flex-wrap: wrap;
385
- gap: var(--ti-rhythm) calc(var(--ti-rhythm) * 3);
386
- justify-content: space-between;
387
- margin-top: 0;
388
- max-width: 100%;
389
- min-width: 0;
390
- padding-left: 0;
391
- width: 100%;
392
- }
393
-
394
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__date {
395
- align-items: center;
396
- color: var(--ti-headline-color);
397
- display: inline-flex;
398
- font-size: var(--ti-meta-font-size);
399
- font-style: normal;
400
- font-weight: 900;
401
- line-height: var(--ti-meta-line-height);
402
- letter-spacing: var(--ti-meta-letter-spacing);
403
- margin: 0;
404
- text-transform: uppercase;
405
- }
406
-
407
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__subtitle {
408
- align-items: center;
409
- color: var(--ti-headline-color);
410
- display: inline-flex;
411
- font-size: var(--ti-meta-font-size);
412
- font-style: normal;
413
- font-weight: 900;
414
- line-height: var(--ti-meta-line-height);
415
- max-width: 18rem;
416
- letter-spacing: var(--ti-meta-letter-spacing);
417
- text-transform: uppercase;
418
- }
419
-
420
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__tagline {
421
- color: var(--ti-body-color);
422
- display: block;
423
- font-size: var(--ti-deck-font-size);
424
- font-style: normal;
425
- font-weight: 650;
426
- line-height: var(--ti-deck-line-height);
427
- max-width: min(100%, 58rem);
428
- width: 100%;
429
- text-transform: none;
430
- }
431
-
432
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-edition-video {
433
- grid-column: 1 / -1;
434
- margin: 0 auto calc(var(--ti-rhythm) * 6);
435
- max-width: var(--ti-blog-rail-width);
436
- width: var(--ti-blog-rail-width);
437
- }
438
-
439
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-edition-video__figure {
440
- margin: 0;
441
- }
442
-
443
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-edition-video__figure .article-video__player {
444
- border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
445
- border-radius: 0;
446
- max-height: none;
447
- object-fit: contain;
448
- }
449
-
450
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-nav {
451
- border-bottom: 0;
452
- border-top: 0;
453
- gap: var(--ti-section-nav-gap) calc(var(--ti-rhythm) * 3);
454
- margin-left: auto;
455
- margin-right: auto;
456
- margin-bottom: calc(var(--ti-rhythm) * 8);
457
- max-width: var(--ti-blog-rail-width);
458
- padding-bottom: calc(var(--ti-rhythm) * 2);
459
- width: var(--ti-blog-rail-width);
460
- }
461
-
462
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog {
463
- --ti-blog-rail-max-width: 1180px;
464
- --ti-blog-rail-width: min(100%, var(--ti-blog-rail-max-width), calc(var(--ti-masthead-font-size) * 9.55));
465
- --ti-blog-rail-margin: max(0px, calc((100% - var(--ti-blog-rail-width)) * 0.5));
466
-
467
- background: var(--background);
468
- isolation: isolate;
469
- overflow-x: hidden;
470
- overflow-x: clip;
471
- overflow-y: visible;
472
- position: relative;
473
- }
474
-
475
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog > :not(.blog-page-background) {
476
- position: relative;
477
- z-index: 1;
478
- }
479
-
480
- :root[data-site-brand="threat-intelligence"] .blog-page-background {
481
- --ti-pictogram-edge: var(--slate-8);
482
- --ti-pictogram-node: var(--slate-8);
483
- --ti-pictogram-throb: var(--tomato-8);
484
- --ti-pictogram-core-glow: var(--ti-alarm-red);
485
- --ti-pictogram-compromised: var(--ti-alarm-red);
486
- --ti-pictogram-compromised-stroke: var(--sand-1);
487
- height: clamp(340px, 48vw, 760px);
488
- left: 40%;
489
- opacity: 1;
490
- overflow: hidden;
491
- pointer-events: none;
492
- position: absolute;
493
- right: auto;
494
- top: clamp(10px, 1.6vw, 22px);
495
- width: 60%;
496
- z-index: 0;
497
- }
498
-
499
- :root[data-site-brand="threat-intelligence"][data-papyrus-theme="dark"] .blog-page-background {
500
- --ti-pictogram-edge: var(--slate-6);
501
- --ti-pictogram-node: var(--slate-5);
502
- --ti-pictogram-core-glow: var(--ti-alarm-red);
503
- --ti-pictogram-compromised-stroke: var(--sand-2);
504
- }
505
-
506
- @media (prefers-color-scheme: dark) {
507
- :root[data-site-brand="threat-intelligence"]:not([data-papyrus-theme="light"]) .blog-page-background {
508
- --ti-pictogram-edge: var(--slate-6);
509
- --ti-pictogram-node: var(--slate-5);
510
- --ti-pictogram-core-glow: var(--ti-alarm-red);
511
- --ti-pictogram-compromised-stroke: var(--sand-2);
512
- }
513
- }
514
-
515
- :root[data-site-brand="threat-intelligence"] .blog-page-background__svg {
516
- display: block;
517
- height: 100%;
518
- width: 100%;
519
- overflow: visible;
520
- }
521
-
522
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-nav a {
523
- border-bottom: 2px solid transparent;
524
- color: var(--ti-headline-color);
525
- display: inline-flex;
526
- align-items: center;
527
- font-size: var(--ti-meta-font-size);
528
- font-weight: 900;
529
- letter-spacing: var(--ti-meta-letter-spacing);
530
- line-height: var(--ti-meta-line-height);
531
- min-height: var(--ti-copy-line-height);
532
- padding: 0 0 var(--ti-rhythm);
533
- }
534
-
535
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-nav a:hover {
536
- border-bottom-color: var(--ti-alarm-red);
537
- color: var(--ti-headline-color);
538
- text-decoration: none;
539
- }
540
-
541
- :root[data-site-brand="threat-intelligence"] .blog-sections {
542
- gap: var(--ti-section-stack-gap);
543
- max-width: var(--ti-blog-rail-width);
544
- width: var(--ti-blog-rail-width);
545
- }
546
-
547
- :root[data-site-brand="threat-intelligence"] .blog-section {
548
- display: grid;
549
- gap: 0;
550
- max-width: 100%;
551
- min-width: 0;
552
- width: 100%;
553
- }
554
-
555
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header,
556
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item,
557
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__copy {
558
- max-width: 100%;
559
- min-width: 0;
560
- }
561
-
562
- @media (min-width: 1100px) {
563
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) {
564
- column-gap: clamp(28px, 4vw, 52px);
565
- grid-template-columns: repeat(2, minmax(0, 1fr));
566
- }
567
-
568
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-section-header,
569
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="0"] {
570
- grid-column: 1 / -1;
571
- }
572
-
573
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="1"],
574
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="2"] {
575
- align-self: stretch;
576
- grid-template-columns: minmax(0, 1fr);
577
- }
578
-
579
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="1"] .presentation-item__copy,
580
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="2"] .presentation-item__copy {
581
- display: flex;
582
- flex-direction: column;
583
- height: 100%;
584
- }
585
-
586
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="1"] .presentation-item__text-frame,
587
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="2"] .presentation-item__text-frame {
588
- margin-bottom: 1em;
589
- }
590
-
591
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="1"] .presentation-item__cta,
592
- :root[data-site-brand="threat-intelligence"] .blog-section:has(> .presentation-item[data-item-index="2"]) > .presentation-item[data-item-index="2"] .presentation-item__cta {
593
- margin-top: auto;
594
- }
595
- }
596
-
597
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header {
598
- --threat-intelligence-section-rule-height: var(--ti-section-band-height);
599
- --threat-intelligence-section-label-scale: var(--ti-section-label-scale);
600
- --threat-intelligence-section-label-scale-trimmed: var(--ti-section-label-scale-trimmed);
601
- --threat-intelligence-section-gap-x: var(--ti-rhythm);
602
- --threat-intelligence-section-label-pad-x: 2px;
603
-
604
- align-items: center;
605
- border-bottom: 0;
606
- border-top: 0;
607
- display: grid;
608
- gap: calc(var(--ti-rhythm) * 2) var(--threat-intelligence-section-gap-x);
609
- grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
610
- grid-template-rows: var(--threat-intelligence-section-rule-height) auto;
611
- margin-bottom: var(--ti-section-content-gap);
612
- min-height: 0;
613
- padding: 0;
614
- }
615
-
616
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header::before {
617
- background: var(--ti-alarm-red);
618
- content: "";
619
- grid-column: 1;
620
- grid-row: 1;
621
- height: var(--threat-intelligence-section-rule-height);
622
- }
623
-
624
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header::after {
625
- background: var(--ti-alarm-red);
626
- content: "";
627
- grid-column: 3;
628
- grid-row: 1;
629
- height: var(--threat-intelligence-section-rule-height);
630
- }
631
-
632
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header p {
633
- align-items: center;
634
- background: var(--background);
635
- color: var(--ti-headline-color);
636
- display: inline-flex;
637
- font-family: var(--site-display-font);
638
- font-size: calc(var(--threat-intelligence-section-rule-height) * var(--threat-intelligence-section-label-scale));
639
- font-weight: 900;
640
- grid-column: 2;
641
- grid-row: 1;
642
- height: var(--threat-intelligence-section-rule-height);
643
- justify-content: center;
644
- justify-self: center;
645
- letter-spacing: 0;
646
- line-height: 1;
647
- margin: 0;
648
- padding: 0 var(--threat-intelligence-section-label-pad-x);
649
- text-transform: uppercase;
650
- width: max-content;
651
- }
652
-
653
- @supports (text-box-trim: trim-both) {
654
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header p {
655
- font-size: calc(var(--threat-intelligence-section-rule-height) * var(--threat-intelligence-section-label-scale-trimmed));
656
- text-box-edge: cap alphabetic;
657
- text-box-trim: trim-both;
658
- }
659
- }
660
-
661
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header span {
662
- color: var(--ti-body-color);
663
- font-size: var(--ti-copy-font-size);
664
- grid-column: 2;
665
- grid-row: 2;
666
- justify-self: center;
667
- line-height: var(--ti-copy-line-height);
668
- max-width: 46rem;
669
- padding: 0;
670
- }
671
-
672
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item {
673
- border-bottom: 0;
674
- gap: calc(var(--ti-rhythm) * 3) calc(var(--ti-rhythm) * 4);
675
- padding-bottom: calc(var(--ti-rhythm) * 4);
676
- }
677
-
678
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item + .presentation-item {
679
- border-top: calc(var(--ti-rhythm) * 1.5) solid var(--sand-a4);
680
- padding-top: calc(var(--ti-rhythm) * 4);
681
- }
682
-
683
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__video {
684
- grid-column: 1 / -1;
685
- margin: calc(var(--ti-rhythm) * 2) 0 0;
686
- }
687
-
688
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__video-figure {
689
- margin: 0;
690
- }
691
-
692
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__video .article-video__player {
693
- border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
694
- max-height: none;
695
- object-fit: contain;
696
- }
697
-
698
- :root[data-site-brand="threat-intelligence"] .article-page__hero-video {
699
- margin: 0 0 calc(var(--ti-rhythm) * 5);
700
- }
701
-
702
- :root[data-site-brand="threat-intelligence"] .article-page__hero-video .article-video__player {
703
- border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
704
- max-height: none;
705
- object-fit: contain;
706
- }
707
-
708
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog {
709
- grid-template-columns: minmax(0, 1fr);
710
- }
711
-
712
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-has-image="true"] {
713
- grid-template-columns: minmax(0, 0.72fr) minmax(240px, 0.28fr);
714
- }
715
-
716
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"] {
717
- gap: calc(var(--ti-rhythm) * 4) calc(var(--ti-rhythm) * 6);
718
- padding-bottom: calc(var(--ti-rhythm) * 6);
719
- }
720
-
721
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"][data-has-image="true"] {
722
- grid-template-columns: minmax(0, 0.64fr) minmax(320px, 0.36fr);
723
- }
724
-
725
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__header p {
726
- display: none;
727
- }
728
-
729
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__header h2 {
730
- color: var(--ti-headline-color);
731
- font-size: var(--ti-secondary-headline-font-size);
732
- font-weight: 900;
733
- letter-spacing: 0;
734
- line-height: var(--ti-secondary-headline-line-box);
735
- margin-bottom: calc(var(--ti-rhythm) * 2);
736
- overflow-wrap: anywhere;
737
- }
738
-
739
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-role="lead"] .presentation-item__header h2 {
740
- font-size: var(--ti-lead-headline-font-size);
741
- line-height: var(--ti-lead-headline-line-box);
742
- }
743
-
744
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__header span {
745
- color: var(--ti-body-color);
746
- font-size: var(--ti-deck-font-size);
747
- font-weight: 650;
748
- line-height: var(--ti-deck-line-height);
749
- max-width: none;
750
- width: 100%;
751
- }
752
-
753
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__cta {
754
- background: var(--ti-cta-background);
755
- color: var(--ti-cta-foreground);
756
- display: flex;
757
- font-family: var(--site-ui-font);
758
- font-size: var(--ti-meta-font-size);
759
- font-weight: 900;
760
- letter-spacing: var(--ti-meta-letter-spacing);
761
- line-height: var(--ti-meta-line-height);
762
- margin-right: auto;
763
- margin-top: calc(var(--ti-rhythm) * 3);
764
- padding: calc(var(--ti-rhythm) * 1.5) calc(var(--ti-rhythm) * 2.25);
765
- text-transform: uppercase;
766
- width: max-content;
767
- }
768
-
769
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__cta:hover {
770
- background: var(--ti-cta-background-hover);
771
- }
772
-
773
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__image {
774
- align-self: start;
775
- }
776
-
777
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__image img {
778
- aspect-ratio: 16 / 11;
779
- background: var(--background);
780
- border: 1px solid var(--sand-a5);
781
- object-fit: contain;
782
- }
783
-
784
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .pictogram-figure__frame {
785
- aspect-ratio: 16 / 11;
786
- background: var(--background);
787
- border: 1px solid var(--sand-a5);
788
- }
789
-
790
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"] .presentation-item__image img {
791
- aspect-ratio: 1 / 1;
792
- }
793
-
794
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"] .pictogram-figure__frame {
795
- aspect-ratio: 1 / 1;
796
- }
797
-
798
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__text-frame {
799
- max-width: none;
800
- width: 100%;
801
- }
802
-
803
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation {
804
- background: var(--sand-a3);
805
- border: 0;
806
- box-sizing: border-box;
807
- color: var(--ti-body-color);
808
- display: grid;
809
- font-family: var(--site-ui-font);
810
- gap: calc(var(--ti-rhythm) * 4);
811
- grid-template-columns: minmax(0, 1fr);
812
- grid-template-rows: auto auto auto;
813
- height: auto;
814
- margin-left: auto;
815
- margin-right: auto;
816
- margin-top: calc(var(--ti-rhythm) * 14);
817
- max-width: var(--ti-blog-rail-width);
818
- overflow: visible;
819
- padding: calc(var(--ti-rhythm) * 5);
820
- width: var(--ti-blog-rail-width);
821
- }
822
-
823
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__heading {
824
- align-items: center;
825
- align-self: stretch;
826
- background: var(--ti-panel-background);
827
- border-bottom: 0;
828
- display: flex;
829
- flex-direction: row;
830
- gap: calc(var(--ti-rhythm) * 4);
831
- grid-column: 1;
832
- grid-row: 1;
833
- justify-content: space-between;
834
- line-height: var(--ti-copy-line-height);
835
- min-height: 0;
836
- overflow: hidden;
837
- padding: calc(var(--ti-rhythm) * 4) calc(var(--ti-rhythm) * 5) calc(var(--ti-rhythm) * 4) calc(var(--ti-rhythm) * 8);
838
- position: relative;
839
- text-align: left;
840
- }
841
-
842
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__heading::before {
843
- background: var(--ti-alarm-red);
844
- bottom: 0;
845
- content: "";
846
- left: 0;
847
- position: absolute;
848
- top: 0;
849
- width: calc(var(--ti-rhythm) * 3);
850
- }
851
-
852
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__brand {
853
- display: grid;
854
- gap: var(--ti-rhythm);
855
- min-width: 0;
856
- position: relative;
857
- z-index: 1;
858
- }
859
-
860
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__brand-title {
861
- color: var(--ti-alarm-red);
862
- display: block;
863
- font-family: var(--site-display-font);
864
- font-size: var(--ti-secondary-headline-font-size);
865
- font-weight: 900;
866
- letter-spacing: 0;
867
- line-height: var(--ti-secondary-headline-line-box);
868
- max-width: 100%;
869
- text-transform: uppercase;
870
- }
871
-
872
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__brand-subtitle {
873
- color: var(--ti-headline-color);
874
- display: block;
875
- font-size: var(--ti-meta-font-size);
876
- font-weight: 900;
877
- letter-spacing: var(--ti-meta-letter-spacing);
878
- line-height: var(--ti-meta-line-height);
879
- text-transform: uppercase;
880
- }
881
-
882
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__meta {
883
- background: var(--sand-a4);
884
- color: var(--ti-headline-color);
885
- display: inline-flex;
886
- flex: 0 0 auto;
887
- font-size: var(--ti-meta-font-size);
888
- font-weight: 900;
889
- letter-spacing: var(--ti-meta-letter-spacing);
890
- line-height: var(--ti-meta-line-height);
891
- padding: var(--ti-rhythm) calc(var(--ti-rhythm) * 2);
892
- position: relative;
893
- text-transform: uppercase;
894
- z-index: 1;
895
- }
896
-
897
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__sections {
898
- display: grid;
899
- gap: calc(var(--ti-rhythm) * 2);
900
- grid-column: 1;
901
- grid-row: 2;
902
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
903
- grid-template-rows: none;
904
- }
905
-
906
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-link {
907
- align-items: stretch;
908
- background: var(--ti-panel-background);
909
- color: var(--ti-headline-color);
910
- display: grid;
911
- gap: calc(var(--ti-rhythm) * 2);
912
- grid-template-rows: auto minmax(0, 1fr);
913
- height: auto;
914
- line-height: normal;
915
- min-height: calc(var(--ti-rhythm) * 14);
916
- padding: calc(var(--ti-rhythm) * 2.5);
917
- text-decoration: none;
918
- }
919
-
920
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-link:hover {
921
- background: var(--ti-cta-background);
922
- color: var(--ti-cta-foreground);
923
- text-decoration: none;
924
- }
925
-
926
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-name {
927
- color: var(--ti-alarm-red);
928
- font-family: var(--site-ui-font);
929
- font-size: var(--ti-meta-font-size);
930
- font-weight: 860;
931
- letter-spacing: var(--ti-meta-letter-spacing);
932
- line-height: var(--ti-meta-line-height);
933
- }
934
-
935
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-link:hover .front-footer__section-name {
936
- color: inherit;
937
- }
938
-
939
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-title {
940
- color: inherit;
941
- font-family: var(--site-display-font);
942
- font-size: clamp(22px, 1.7vw, 28px);
943
- font-style: normal;
944
- font-weight: 900;
945
- letter-spacing: 0;
946
- line-height: var(--ti-copy-line-height);
947
- min-width: 0;
948
- overflow: hidden;
949
- text-overflow: ellipsis;
950
- white-space: normal;
951
- }
952
-
953
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utilities {
954
- align-items: center;
955
- border-left: 0;
956
- display: flex;
957
- flex-direction: row;
958
- flex-wrap: wrap;
959
- gap: calc(var(--ti-rhythm) * 1.5);
960
- grid-column: 1;
961
- grid-row: 3;
962
- justify-content: flex-start;
963
- min-width: 0;
964
- padding-left: 0;
965
- text-align: left;
966
- }
967
-
968
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utility-link {
969
- background: var(--ti-neutral-button-background);
970
- color: var(--ti-cta-foreground);
971
- display: inline-flex;
972
- font-size: var(--ti-meta-font-size);
973
- font-weight: 900;
974
- height: auto;
975
- letter-spacing: var(--ti-meta-letter-spacing);
976
- line-height: var(--ti-meta-line-height);
977
- padding: calc(var(--ti-rhythm) * 1.5) calc(var(--ti-rhythm) * 2);
978
- text-decoration: none;
979
- text-transform: uppercase;
980
- }
981
-
982
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utility-link:hover {
983
- background: var(--ti-cta-background-hover);
984
- text-decoration: none;
985
- }
986
-
987
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utility-link[aria-disabled="true"] {
988
- background: var(--sand-a5);
989
- color: var(--ti-secondary-color);
990
- }
991
-
992
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control {
993
- background: var(--sand-a4);
994
- border: 1px solid var(--sand-a6);
995
- color: var(--ti-footer-control);
996
- flex: 0 0 auto;
997
- height: calc(var(--ti-rhythm) * 6);
998
- }
999
-
1000
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control .reader-theme-control__button {
1001
- color: inherit;
1002
- height: calc(var(--ti-rhythm) * 6 - 2px);
1003
- width: calc(var(--ti-rhythm) * 6 - 2px);
1004
- }
1005
-
1006
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control .reader-theme-control__button + .reader-theme-control__button {
1007
- border-left: 1px solid var(--sand-a6);
1008
- }
1009
-
1010
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control .reader-theme-control__button:hover {
1011
- background: var(--sand-a4);
1012
- }
1013
-
1014
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control .reader-theme-control__button[data-selected="true"] {
1015
- background: var(--ti-footer-control-selected);
1016
- color: var(--ti-cta-foreground);
1017
- }
1018
-
1019
- @media (max-width: 1024px) {
1020
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header {
1021
- grid-template-columns: 1fr;
1022
- min-height: clamp(210px, 38vw, 300px);
1023
- padding-top: clamp(22px, 5vw, 38px);
1024
- }
1025
-
1026
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header h1 {
1027
- max-width: min(100%, 42rem);
1028
- }
1029
-
1030
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__copy-stack {
1031
- grid-column: 1;
1032
- grid-row: 1;
1033
- max-width: min(85vw, 36rem);
1034
- width: min(85vw, 36rem);
1035
- }
1036
-
1037
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__meta {
1038
- align-items: flex-start;
1039
- border-left: 0;
1040
- border-top: 0;
1041
- flex-direction: column;
1042
- gap: calc(var(--ti-rhythm) * 0.75);
1043
- justify-content: flex-start;
1044
- max-width: min(85vw, 36rem);
1045
- padding-left: 0;
1046
- padding-top: 0;
1047
- width: min(85vw, 36rem);
1048
- }
1049
-
1050
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__subtitle,
1051
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__tagline {
1052
- max-width: min(85vw, 36rem);
1053
- }
1054
-
1055
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__date {
1056
- margin-left: 0;
1057
- }
1058
-
1059
- :root[data-site-brand="threat-intelligence"] .blog-page-background {
1060
- height: clamp(300px, 62vw, 520px);
1061
- left: 44%;
1062
- opacity: 1;
1063
- right: 0;
1064
- top: -16px;
1065
- width: 56%;
1066
- }
1067
-
1068
- :root[data-site-brand="threat-intelligence"] body {
1069
- --ti-body-background-mark-size: clamp(280px, 58vw, 420px);
1070
- --ti-body-background-mark-top: clamp(-92px, -8vw, -42px);
1071
- }
1072
-
1073
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog,
1074
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-has-image="true"],
1075
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"],
1076
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"][data-has-image="true"] {
1077
- grid-template-columns: 1fr;
1078
- }
1079
-
1080
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"] .presentation-item__image img {
1081
- aspect-ratio: 16 / 10;
1082
- }
1083
-
1084
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__image {
1085
- grid-column: 1;
1086
- grid-row: auto;
1087
- }
1088
-
1089
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__header span,
1090
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__text-frame {
1091
- max-width: none;
1092
- width: 100%;
1093
- }
1094
-
1095
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header {
1096
- --threat-intelligence-section-gap-x: var(--ti-rhythm);
1097
-
1098
- grid-template-columns: auto minmax(0, 1fr);
1099
- grid-template-rows: var(--threat-intelligence-section-rule-height) auto;
1100
- }
1101
-
1102
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header::before {
1103
- display: none;
1104
- }
1105
-
1106
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header::after {
1107
- display: block;
1108
- grid-column: 2;
1109
- grid-row: 1;
1110
- }
1111
-
1112
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header p {
1113
- grid-column: 1;
1114
- grid-row: 1;
1115
- justify-self: start;
1116
- }
1117
-
1118
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header span {
1119
- grid-column: 1 / -1;
1120
- grid-row: 2;
1121
- justify-self: start;
1122
- }
1123
-
1124
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation {
1125
- grid-template-columns: 1fr;
1126
- }
1127
-
1128
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__heading,
1129
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__sections,
1130
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utilities {
1131
- grid-column: 1;
1132
- }
1133
-
1134
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__heading {
1135
- align-items: flex-start;
1136
- flex-direction: column;
1137
- grid-row: 1;
1138
- justify-content: space-between;
1139
- min-height: 0;
1140
- }
1141
-
1142
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__sections {
1143
- grid-row: 2;
1144
- }
1145
-
1146
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utilities {
1147
- grid-row: 3;
1148
- }
1149
- }
1150
-
1151
- @media (max-width: 560px) {
1152
- :root[data-site-brand="threat-intelligence"] .presentation-page {
1153
- padding-left: 18px;
1154
- padding-right: 18px;
1155
- }
1156
-
1157
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog {
1158
- --ti-masthead-word-line-box: calc(var(--ti-rhythm) * 7);
1159
- --ti-masthead-font-size: calc(var(--ti-masthead-word-line-box) * 1.06);
1160
- --ti-blog-rail-width: calc(100vw - 36px);
1161
- --ti-blog-rail-margin: 0px;
1162
- }
1163
-
1164
- :root[data-site-brand="threat-intelligence"] body {
1165
- --ti-body-page-padding-x: 18px;
1166
- --ti-masthead-word-line-box: calc(var(--ti-rhythm) * 7);
1167
- --ti-masthead-font-size: calc(var(--ti-masthead-word-line-box) * 1.06);
1168
- --ti-body-rail-width: calc(100vw - 36px);
1169
- --ti-body-rail-margin: 18px;
1170
- --ti-body-background-mark-size: 300px;
1171
- --ti-body-background-mark-top: -72px;
1172
- }
1173
-
1174
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header {
1175
- margin-bottom: calc(var(--ti-rhythm) * 2);
1176
- min-height: 220px;
1177
- padding-bottom: calc(var(--ti-rhythm) * 3);
1178
- }
1179
-
1180
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__copy-stack {
1181
- max-width: 85vw;
1182
- }
1183
-
1184
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header h1 span {
1185
- font-size: min(var(--ti-masthead-font-size), 13vw);
1186
- max-width: 85vw;
1187
- }
1188
-
1189
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-header__meta {
1190
- gap: var(--ti-rhythm) calc(var(--ti-rhythm) * 2);
1191
- max-width: 100%;
1192
- width: 100%;
1193
- }
1194
-
1195
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-nav {
1196
- gap: var(--ti-rhythm) calc(var(--ti-rhythm) * 2);
1197
- margin-bottom: calc(var(--ti-rhythm) * 6);
1198
- padding-bottom: calc(var(--ti-rhythm) * 2);
1199
- }
1200
-
1201
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-nav a {
1202
- font-size: var(--ti-meta-font-size);
1203
- padding-bottom: var(--ti-rhythm);
1204
- }
1205
-
1206
- :root[data-site-brand="threat-intelligence"] .blog-sections {
1207
- gap: calc(var(--ti-rhythm) * 8);
1208
- }
1209
-
1210
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-section-header {
1211
- margin-bottom: calc(var(--ti-rhythm) * 5);
1212
- }
1213
-
1214
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-index="0"] {
1215
- padding-bottom: calc(var(--ti-rhythm) * 5);
1216
- }
1217
-
1218
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item__header h2 {
1219
- font-size: var(--ti-secondary-headline-font-size);
1220
- letter-spacing: 0;
1221
- line-height: var(--ti-secondary-headline-line-box);
1222
- }
1223
-
1224
- :root[data-site-brand="threat-intelligence"] .presentation-page--blog .presentation-item--blog[data-item-role="lead"] .presentation-item__header h2 {
1225
- font-size: var(--ti-lead-headline-font-size);
1226
- line-height: var(--ti-lead-headline-line-box);
1227
- }
1228
-
1229
- :root[data-site-brand="threat-intelligence"] .blog-page-background {
1230
- height: clamp(260px, 72vw, 360px);
1231
- left: auto;
1232
- opacity: 0.9;
1233
- right: 0;
1234
- top: 8px;
1235
- width: min(64%, 300px);
1236
- }
1237
-
1238
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation {
1239
- margin-top: calc(var(--ti-rhythm) * 8);
1240
- padding: calc(var(--ti-rhythm) * 2);
1241
- }
1242
-
1243
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__heading {
1244
- gap: calc(var(--ti-rhythm) * 4);
1245
- padding: calc(var(--ti-rhythm) * 3) calc(var(--ti-rhythm) * 3) calc(var(--ti-rhythm) * 3) calc(var(--ti-rhythm) * 6);
1246
- }
1247
-
1248
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__sections {
1249
- grid-template-columns: 1fr;
1250
- }
1251
-
1252
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__section-link {
1253
- min-height: 0;
1254
- }
1255
-
1256
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utilities {
1257
- align-items: stretch;
1258
- flex-direction: column;
1259
- }
1260
-
1261
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__utility-link {
1262
- justify-content: center;
1263
- width: 100%;
1264
- }
1265
-
1266
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control {
1267
- width: 100%;
1268
- }
1269
-
1270
- :root[data-site-brand="threat-intelligence"] :is(.presentation-page--blog, .article-shell--edition) .front-footer--presentation .front-footer__theme-control .reader-theme-control__button {
1271
- flex: 1 1 0;
1272
- width: auto;
1273
- }
1274
- }
1275
-
1276
- @media (max-width: 1000px) {
1277
- :root[data-site-brand="threat-intelligence"] .blog-page-background {
1278
- left: auto;
1279
- right: 0;
1280
- top: clamp(6px, 1.1vw, 14px);
1281
- width: min(60%, 480px);
1282
- }
1283
-
1284
- :root[data-site-brand="threat-intelligence"] body {
1285
- --ti-body-background-mark-top: calc(-80px + clamp(0px, (1000px - 100vw) * 0.2, 130px));
1286
- }
1287
- }
1288
-
1289
- :root[data-site-brand="threat-intelligence"] .presentation-item__header span,
1290
- :root[data-site-brand="threat-intelligence"] .presentation-section-header span {
1291
- color: var(--ti-body-color);
1292
- font-style: normal;
1293
- }
1294
-
1295
- :root[data-site-brand="threat-intelligence"] .presentation-item__image figcaption {
1296
- color: var(--ti-secondary-color);
1297
- font-style: normal;
1298
- }
1299
-
1300
- :root[data-site-brand="threat-intelligence"] .presentation-item__image img {
1301
- filter: none;
1302
- }
1303
-
1304
- :root[data-site-brand="threat-intelligence"] .presentation-section-nav a,
1305
- :root[data-site-brand="threat-intelligence"] .presentation-item__header a {
1306
- color: var(--ti-headline-color);
1307
- }
1308
-
1309
- :root[data-site-brand="threat-intelligence"] .article-shell {
1310
- background: var(--background);
1311
- }
1312
-
1313
- :root[data-site-brand="threat-intelligence"] .article-shell--edition {
1314
- --ti-article-body-rail-width: min(calc(100vw - 60px), 88ch);
1315
- --ti-blog-rail-width: var(--ti-article-body-rail-width);
1316
- }
1317
-
1318
- :root[data-site-brand="threat-intelligence"] .article-nav {
1319
- border-bottom: 1px solid var(--sand-a6);
1320
- color: var(--ti-body-color);
1321
- font-family: var(--site-ui-font);
1322
- font-size: var(--ti-meta-font-size);
1323
- font-weight: 900;
1324
- letter-spacing: var(--ti-meta-letter-spacing);
1325
- line-height: var(--ti-meta-line-height);
1326
- text-transform: uppercase;
1327
- }
1328
-
1329
- :root[data-site-brand="threat-intelligence"] .article-page .story-label,
1330
- :root[data-site-brand="threat-intelligence"] .article-page .story-byline {
1331
- color: var(--ti-body-color);
1332
- }
1333
-
1334
- :root[data-site-brand="threat-intelligence"] .article-page {
1335
- background: transparent;
1336
- background-size: auto;
1337
- margin: 0 auto;
1338
- max-width: calc(88ch + 60px);
1339
- min-height: auto;
1340
- }
1341
-
1342
- :root[data-site-brand="threat-intelligence"] .article-page h1 {
1343
- color: var(--ti-headline-color);
1344
- font-size: var(--ti-lead-headline-font-size);
1345
- font-weight: 900;
1346
- letter-spacing: 0;
1347
- line-height: var(--ti-lead-headline-line-box);
1348
- margin: var(--ti-rhythm) 0 calc(var(--ti-rhythm) * 3);
1349
- }
1350
-
1351
- :root[data-site-brand="threat-intelligence"] .article-deck {
1352
- color: var(--ti-body-color);
1353
- font-size: var(--ti-deck-font-size);
1354
- font-style: normal;
1355
- font-weight: 650;
1356
- line-height: var(--ti-deck-line-height);
1357
- }
1358
-
1359
- :root[data-site-brand="threat-intelligence"] .article-page .story-label {
1360
- font-size: var(--ti-meta-font-size);
1361
- font-weight: 900;
1362
- letter-spacing: var(--ti-meta-letter-spacing);
1363
- line-height: var(--ti-meta-line-height);
1364
- }
1365
-
1366
- :root[data-site-brand="threat-intelligence"] .article-page .story-byline {
1367
- font-size: var(--ti-meta-font-size);
1368
- font-weight: 850;
1369
- letter-spacing: var(--ti-meta-letter-spacing);
1370
- line-height: var(--ti-meta-line-height);
1371
- font-style: normal;
1372
- }
1373
-
1374
- :root[data-site-brand="threat-intelligence"] .article-page .story-byline {
1375
- display: flex;
1376
- flex-wrap: wrap;
1377
- gap: 0.35rem 0.65rem;
1378
- }
1379
-
1380
- :root[data-site-brand="threat-intelligence"] .article-photo img {
1381
- filter: none;
1382
- background: var(--background);
1383
- object-fit: contain;
1384
- }
1385
-
1386
- :root[data-site-brand="threat-intelligence"] .article-photo .pictogram-figure__frame {
1387
- border: 1px solid var(--sand-a5);
1388
- }
1389
-
1390
- :root[data-site-brand="threat-intelligence"] .article-body .article-photo {
1391
- margin-top: 0;
1392
- }
1393
-
1394
- :root[data-site-brand="threat-intelligence"] .article-body .article-photo img {
1395
- height: auto;
1396
- max-height: none;
1397
- }
1398
-
1399
- :root[data-site-brand="threat-intelligence"] .article-body {
1400
- column-count: 1;
1401
- column-gap: 0;
1402
- color: var(--ti-body-color);
1403
- font-family: var(--site-body-font);
1404
- font-size: var(--ti-copy-font-size);
1405
- line-height: var(--ti-copy-line-height);
1406
- max-width: 88ch;
1407
- }
1408
-
1409
- @media (min-width: 900px) {
1410
- :root[data-site-brand="threat-intelligence"] .article-body .article-photo {
1411
- float: right;
1412
- margin: 0 0 1.25rem clamp(1.5rem, 3vw, 2.25rem);
1413
- width: min(38%, 360px);
1414
- }
1415
- }
1416
-
1417
- :root[data-site-brand="threat-intelligence"] .archive-header {
1418
- --masthead-height: auto;
1419
- --masthead-title-line-height: 1.05;
1420
- --masthead-title-font-size: clamp(2rem, 4.8vw, 3.6rem);
1421
- --masthead-title-margin-top: 20px;
1422
- --masthead-title-margin-bottom: 18px;
1423
- --masthead-title-optical-shift: 0;
1424
- background: var(--paper-page-background);
1425
- background-size: var(--paper-page-background-size);
1426
- border-bottom: 1px solid rgb(var(--rule-rgb) / 0.22);
1427
- block-size: auto;
1428
- }
1429
-
1430
- :root[data-site-brand="threat-intelligence"] .archive-header h1 {
1431
- font-family: var(--site-display-font);
1432
- letter-spacing: 0;
1433
- text-transform: uppercase;
1434
- }
1435
-
1436
- :root[data-site-brand="threat-intelligence"] .archive-card__summary h2 {
1437
- font-family: var(--site-display-font);
1438
- font-weight: 900;
1439
- letter-spacing: 0;
1440
- }