1:root {
2 --fg: #1d1f21;
3 --bg: #ffffff;
4 --muted: #5c6166;
5 --rule: #d6d9dc;
6 --accent: #1f5fbf;
7 --danger: #b3261e;
8 --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
9 --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
10 color-scheme: light dark;
11}
12
13@media (prefers-color-scheme: dark) {
14 :root {
15 --fg: #e4e6e8;
16 --bg: #15171a;
17 --muted: #9aa0a6;
18 --rule: #34383d;
19 --accent: #8ab4ff;
20 --danger: #ff8a80;
21 }
22}
23
24*, *::before, *::after { box-sizing: border-box; }
25
26body {
27 margin: 0;
28 padding: 2rem 1.25rem 3rem;
29 background: var(--bg);
30 color: var(--fg);
31 font: 1rem/1.5 var(--font-ui);
32}
33
34main { max-width: 42rem; }
35body.wide main { max-width: 72rem; }
36body.wide form:not(.toolbar) { max-width: 42rem; }
37body.narrow main { max-width: 22rem; margin: 3rem auto 0; }
38
39h1 { font-size: 1.5rem; font-weight: 600; line-height: 1.25; margin: 0 0 1rem; }
40h2 { font-size: 1.125rem; font-weight: 600; margin: 2rem 0 0.75rem; }
41p { margin: 0 0 1rem; }
42small, .small { font-size: 0.875rem; color: var(--muted); }
43
44a { color: var(--accent); text-underline-offset: 0.15em; }
45
46code, .ident { font-family: var(--font-mono); font-size: 0.95em; overflow-wrap: anywhere; }
47
48hr { border: 0; border-top: 1px solid var(--rule); margin: 1.5rem 0; }
49
50label { display: block; margin: 1rem 0 0.25rem; }
51
52input, select, textarea {
53 width: 100%;
54 padding: 0.5rem 0.625rem;
55 font: inherit;
56 color: var(--fg);
57 background: var(--bg);
58 border: 1px solid var(--rule);
59 border-radius: 3px;
60}
61
62input.ident, select.ident { font-family: var(--font-mono); }
63
64:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
65
66button {
67 font: inherit;
68 padding: 0.5rem 1rem;
69 color: var(--fg);
70 background: var(--bg);
71 border: 1px solid var(--rule);
72 border-radius: 3px;
73 cursor: pointer;
74}
75
76button.primary { color: var(--bg); background: var(--accent); border-color: var(--accent); }
77button.destructive { color: var(--bg); background: var(--danger); border-color: var(--danger); }
78button:disabled { opacity: 0.6; cursor: default; }
79
80.actions { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin-top: 1.5rem; }
81body.narrow .actions button { width: 100%; }
82
83.flash { margin: 0 0 1.5rem; padding: 0.5rem 0.75rem; border-left: 3px solid var(--accent); }
84.flash.warning { border-left-color: var(--danger); }
85
86table { width: 100%; border-collapse: collapse; }
87@media (max-width: 40rem) { table { display: block; overflow-x: auto; } }
88th { position: sticky; top: 0; background: var(--bg); text-align: left; font-weight: 600; border-bottom: 1px solid var(--rule); }
89th, td { padding: 0.375rem 0.5rem; vertical-align: top; }
90td { border-bottom: 1px solid var(--rule); }
91
92.badge { font-family: var(--font-mono); font-size: 0.875rem; padding: 0 0.375rem; border: 1px solid var(--rule); border-radius: 3px; }
93
94nav a + a { margin-left: 1rem; }
95li form, td form { display: inline; }
96
97.secret { display: block; margin: 0.5rem 0; padding: 0.75rem; border: 1px solid var(--rule); user-select: all; }
98pre.secret { white-space: pre-wrap; overflow-wrap: anywhere; }
99.meta { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; }
100.bar { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; align-items: baseline; justify-content: space-between; }
101.bar h1, .bar p { margin: 0; }
102h1 + .toolbar, .bar + .toolbar { margin-top: 1rem; }
103.toolbar { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; align-items: center; margin-bottom: 1rem; }
104.toolbar label { margin: 0; }
105.toolbar input { width: auto; flex: 1 1 12rem; max-width: 24rem; }
106.toolbar p { margin: 0 0 0 auto; }
107.sessions dl, .ssh-keys dl { display: grid; grid-template-columns: 1fr auto; column-gap: 1rem; margin: 0; padding: 0.5rem 0; border-bottom: 1px solid var(--rule); }
108.sessions dd, .ssh-keys dd { grid-column: 1; margin: 0; font-size: 0.875rem; color: var(--muted); }
109.sessions dd:last-child, .ssh-keys dd:last-child { grid-column: 2; grid-row: 1 / span 3; align-self: center; }
110
111.icon { width: 1em; height: 1em; vertical-align: -0.125em; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
112
113.skip { position: absolute; left: -100vw; }
114.skip:focus { position: static; display: inline-block; margin-bottom: 1rem; }
115
116[hidden] { display: none; }
117.qr { display: block; width: 100%; max-width: 16rem; height: auto; margin: 1rem 0; }