devmethod-ai 0.2.0 → 0.3.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.
Files changed (60) hide show
  1. package/.agents/skills/decision-architecture/SKILL.md +10 -0
  2. package/.agents/skills/decision-architecture/assets/ADR.md +6 -3
  3. package/.agents/skills/project-foundation/SKILL.md +2 -0
  4. package/.agents/skills/project-foundation/assets/CADRAGE.md +11 -0
  5. package/.agents/skills/project-foundation/assets/EXISTANT.md +14 -0
  6. package/.agents/skills/project-foundation/assets/OPPORTUNITES.md +10 -0
  7. package/.agents/skills/project-foundation/assets/PROJECT_PROFILE.md +3 -2
  8. package/.agents/skills/project-foundation/assets/REGLES.md +6 -0
  9. package/.agents/skills/project-foundation/assets/START_HERE.md +2 -0
  10. package/.agents/skills/project-foundation/references/delivery-planning.md +11 -0
  11. package/.agents/skills/project-foundation/references/exploration.md +11 -0
  12. package/.agents/skills/project-foundation/references/mission-context.md +31 -4
  13. package/.agents/skills/project-foundation/references/operating-commands.md +12 -4
  14. package/.agents/skills/project-foundation/references/work-sizing.md +1 -1
  15. package/.agents/skills/scoped-delivery/SKILL.md +5 -1
  16. package/.agents/skills/scoped-delivery/assets/MISSION.md +1 -1
  17. package/.agents/skills/scoped-delivery/assets/PLAN.md +20 -0
  18. package/.agents/skills/scoped-delivery/assets/REPRISE.md +10 -0
  19. package/.agents/skills/scoped-delivery/assets/REVIEW.md +34 -0
  20. package/.agents/skills/scoped-delivery/assets/SLICE.md +5 -0
  21. package/.agents/skills/scoped-delivery/assets/TICKET.md +21 -0
  22. package/.agents/skills/scoped-delivery/references/review-workflow.md +29 -0
  23. package/COMPATIBILITY.md +1 -1
  24. package/README.md +20 -10
  25. package/START_HERE.md +2 -0
  26. package/dist/cli.js +122 -90
  27. package/dist/review-app.js +462 -0
  28. package/dist/review-browser.js +567 -0
  29. package/dist/review-cli.js +68 -0
  30. package/dist/review-model.js +101 -0
  31. package/dist/review-open.js +19 -0
  32. package/dist/review-ui.css +782 -0
  33. package/dist/review.js +13 -0
  34. package/docs/ADR-007-conversation-and-mission-ownership.md +13 -0
  35. package/docs/ADR-008-review-presentation.md +13 -0
  36. package/docs/MISSIONS.md +1 -1
  37. package/docs/RELEASE-0.2.0.md +14 -3
  38. package/docs/RELEASE-0.3.0.md +24 -0
  39. package/docs/REVIEW-SOURCES.md +13 -0
  40. package/docs/REVIEW-VALIDATION.md +34 -0
  41. package/docs/REVIEWS.md +75 -0
  42. package/docs/VISUAL-WORKFLOW.md +1 -1
  43. package/docs/WORKFLOW-0.3-VALIDATION.md +32 -0
  44. package/docs/WORKFLOW-0.3.md +34 -0
  45. package/docs/images/review-interface-desktop.jpg +0 -0
  46. package/docs/images/review-interface-mobile.jpg +0 -0
  47. package/docs/missions/workflow-0.3-reviews/interface/REVIEW.md +109 -0
  48. package/docs/missions/workflow-0.3-reviews/interface/review.json +255 -0
  49. package/docs/missions/workflow-0.3.md +17 -0
  50. package/examples/mission-dialogue/PROJECT_PROFILE.md +9 -0
  51. package/examples/mission-dialogue/architecture/decisions/001-storage.md +7 -0
  52. package/examples/mission-dialogue/docs/missions/first-save/PLAN.md +13 -0
  53. package/examples/mission-dialogue/docs/missions/first-save/REPRISE.md +6 -0
  54. package/examples/mission-dialogue/docs/missions/first-save/tickets/SAVE-1.md +14 -0
  55. package/examples/mission-dialogue/docs/missions/legacy-copy.md +9 -0
  56. package/examples/mission-dialogue/docs/produit/REGLES.md +5 -0
  57. package/examples/review/review.json +199 -0
  58. package/package.json +2 -2
  59. package/scripts/build-review.mjs +8 -0
  60. package/scripts/package-smoke.mjs +16 -3
