Skip to content
158 linesCodeBlameRaw
1/* The launcher, in the site's colours (packages/theme/tokens.css): a very
2 dark gray and lavender, the mark centred, one short message. */
3:root {
4 --bg: #0f0f11;
5 --fg: #ededf0;
6 --muted: #9a9aa6;
7 --line: #26262c;
8 --surface: #17171b;
9 --accent: #b6a8ff;
10 --accent-ink: #15112e;
11 --error: #ff8a8a;
12 color-scheme: dark;
13}
14* {
15 box-sizing: border-box;
16}
17html,
18body {
19 height: 100%;
20 margin: 0;
21}
22body {
23 background: var(--bg);
24 color: var(--fg);
25 font: 15px/1.5 system-ui, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
26 -webkit-font-smoothing: antialiased;
27 display: grid;
28 place-items: center;
29 user-select: none;
30 cursor: default;
31}
32main {
33 width: min(26rem, calc(100vw - 2rem));
34 text-align: center;
35}
36.mark {
37 width: 72px;
38 height: 72px;
39 display: block;
40 margin: 0 auto 1.5rem;
41 border-radius: 16px;
42 box-shadow: 0 0 0 1px var(--line);
43}
44h1 {
45 font-size: 1.125rem;
46 font-weight: 600;
47 margin: 0 0 0.5rem;
48}
49p {
50 margin: 0 0 1rem;
51}
52.muted {
53 color: var(--muted);
54}
55.small {
56 font-size: 0.8125rem;
57}
58.error {
59 color: var(--error);
60 font-size: 0.875rem;
61 text-align: left;
62}
63.status {
64 display: inline-flex;
65 align-items: center;
66 gap: 0.625rem;
67 color: var(--muted);
68}
69.pulse {
70 width: 8px;
71 height: 8px;
72 border-radius: 50%;
73 background: var(--accent);
74 animation: pulse 1.4s ease-in-out infinite;
75}
76@keyframes pulse {
77 0%,
78 100% {
79 opacity: 0.35;
80 transform: scale(0.85);
81 }
82 50% {
83 opacity: 1;
84 transform: scale(1);
85 }
86}
87@media (prefers-reduced-motion: reduce) {
88 .pulse {
89 animation: none;
90 }
91}
92.row {
93 display: flex;
94 gap: 0.5rem;
95 justify-content: center;
96 flex-wrap: wrap;
97 margin-bottom: 1rem;
98}
99button {
100 font: inherit;
101 font-size: 0.875rem;
102 font-weight: 500;
103 padding: 0.5rem 0.875rem;
104 border-radius: 8px;
105 border: 1px solid var(--line);
106 background: var(--surface);
107 color: var(--fg);
108 cursor: default;
109}
110button:hover {
111 border-color: #3a3a44;
112}
113button:focus-visible,
114input:focus-visible {
115 outline: 2px solid var(--accent);
116 outline-offset: 2px;
117}
118button.primary {
119 background: var(--accent);
120 border-color: var(--accent);
121 color: var(--accent-ink);
122}
123button.primary:hover {
124 filter: brightness(1.06);
125}
126form {
127 text-align: left;
128}
129label {
130 display: block;
131 font-size: 0.8125rem;
132 color: var(--muted);
133 margin-bottom: 0.25rem;
134}
135input {
136 font: inherit;
137 width: 100%;
138 padding: 0.5rem 0.625rem;
139 border-radius: 8px;
140 border: 1px solid var(--line);
141 background: var(--surface);
142 color: var(--fg);
143 margin-bottom: 0.75rem;
144 user-select: text;
145}
146a {
147 color: var(--muted);
148 text-decoration: underline;
149 text-underline-offset: 3px;
150}
151a:hover {
152 color: var(--fg);
153}
154.version {
155 margin-top: 2.5rem;
156 margin-bottom: 0;
157 font-variant-numeric: tabular-nums;
158}