File size: 5,586 Bytes
b0f3e30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3327822
b0f3e30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3327822
b0f3e30
3327822
b0f3e30
 
 
 
 
3327822
b0f3e30
3327822
b0f3e30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3327822
b0f3e30
 
3327822
b0f3e30
 
 
3327822
b0f3e30
 
 
 
 
 
3327822
b0f3e30
 
 
3327822
b0f3e30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cf879cf
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* Shared by both Spaces. Kept small and dependency-free on purpose: a demo whose
   argument is "this thing needs nothing" should not pull a CSS framework. */

:root {
  --ink: #14171a;
  --muted: #5b6570;
  --line: #e3e7eb;
  --good: #0a7d35;
  --good-bg: #eaf6ee;
  --bad: #b3261e;
  --bad-bg: #fdecea;
  --accent: #1a4fd6;
  --code-bg: #f5f7f9;
}

* { box-sizing: border-box; }

/* `display` on a class beats the `hidden` attribute's UA rule, so hiding the
   boot banner by setting `hidden` silently did nothing and it stayed on screen
   under the running app. Make the attribute win. */
[hidden] { display: none !important; }

body {
  margin: 0;
  padding: 0 1.25rem 4rem;
  font: 16px/1.55 system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--ink);
  background: #fff;
}

header, main, footer { max-width: 62rem; margin: 0 auto; }

header { padding: 2.5rem 0 1.25rem; border-bottom: 1px solid var(--line); }
h1 { font-size: 2rem; line-height: 1.2; margin: 0 0 .6rem; letter-spacing: -.02em; }
.lede { font-size: 1.12rem; margin: 0 0 .5rem; }
.sub { color: var(--muted); margin: 0; font-size: .95rem; }

.boot {
  max-width: 62rem; margin: 2.5rem auto; padding: 1rem 1.25rem;
  border: 1px solid var(--line); border-radius: 10px; color: var(--muted);
  display: flex; align-items: center; gap: .75rem;
}
.boot.failed { border-color: var(--bad); background: var(--bad-bg); color: var(--bad); }
.boot.failed .spinner { display: none; }
.spinner {
  width: 1rem; height: 1rem; border: 2px solid var(--line);
  border-top-color: var(--accent); border-radius: 50%;
  animation: spin .8s linear infinite; flex: none;
}
@keyframes spin { to { transform: rotate(360deg); } }

.tabs { display: flex; gap: .25rem; margin: 1.5rem 0 0; flex-wrap: wrap; }
.tab {
  border: 1px solid var(--line); border-bottom: none; background: #fafbfc;
  padding: .55rem 1rem; font: inherit; font-size: .95rem; cursor: pointer;
  border-radius: 8px 8px 0 0; color: var(--muted);
}
.tab.active { background: #fff; color: var(--ink); font-weight: 600; }

.panel { display: none; border: 1px solid var(--line); border-radius: 0 8px 8px 8px; padding: 1.5rem; }
.panel.active { display: block; }

.hint { margin: 0 0 1rem; color: var(--muted); font-size: .95rem; }

.row { display: flex; gap: .75rem; flex-wrap: wrap; align-items: flex-end; margin-bottom: 1rem; }
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
@media (max-width: 720px) { .grid { grid-template-columns: 1fr; } }

label { display: flex; flex-direction: column; gap: .35rem; font-size: .85rem;
  font-weight: 600; color: var(--muted); }
label.wide { display: block; margin-bottom: 1rem; max-width: 34rem; }

textarea, input, select {
  font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
  border: 1px solid var(--line); border-radius: 8px; padding: .6rem .7rem;
  color: var(--ink); background: #fff; width: 100%;
}
select, input[type="number"] { font-family: inherit; font-size: .95rem; font-weight: 400; }
textarea { resize: vertical; }

.btn {
  font: inherit; font-size: .95rem; padding: .55rem 1.1rem; cursor: pointer;
  border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink);
}
.btn:hover { border-color: var(--muted); }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
.btn-warn { border-color: var(--bad); color: var(--bad); }

.out { margin-top: 1.25rem; }
.out:empty { margin-top: 0; }

.verdict {
  display: inline-block; font-weight: 700; letter-spacing: .04em;
  padding: .4rem .8rem; border-radius: 6px; margin: .5rem 0;
}
.verdict.good, td.good { color: var(--good); background: var(--good-bg); }
.verdict.bad, td.bad { color: var(--bad); background: var(--bad-bg); }
td.good, td.bad { font-weight: 600; }

.reason, .note, .witness { font-size: .95rem; }
.note { color: var(--muted); }
.witness { background: var(--bad-bg); padding: .6rem .8rem; border-radius: 8px; }
.obligations { margin: .5rem 0; padding-left: 1.2rem; font-size: .95rem; }

table { border-collapse: collapse; width: 100%; font-size: .93rem; margin: .5rem 0; }
th, td { text-align: left; padding: .45rem .6rem; border-bottom: 1px solid var(--line); }
thead th { color: var(--muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; }
table.kv th { width: 8rem; color: var(--muted); font-weight: 600; }

code { background: var(--code-bg); padding: .1rem .3rem; border-radius: 4px;
  font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; }
pre { background: var(--code-bg); padding: .9rem 1rem; border-radius: 8px; overflow-x: auto; }
pre code { background: none; padding: 0; }

footer { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line);
  color: var(--muted); font-size: .93rem; }
footer a { color: var(--accent); }

/* The mounted package sources are data for the runtime, not content for the
   reader. Without this they render as a wall of raw Python before the script
   runs -- which is what the previous build showed visitors when it failed. */
py-file { display: none; }

/* Contain long certificate/CVE rows and shrink input tracks on narrow viewports. */
.grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid > label, .row > label { min-width: 0; }
.row > label { flex: 1 1 12rem; }
.out { max-width: 100%; overflow-x: auto; }
.out th, .out td, .reason, .witness, .hint code { overflow-wrap: anywhere; }
select, textarea { max-width: 100%; min-width: 0; }
@media (max-width: 720px) { .grid { grid-template-columns: minmax(0, 1fr); } }