@@ -0,0 +1,782 @@
1
+ :root {
2
+ color-scheme:light;
3
+ --ink:#151643;
4
+ --muted:#5d6587;
5
+ --indigo:#4940ed;
6
+ --line:#e1e6f2;
7
+ --paper:#fff;
8
+ --canvas:#fafbfe;
9
+ --red:#c42e35;
10
+ --amber:#986000;
11
+ --green:#06764f}
12
+ * {
13
+ box-sizing:border-box}
14
+ body {
15
+ margin:0;
16
+ background:var(--canvas);
17
+ color:var(--ink);
18
+ font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
19
+ button,input,select,summary {
20
+ font:inherit}
21
+ button,a,summary,label.import {
22
+ touch-action:manipulation}
23
+ button,summary {
24
+ cursor:pointer}
25
+ button {
26
+ color:inherit}
27
+ a {
28
+ color:#3535cf;
29
+ text-underline-offset:3px}
30
+ p {
31
+ margin:8px 0}
32
+ h1,h2,h3,h4 {
33
+ line-height:1.25;
34
+ margin:0}
35
+ h1 {
36
+ font-size:32px;
37
+ letter-spacing:-.8px}
38
+ h2 {
39
+ font-size:23px}
40
+ h3 {
41
+ font-size:16px}
42
+ h4 {
43
+ font-size:15px}
44
+ .layout {
45
+ display:grid;
46
+ grid-template-columns:208px minmax(0,1fr);
47
+ min-height:100vh}
48
+ .sidebar {
49
+ position:sticky;
50
+ top:0;
51
+ height:100vh;
52
+ padding:25px 16px;
53
+ background:linear-gradient(150deg,#f3f6fd,#fafbff);
54
+ border-right:1px solid var(--line);
55
+ display:flex;
56
+ flex-direction:column;
57
+ gap:13px}
58
+ .brand {
59
+ font-size:23px;
60
+ font-weight:750;
61
+ letter-spacing:-.5px;
62
+ white-space:nowrap}
63
+ .eyebrow {
64
+ font-size:10px;
65
+ font-weight:700;
66
+ letter-spacing:1.8px;
67
+ color:#626c95;
68
+ margin:0 0 6px}
69
+ .sidebar>.eyebrow {
70
+ margin:24px 8px 0}
71
+ .project {
72
+ padding:0 8px;
73
+ overflow-wrap:anywhere}
74
+ .side-nav {
75
+ margin:21px -6px 6px;
76
+ padding-top:20px;
77
+ border-top:1px solid var(--line)}
78
+ .side-active {
79
+ border-radius:8px;
80
+ background:#e6e7ff;
81
+ color:#3023d8;
82
+ font-weight:650;
83
+ padding:12px}
84
+ .side-note {
85
+ margin-top:auto;
86
+ padding:16px 7px 0;
87
+ font-size:11px;
88
+ color:#66708d}
89
+ .side-note strong {
90
+ font-weight:600}
91
+ .main {
92
+ padding:27px 30px 42px;
93
+ min-width:0;
94
+ max-width:1720px;
95
+ width:100%;
96
+ margin:0 auto}
97
+ .page-header {
98
+ display:flex;
99
+ justify-content:space-between;
100
+ align-items:flex-start;
101
+ gap:20px;
102
+ margin-bottom:23px}
103
+ .subtitle {
104
+ font-size:15px;
105
+ color:#535d86}
106
+ .revision {
107
+ font-size:12px;
108
+ color:var(--muted);
109
+ overflow-wrap:anywhere}
110
+ .button {
111
+ display:inline-flex;
112
+ align-items:center;
113
+ justify-content:center;
114
+ gap:6px;
115
+ border:1px solid #9ca2bd;
116
+ border-radius:6px;
117
+ background:white;
118
+ padding:10px 15px;
119
+ text-decoration:none;
120
+ font-size:13px;
121
+ font-weight:650;
122
+ color:var(--ink);
123
+ white-space:nowrap;
124
+ box-shadow:0 1px 2px #15164308}
125
+ .button.primary {
126
+ background:var(--indigo);
127
+ border-color:var(--indigo);
128
+ color:white}
129
+ .button:hover {
130
+ filter:brightness(.97)}
131
+ .import {
132
+ position:relative;
133
+ overflow:hidden;
134
+ background:#fff;
135
+ border-color:var(--line);
136
+ font-size:12px}
137
+ .import input {
138
+ position:absolute;
139
+ inset:0;
140
+ opacity:0;
141
+ width:100%;
142
+ cursor:pointer}
143
+ .import:focus-within {
144
+ outline:3px solid #3023d8;
145
+ outline-offset:3px}
146
+ .export {
147
+ position:relative;
148
+ flex-shrink:0}
149
+ .export summary {
150
+ list-style:none}
151
+ .export summary::-webkit-details-marker {
152
+ display:none}
153
+ .export-menu {
154
+ position:absolute;
155
+ right:0;
156
+ top:49px;
157
+ width:278px;
158
+ z-index:3;
159
+ background:white;
160
+ border:1px solid var(--line);
161
+ border-radius:8px;
162
+ padding:7px;
163
+ box-shadow:0 9px 30px #17194322}
164
+ .export-menu button {
165
+ display:block;
166
+ text-align:left;
167
+ width:100%;
168
+ border:0;
169
+ background:white;
170
+ padding:12px;
171
+ border-radius:5px}
172
+ .export-menu button:hover {
173
+ background:#f2f1ff}
174
+ .banner {
175
+ display:flex;
176
+ gap:17px;
177
+ padding:16px 20px;
178
+ border:1px solid #edc06c;
179
+ border-radius:7px;
180
+ background:#fff6e0;
181
+ color:#8b5200;
182
+ margin-bottom:17px}
183
+ .banner h2 {
184
+ font-size:21px}
185
+ .banner p {
186
+ margin:3px 0}
187
+ .banner .policy {
188
+ font-size:11px;
189
+ color:#745f3d}
190
+ .banner-icon {
191
+ font-size:31px;
192
+ line-height:1.4}
193
+ .banner.ready {
194
+ background:#edfaf4;
195
+ border-color:#a5d9c0;
196
+ color:#076543}
197
+ .banner.incomplete,.banner.blocked {
198
+ background:#f0f3ff;
199
+ color:#324b87;
200
+ border-color:#bbcbed}
201
+ .stats {
202
+ display:grid;
203
+ grid-template-columns:repeat(5,minmax(82px,1fr)) minmax(220px,2.2fr);
204
+ gap:11px}
205
+ .stat {
206
+ background:white;
207
+ border:1px solid var(--line);
208
+ border-radius:7px;
209
+ padding:13px 12px;
210
+ display:grid;
211
+ grid-template-columns:28px 1fr;
212
+ align-items:center;
213
+ column-gap:8px;
214
+ min-width:0}
215
+ .stat strong {
216
+ font-size:27px;
217
+ line-height:1}
218
+ .stat>span:last-child {
219
+ grid-column:2;
220
+ font-size:12px;
221
+ color:#465078}
222
+ .stat-icon {
223
+ grid-row:span 2;
224
+ border-radius:50%;
225
+ width:26px;
226
+ height:26px;
227
+ text-align:center;
228
+ background:#eef0ff;
229
+ color:#4e4bdf;
230
+ font-size:18px;
231
+ font-weight:700}
232
+ .critical .stat-icon,.major .stat-icon {
233
+ background:#ffdfdf;
234
+ color:var(--red)}
235
+ .moderate .stat-icon {
236
+ background:#fff0cd;
237
+ color:var(--amber)}
238
+ .coverage-stat {
239
+ display:flex;
240
+ align-items:stretch;
241
+ flex-direction:column;
242
+ justify-content:center;
243
+ gap:7px}
244
+ .coverage-stat strong {
245
+ font-size:12px;
246
+ line-height:1.3}
247
+ .coverage-stat>span:last-child {
248
+ font-size:10px}
249
+ .coverage-bars {
250
+ display:flex;
251
+ height:7px;
252
+ background:#e1e6f0;
253
+ border-radius:10px;
254
+ overflow:hidden;
255
+ width:100%}
256
+ .coverage-bars span {
257
+ min-width:0}
258
+ .coverage-bars .passed {
259
+ background:#22a675}
260
+ .coverage-bars .failed {
261
+ background:#ec575c}
262
+ .coverage-bars .not-run,.coverage-bars .blocked {
263
+ background:#aeb7cc}
264
+ .coverage-bars .out-of-scope {
265
+ background:#e1e6f0}
266
+ .count-caption {
267
+ font-size:10px;
268
+ color:var(--muted);
269
+ margin:7px 0 11px}
270
+ .revision-hint {
271
+ font-size:11px;
272
+ color:var(--muted);
273
+ margin:0 0 12px}
274
+ .notice {
275
+ padding:12px 15px;
276
+ border:1px solid #ccd5ed;
277
+ background:#f2f5ff;
278
+ color:#35466e;
279
+ border-radius:7px;
280
+ font-size:13px}
281
+ .limits {
282
+ font-size:12px;
283
+ color:var(--muted)}
284
+ .limits summary {
285
+ font-weight:650;
286
+ width:fit-content}
287
+ .limits li {
288
+ margin:5px 0}
289
+ .important-limit {
290
+ font-size:12px;
291
+ color:#665229;
292
+ margin:7px 0 17px}
293
+ .workspace {
294
+ display:grid;
295
+ grid-template-columns:minmax(350px,.94fr) minmax(380px,1.12fr);
296
+ background:white;
297
+ border:1px solid var(--line);
298
+ border-radius:8px;
299
+ min-height:560px;
300
+ box-shadow:0 2px 8px #22224b03;
301
+ overflow:hidden}
302
+ .list-panel {
303
+ border-right:1px solid var(--line);
304
+ min-width:0}
305
+ .tabs {
306
+ display:flex;
307
+ border-bottom:1px solid var(--line);
308
+ padding:0 12px;
309
+ gap:6px}
310
+ .tab {
311
+ position:relative;
312
+ flex:1;
313
+ padding:17px 8px;
314
+ border:0;
315
+ background:none;
316
+ color:#545d85;
317
+ font-size:14px;
318
+ font-weight:500;
319
+ white-space:nowrap}
320
+ .tab.active {
321
+ color:#2f22c8;
322
+ font-weight:700}
323
+ .tab.active:after {
324
+ content:"";
325
+ position:absolute;
326
+ bottom:0;
327
+ left:2px;
328
+ right:2px;
329
+ height:3px;
330
+ background:var(--indigo);
331
+ border-radius:4px 4px 0 0}
332
+ .view-panel {
333
+ padding:16px}
334
+ .filters {
335
+ display:grid;
336
+ grid-template-columns:repeat(2,minmax(0,1fr));
337
+ gap:9px}
338
+ .filters label {
339
+ display:flex;
340
+ flex-direction:column;
341
+ gap:4px;
342
+ font-size:10px;
343
+ color:#5e688b;
344
+ font-weight:650}
345
+ .search-label {
346
+ grid-column:1/-1}
347
+ input,select {
348
+ min-width:0;
349
+ width:100%;
350
+ color:var(--ink);
351
+ background:#fafbfe;
352
+ border:1px solid #dce1ef;
353
+ border-radius:6px;
354
+ padding:8px 9px;
355
+ font-size:12px}
356
+ input[type=file] {
357
+ padding:0}
358
+ .result-count {
359
+ font-size:11px;
360
+ color:var(--muted);
361
+ margin:14px 0 9px}
362
+ .finding {
363
+ display:block;
364
+ text-align:left;
365
+ width:100%;
366
+ border:1px solid var(--line);
367
+ background:white;
368
+ border-radius:7px;
369
+ padding:13px 14px;
370
+ margin:0 0 10px;
371
+ transition:background .15s}
372
+ .finding:hover {
373
+ background:#fafaff}
374
+ .finding.selected {
375
+ border-color:#9c92ff;
376
+ background:#f7f5ff;
377
+ box-shadow:inset 3px 0 var(--indigo)}
378
+ .finding-top {
379
+ display:flex;
380
+ justify-content:space-between;
381
+ align-items:center;
382
+ gap:8px;
383
+ margin-bottom:9px}
384
+ .finding-id {
385
+ font-size:12px}
386
+ .finding h3 {
387
+ font-size:15px;
388
+ margin-bottom:10px}
389
+ .finding-meta {
390
+ display:flex;
391
+ gap:9px;
392
+ align-items:center;
393
+ flex-wrap:wrap;
394
+ font-size:11px;
395
+ color:#4c557b}
396
+ .resolution {
397
+ margin-left:auto}
398
+ .badge {
399
+ display:inline-flex;
400
+ align-items:center;
401
+ gap:4px;
402
+ font-size:11px;
403
+ font-weight:650;
404
+ padding:4px 8px;
405
+ border-radius:6px;
406
+ line-height:1.25;
407
+ white-space:nowrap}
408
+ .badge.critical,.badge.major,.badge.failed {
409
+ background:#ffe5e5;
410
+ color:#ad222b}
411
+ .badge.moderate {
412
+ background:#fff0cf;
413
+ color:#895000}
414
+ .badge.minor,.badge.suspected,.badge.unverified {
415
+ background:#edf1ff;
416
+ color:#3c50a1}
417
+ .badge.confirmed,.badge.passed {
418
+ background:#e4f6ed;
419
+ color:#04714d}
420
+ .badge.neutral,.badge.not-run,.badge.blocked,.badge.out-of-scope {
421
+ background:#edf0f6;
422
+ color:#515d78}
423
+ .detail-panel {
424
+ padding:21px 23px;
425
+ min-width:0}
426
+ .detail-title {
427
+ font-size:23px;
428
+ letter-spacing:-.35px}
429
+ .detail-badges {
430
+ display:flex;
431
+ gap:9px;
432
+ flex-wrap:wrap;
433
+ margin:12px 0}
434
+ .impact {
435
+ font-size:16px}
436
+ .location {
437
+ font:11px/1.5 ui-monospace,SFMono-Regular,monospace;
438
+ color:#5e6688;
439
+ overflow-wrap:anywhere;
440
+ margin:8px 0 16px}
441
+ .detail-panel>.tabs {
442
+ margin:0 -23px;
443
+ padding:0 20px}
444
+ .detail-panel .tab {
445
+ flex:0 1 130px}
446
+ .detail-content {
447
+ padding-top:18px}
448
+ .text-block {
449
+ margin:0 0 17px}
450
+ .text-block h3 {
451
+ font-size:12px;
452
+ color:#5f688a;
453
+ margin-bottom:6px}
454
+ .text-block p {
455
+ font-size:14px;
456
+ white-space:pre-wrap;
457
+ overflow-wrap:anywhere}
458
+ .compare {
459
+ display:grid;
460
+ grid-template-columns:1fr 1fr;
461
+ gap:12px;
462
+ padding:14px;
463
+ background:#f8f9fe;
464
+ border:1px solid var(--line);
465
+ border-radius:6px;
466
+ margin:14px 0}
467
+ .compare .text-block {
468
+ margin:0}
469
+ .reproduction {
470
+ font-size:13px;
471
+ padding-left:20px;
472
+ color:#4c5678}
473
+ .reproduction li {
474
+ margin:6px 0}
475
+ .evidence-card {
476
+ padding:15px;
477
+ border:1px solid var(--line);
478
+ border-radius:7px;
479
+ margin:16px 0}
480
+ .evidence-card h3 {
481
+ font-size:14px;
482
+ margin-bottom:10px}
483
+ .evidence-card .eyebrow {
484
+ font-size:9px;
485
+ letter-spacing:.5px}
486
+ .evidence-card pre,pre {
487
+ white-space:pre-wrap;
488
+ overflow-wrap:anywhere;
489
+ word-break:break-word;
490
+ font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;
491
+ background:#f6f8fd;
492
+ padding:13px;
493
+ border-radius:6px}
494
+ .diagram {
495
+ border-left:3px solid #8b85ed;
496
+ color:#424485}
497
+ .evidence-image {
498
+ display:block;
499
+ max-width:100%;
500
+ height:auto;
501
+ border:1px solid var(--line);
502
+ border-radius:6px;
503
+ margin:10px 0}
504
+ .correction-preview {
505
+ padding:13px 15px;
506
+ background:#f6f7fc;
507
+ border:1px solid var(--line);
508
+ border-radius:6px;
509
+ font-size:13px}
510
+ .correction-preview strong {
511
+ font-size:12px}
512
+ .detail-actions {
513
+ display:flex;
514
+ justify-content:flex-end;
515
+ gap:9px;
516
+ flex-wrap:wrap;
517
+ border-top:1px solid var(--line);
518
+ padding-top:17px;
519
+ margin-top:22px}
520
+ .detail-actions input {
521
+ width:100%;
522
+ font-size:11px}
523
+ .back-button {
524
+ display:none}
525
+ .empty {
526
+ padding:60px 22px;
527
+ text-align:center;
528
+ color:var(--muted);
529
+ background:white;
530
+ border:1px solid var(--line);
531
+ border-radius:8px}
532
+ .empty h2 {
533
+ color:var(--ink);
534
+ margin:12px 0}
535
+ .empty .import {
536
+ margin-top:18px}
537
+ .empty.small {
538
+ padding:28px 16px;
539
+ font-size:13px}
540
+ .detail-empty {
541
+ border:0;
542
+ margin-top:110px}
543
+ .empty-icon {
544
+ font-size:36px;
545
+ color:var(--indigo)}
546
+ .muted {
547
+ font-size:12px;
548
+ color:var(--muted)}
549
+ .panel-title {
550
+ font-size:18px;
551
+ margin-bottom:12px}
552
+ .domain-title {
553
+ font-size:14px;
554
+ margin:23px 0 10px}
555
+ .check-card,.source-card {
556
+ border:1px solid var(--line);
557
+ border-radius:7px;
558
+ padding:15px;
559
+ margin-bottom:12px}
560
+ .check-card h4 {
561
+ margin:10px 0}
562
+ .check-card p {
563
+ font-size:12px}
564
+ .check-card summary {
565
+ font-size:12px;
566
+ color:#3d36be}
567
+ .source-card h3 {
568
+ font-size:15px}
569
+ .source-meta {
570
+ font-size:12px;
571
+ color:var(--muted)}
572
+ .source-card .text-block {
573
+ margin-top:12px}
574
+ .source-card .text-block p {
575
+ font-size:12px}
576
+ .technology {
577
+ padding:10px;
578
+ background:#f5f6fc;
579
+ border-radius:5px;
580
+ font-size:12px}
581
+ .link {
582
+ font-size:12px}
583
+ .legacy {
584
+ font-size:14px;
585
+ background:white;
586
+ border:1px solid var(--line);
587
+ padding:24px}
588
+ .loading {
589
+ padding:60px;
590
+ font-size:18px}
591
+ :focus-visible {
592
+ outline:3px solid #3523cf;
593
+ outline-offset:3px}
594
+ button:focus:not(:focus-visible) {
595
+ outline:none}
596
+ @media(min-width:1700px) {
597
+ .main {
598
+ padding:32px 42px}
599
+ .workspace {
600
+ grid-template-columns:1fr 1.2fr}
601
+ .stat {
602
+ padding:16px}
603
+ }
604
+ @media(max-width:1200px) {
605
+ .layout {
606
+ grid-template-columns:176px minmax(0,1fr)}
607
+ .brand {
608
+ font-size:19px}
609
+ .main {
610
+ padding:22px 20px}
611
+ .stats {
612
+ grid-template-columns:repeat(5,1fr)}
613
+ .coverage-stat {
614
+ grid-column:1/-1;
615
+ display:flex;
616
+ flex-direction:row;
617
+ align-items:center;
618
+ gap:18px}
619
+ .coverage-bars {
620
+ max-width:170px}
621
+ .workspace {
622
+ grid-template-columns:minmax(290px,.9fr) minmax(310px,1fr)}
623
+ .detail-panel {
624
+ padding:18px}
625
+ .detail-panel>.tabs {
626
+ margin:0 -18px}
627
+ .detail-title {
628
+ font-size:21px}
629
+ }
630
+ @media(max-width:850px) {
631
+ .layout {
632
+ display:block}
633
+ .sidebar {
634
+ position:static;
635
+ height:auto;
636
+ display:flex;
637
+ flex-direction:row;
638
+ align-items:center;
639
+ padding:13px 18px;
640
+ border-right:0;
641
+ border-bottom:1px solid var(--line);
642
+ gap:15px}
643
+ .sidebar>.eyebrow,.project,.side-nav,.side-note {
644
+ display:none}
645
+ .sidebar .import {
646
+ margin-left:auto}
647
+ .brand {
648
+ font-size:20px}
649
+ .main {
650
+ padding:20px 16px}
651
+ .page-header {
652
+ gap:10px}
653
+ .page-header h1 {
654
+ font-size:26px}
655
+ .page-header .button {
656
+ font-size:11px;
657
+ padding:9px}
658
+ .stats {
659
+ grid-template-columns:repeat(5,1fr);
660
+ gap:6px}
661
+ .stat {
662
+ display:flex;
663
+ flex-direction:column;
664
+ gap:5px;
665
+ padding:10px 4px}
666
+ .stat-icon {
667
+ display:none}
668
+ .stat strong {
669
+ font-size:23px}
670
+ .stat>span:last-child {
671
+ font-size:10px}
672
+ .coverage-stat {
673
+ flex-direction:row;
674
+ gap:12px;
675
+ flex-wrap:wrap;
676
+ padding:12px}
677
+ .coverage-stat strong {
678
+ font-size:12px}
679
+ .coverage-bars {
680
+ max-width:120px}
681
+ .workspace {
682
+ display:block;
683
+ min-height:450px}
684
+ .list-panel {
685
+ border:0}
686
+ .detail-panel {
687
+ display:none}
688
+ .workspace.show-detail .list-panel {
689
+ display:none}
690
+ .workspace.show-detail .detail-panel {
691
+ display:block}
692
+ .back-button {
693
+ display:block;
694
+ border:0;
695
+ background:transparent;
696
+ color:#4537d0;
697
+ padding:0;
698
+ margin:0 0 18px;
699
+ font-size:13px;
700
+ font-weight:650}
701
+ .banner {
702
+ padding:13px}
703
+ .banner h2 {
704
+ font-size:18px}
705
+ .banner p {
706
+ font-size:13px}
707
+ .banner .policy {
708
+ font-size:10px}
709
+ .count-caption {
710
+ font-size:9px}
711
+ .export-menu {
712
+ width:252px}
713
+ .detail-title {
714
+ font-size:22px}
715
+ .detail-empty {
716
+ margin:0}
717
+ .important-limit {
718
+ font-size:11px}
719
+ .view-panel {
720
+ padding:14px}
721
+ }
722
+ @media(max-width:440px) {
723
+ .page-header {
724
+ flex-direction:column}
725
+ .page-header .export {
726
+ align-self:flex-end;
727
+ margin-top:-2px}
728
+ .compare {
729
+ grid-template-columns:1fr}
730
+ .brand {
731
+ font-size:18px}
732
+ .sidebar {
733
+ padding:12px}
734
+ .sidebar .import {
735
+ font-size:10px;
736
+ padding:8px}
737
+ .main {
738
+ padding:18px 12px}
739
+ .coverage-stat {
740
+ gap:8px}
741
+ .coverage-bars {
742
+ max-width:100%;
743
+ width:100%}
744
+ .detail-actions {
745
+ justify-content:stretch}
746
+ .detail-actions .button {
747
+ flex:1;
748
+ white-space:normal}
749
+ .banner-icon {
750
+ font-size:25px}
751
+ }
752
+ @media(prefers-reduced-motion:reduce) {
753
+ * {
754
+ transition:none!important;
755
+ scroll-behavior:auto!important}
756
+ }
757
+
758
+
759
+ /* Keep inspection content near the first fold at the approved desktop size. */
760
+ @media(min-width:851px) {
761
+ .page-header {
762
+ margin-bottom:16px}
763
+ .subtitle {
764
+ display:inline;
765
+ margin-right:12px}
766
+ .revision {
767
+ display:inline}
768
+ .page-header h1 {
769
+ margin-bottom:8px}
770
+ .banner {
771
+ padding:13px 18px;
772
+ margin-bottom:12px}
773
+ .revision-hint {
774
+ margin-bottom:9px}
775
+ .stat {
776
+ padding-top:11px;
777
+ padding-bottom:11px}
778
+ .important-limit {
779
+ margin-bottom:12px}
780
+ .main {
781
+ padding-top:21px}
782
+ }