返回 DeepSeek-Reasonix
global.css
根目录 / site / src / styles / global.css
1
2 @import '@fontsource-variable/inter';
3 @import '@fontsource-variable/jetbrains-mono';
4
5 :root {
6 color-scheme: light;
7 --acc-1: #4f9dff;
8 --acc-2: #7a6bff;
9 --acc-3: #c46bff;
10 --accent: oklch(0.55 0.17 257);
11 --accent-deep: oklch(0.48 0.17 257);
12 --accent-line: color-mix(in oklch, var(--accent) 30%, var(--line));
13 --accent-soft: color-mix(in oklch, var(--accent) 8%, var(--bg));
14 --bg: #ffffff;
15 --bg-soft: oklch(0.976 0.0025 247);
16 --ink: oklch(0.21 0.006 260);
17 --ink-2: oklch(0.45 0.008 260);
18 --ink-3: oklch(0.6 0.008 260);
19 --line: oklch(0.905 0.004 247);
20 --card: #ffffff;
21 --term-bg: oklch(0.21 0.006 260);
22 --term-edge: oklch(0.31 0.008 260);
23 --radius: 13px;
24 --radius-sm: 9px;
25 --shadow-1: 0 1px 2px oklch(0.35 0.01 260 / 0.08);
26 --shadow-2: 0 1px 2px oklch(0.35 0.01 260 / 0.06), 0 12px 32px -16px oklch(0.35 0.01 260 / 0.24);
27 --font-sans: "Inter Variable", "Inter", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;
28 --font-mono: "JetBrains Mono Variable", "JetBrains Mono", "SF Mono", Menlo, monospace;
29 --ease: cubic-bezier(0.22, 1, 0.36, 1);
30 }
31
32 :root[data-theme="dark"] {
33 color-scheme: dark;
34 --accent: oklch(0.66 0.16 257);
35 --accent-deep: oklch(0.73 0.14 257);
36 --accent-soft: color-mix(in oklch, var(--accent) 16%, var(--bg));
37 --bg: oklch(0.19 0.006 260);
38 --bg-soft: oklch(0.225 0.008 260);
39 --ink: oklch(0.93 0.004 260);
40 --ink-2: oklch(0.78 0.008 260);
41 --ink-3: oklch(0.63 0.008 260);
42 --line: oklch(0.31 0.008 260);
43 --card: oklch(0.222 0.008 260);
44 --term-bg: oklch(0.155 0.005 260);
45 --term-edge: oklch(0.28 0.008 260);
46 --shadow-1: 0 1px 2px oklch(0 0 0 / 0.3);
47 --shadow-2: 0 1px 2px oklch(0 0 0 / 0.28), 0 12px 32px -16px oklch(0 0 0 / 0.6);
48 }
49
50 * { margin: 0; padding: 0; box-sizing: border-box; }
51
52 [hidden] { display: none !important; }
53
54 html { scroll-behavior: smooth; background: var(--bg); }
55
56 body {
57 font-family: var(--font-sans);
58 font-optical-sizing: auto;
59 font-feature-settings: "cv11", "ss01";
60 background: var(--bg);
61 color: var(--ink);
62 -webkit-font-smoothing: antialiased;
63 overflow-x: hidden;
64 }
65
66 ::selection { background: oklch(0.88 0.05 257); }
67
68 .wrap { max-width: 1180px; margin: 0 auto; padding: 0 40px; }
69
70
71 body[data-lang="en"] .l-zh { display: none !important; }
72 body[data-lang="zh"] .l-en { display: none !important; }
73 body[data-lang="zh"] h1,
74 body[data-lang="zh"] h2,
75 body[data-lang="zh"] h3 { letter-spacing: 0; }
76 body[data-lang="zh"] .hero h1 { font-size: clamp(38px, 4.6vw, 62px); line-height: 1.24; }
77
78 .lang-switch, .theme-switch {
79 display: inline-flex; gap: 2px; padding: 3px;
80 background: var(--bg-soft); border: 1px solid var(--line); border-radius: 9px;
81 }
82 .lang-switch button, .theme-switch button {
83 font-family: var(--font-sans); font-size: 12.5px; font-weight: 500;
84 color: var(--ink-2); background: transparent; border: none; cursor: pointer;
85 padding: 6px 12px; border-radius: 6px;
86 transition: background 0.2s, color 0.2s, box-shadow 0.2s;
87 }
88 .theme-switch button { display: inline-flex; align-items: center; justify-content: center; }
89 .theme-switch svg { display: block; }
90 .lang-switch button:hover, .theme-switch button:hover { color: var(--ink); }
91 .lang-switch button.active, .theme-switch button.active { background: var(--card); color: var(--accent); box-shadow: var(--shadow-1); }
92
93
94 .nav {
95 position: fixed; top: 0; left: 0; right: 0; z-index: 50;
96 transition: background 0.4s, box-shadow 0.4s;
97 }
98 .nav.scrolled {
99 background: color-mix(in oklch, var(--bg) 92%, transparent);
100 backdrop-filter: blur(16px);
101 -webkit-backdrop-filter: blur(16px);
102 box-shadow: 0 1px 0 var(--line);
103 }
104 .nav-inner {
105 display: flex; align-items: center; gap: 18px;
106 height: 68px; max-width: 1480px; margin: 0 auto; padding: 0 40px;
107 }
108 .brand { display: flex; flex: none; align-items: center; gap: 10px; text-decoration: none; color: var(--ink); }
109 .brand-picture { display: block; flex: none; }
110 .brand img { width: 28px; height: 28px; border-radius: 8px; display: block; }
111 .nav .brand img { width: 90px; height: auto; border-radius: 0; }
112 .brand span { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; }
113 .nav-links { display: flex; min-width: 0; gap: 6px; margin-right: auto; margin-left: 18px; }
114 .nav-links a {
115 flex: none; white-space: nowrap;
116 color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 500;
117 padding: 8px 12px; border-radius: 7px;
118 transition: color 0.2s, background 0.2s;
119 }
120 .nav-links a:hover { color: var(--ink); background: var(--bg-soft); }
121 .nav-links a.here { color: var(--accent); background: var(--accent-soft); }
122 .nav-github {
123 display: inline-flex; flex: none; align-items: center; gap: 8px;
124 color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 500;
125 padding: 8px 10px; border-radius: 7px;
126 transition: color 0.2s, background 0.2s;
127 }
128 .nav-github svg { width: 18px; height: 18px; display: block; }
129 .nav-github:hover { color: var(--ink); background: var(--bg-soft); }
130 .nav-github:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
131
132 .btn {
133 display: inline-flex; align-items: center; justify-content: center; gap: 8px;
134 font-family: var(--font-sans); font-size: 14.5px; font-weight: 550; letter-spacing: -0.005em;
135 padding: 11px 20px; border-radius: 9px; text-decoration: none; cursor: pointer;
136 border: none; transition: background 0.2s, box-shadow 0.25s, color 0.2s, border-color 0.2s;
137 }
138 .btn-dark { background: var(--accent); color: #fff; }
139 .btn-dark:hover { background: var(--accent-deep); }
140 .btn-ghost { background: transparent; color: var(--ink); border: 1px solid var(--line); }
141 .btn-ghost:hover { border-color: color-mix(in oklch, var(--accent) 45%, var(--line)); color: var(--accent); }
142 .nav .btn { padding: 9px 20px; font-size: 14px; }
143 .nav .btn, .nav .lang-switch, .nav .theme-switch, .nav-acct { flex: none; }
144
145 .nav-menu-toggle {
146 display: none; flex: none; align-items: center; justify-content: center;
147 width: 38px; height: 38px; padding: 0; color: var(--ink);
148 background: var(--bg-soft); border: 1px solid var(--line); border-radius: 9px;
149 cursor: pointer; transition: color 0.2s, background 0.2s, border-color 0.2s;
150 }
151 .nav-menu-toggle:hover { color: var(--accent); border-color: var(--accent-line); background: var(--accent-soft); }
152 .nav-menu-toggle:focus-visible, .mobile-nav-close:focus-visible, .mobile-nav-backdrop:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
153 .nav-menu-toggle svg, .mobile-nav-close svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
154 body.mobile-nav-open { overflow: hidden; }
155 .mobile-nav { position: fixed; inset: 0; z-index: 100; height: 100vh; min-height: 100dvh; opacity: 0; transition: opacity 0.22s ease; }
156 .mobile-nav.is-open { opacity: 1; }
157 .mobile-nav-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: oklch(0.12 0.01 260 / 0.42); cursor: pointer; }
158 .mobile-nav-panel {
159 position: absolute; top: 0; right: 0; display: flex; flex-direction: column;
160 width: min(360px, calc(100% - 24px)); height: 100%; padding: 24px;
161 color: var(--ink); background: var(--bg); border-left: 1px solid var(--line);
162 box-shadow: -18px 0 40px oklch(0.12 0.01 260 / 0.16);
163 transform: translateX(100%); transition: transform 0.28s var(--ease); overflow-y: auto;
164 }
165 .mobile-nav.is-open .mobile-nav-panel { transform: translateX(0); }
166 .mobile-nav-head { display: flex; align-items: center; justify-content: space-between; min-height: 38px; font-size: 15px; font-weight: 600; }
167 .mobile-nav-close { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; color: var(--ink-2); background: var(--bg-soft); border: 1px solid var(--line); border-radius: 9px; cursor: pointer; }
168 .mobile-nav-close:hover { color: var(--accent); border-color: var(--accent-line); }
169 .mobile-nav-links { display: flex; flex-direction: column; gap: 4px; margin-top: 26px; }
170 .mobile-nav-links a { display: flex; align-items: center; min-height: 44px; padding: 10px 12px; color: var(--ink-2); text-decoration: none; font-size: 16px; font-weight: 500; border-radius: 8px; }
171 .mobile-nav-links a:hover, .mobile-nav-links a.here { color: var(--accent); background: var(--accent-soft); }
172 .mobile-nav-actions { display: flex; flex-direction: column; gap: 10px; margin-top: auto; padding-top: 28px; }
173 .mobile-nav-actions > a, .mobile-nav-actions > .nav-acct, .mobile-nav-actions > span { width: 100%; }
174 .mobile-nav-actions > span .btn, .mobile-nav-actions > .nav-acct .btn { width: 100%; }
175 .mobile-nav-actions .btn { min-height: 44px; }
176 .mobile-nav-github { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; color: var(--ink-2); font-size: 14px; font-weight: 500; border: 1px solid var(--line); border-radius: 9px; }
177 .mobile-nav-github:hover { color: var(--accent); border-color: var(--accent-line); background: var(--accent-soft); }
178 .mobile-nav-github svg { width: 18px; height: 18px; }
179
180 @media (prefers-reduced-motion: reduce) {
181 .mobile-nav, .mobile-nav-panel { transition: none; }
182 }
183
184 @media (max-width: 1260px) {
185 .nav-link--secondary { display: none; }
186 }
187
188 @media (max-width: 1100px) {
189 .nav-links { display: none; }
190 .nav-github { margin-left: auto; padding-inline: 8px; }
191 .nav-github-label { display: none; }
192 .nav-menu-toggle { display: inline-flex; }
193 }
194
195
196 .hero { position: relative; padding: 150px 0 0; text-align: center; }
197
198 .eyebrow {
199 display: inline-flex; align-items: center; gap: 9px;
200 font-family: var(--font-mono); font-size: 12.5px; font-weight: 500;
201 color: var(--accent); margin-bottom: 26px; letter-spacing: 0.01em;
202 }
203 .eyebrow .dot { width: 7px; height: 7px; border-radius: 50%; background: oklch(0.7 0.16 150); box-shadow: 0 0 0 3px oklch(0.7 0.16 150 / 0.18); }
204
205 .hero h1 {
206 max-width: 13em; margin: 0 auto;
207 font-size: clamp(44px, 5.4vw, 76px);
208 line-height: 1.06; letter-spacing: -0.035em; font-weight: 600;
209 text-wrap: balance;
210 }
211 .hero h1 .grad { color: var(--accent); }
212 .hero h1 em { font-style: italic; color: var(--accent); }
213 .hero h1 .tt {
214 color: var(--accent);
215 box-shadow: inset 0 -0.06em 0 color-mix(in oklch, var(--accent) 30%, transparent);
216 }
217 .hero .sub {
218 margin: 26px auto 0; max-width: 640px;
219 font-size: 17.5px; line-height: 1.62; color: var(--ink-2); font-weight: 400;
220 text-wrap: pretty;
221 }
222 .hero .sub b { color: var(--ink); font-weight: 600; }
223
224
225 .hero-install {
226 width: min(960px, 100%);
227 margin: 56px auto 0;
228 display: grid;
229 grid-template-columns: 1fr 1px 1fr;
230 gap: 0;
231 background: #f6f7f9;
232 border: none;
233 border-radius: var(--radius);
234 overflow: hidden;
235 }
236
237
238 :root[data-theme="dark"] .hero-install {
239 background: var(--bg-soft);
240 }
241
242
243 .hero-install::before {
244 content: "";
245 grid-column: 2;
246 grid-row: 1;
247 background: var(--line);
248 align-self: stretch;
249 margin: 32px 0;
250 opacity: 0.7;
251 }
252
253 .install-option {
254 position: relative;
255 display: flex;
256 flex-direction: column;
257 gap: 10px;
258 min-height: 200px;
259 padding: 36px 44px;
260 background: transparent;
261 border: none;
262 border-radius: 0;
263 overflow: hidden;
264 cursor: default;
265 }
266
267
268 .install-option--desktop {
269 background: transparent;
270 border-color: transparent;
271 }
272
273
274 .install-option canvas.particle-canvas {
275 position: absolute;
276 inset: 0;
277 width: 100%;
278 height: 100%;
279 pointer-events: none;
280 z-index: 0;
281 }
282
283 .install-option > * {
284 position: relative;
285 z-index: 1;
286 }
287
288 .install-kicker {
289 display: inline-flex;
290 align-items: center;
291 gap: 6px;
292 font-size: 12.5px;
293 font-weight: 500;
294 letter-spacing: 0.04em;
295 text-transform: uppercase;
296 color: var(--ink-2);
297 }
298
299 .install-kicker::before {
300 content: "";
301 width: 6px;
302 height: 6px;
303 border-radius: 50%;
304 background: var(--accent);
305 }
306
307 .install-option strong {
308 font-size: 15px;
309 line-height: 1.5;
310 font-weight: 600;
311 color: var(--ink);
312 max-width: 340px;
313 }
314
315
316 .install-option .btn,
317 .install-option .install {
318 margin-top: auto;
319 padding-top: 20px;
320 align-self: stretch;
321 width: 100%;
322 height: 40px;
323 box-sizing: border-box;
324 }
325
326
327 .hero-install .btn {
328 display: inline-flex;
329 align-items: center;
330 justify-content: center;
331 gap: 8px;
332 padding: 0 20px;
333 font-size: 14px;
334 font-weight: 600;
335 color: #fff;
336 background: var(--accent);
337 border: none;
338 border-radius: 8px;
339 text-decoration: none;
340 transition: background 0.2s;
341 }
342
343 .hero-install .btn:hover {
344 background: var(--accent-deep);
345 }
346
347
348 .hero-install .install {
349 display: flex;
350 align-items: center;
351 gap: 10px;
352 padding: 0 6px 0 14px;
353 background: var(--card);
354 border: 1px solid var(--line);
355 border-radius: 8px;
356 font-family: var(--font-mono);
357 font-size: 13px;
358 color: var(--ink);
359 white-space: nowrap;
360 }
361
362 .hero-install .install-command {
363 min-width: 0;
364 overflow: hidden;
365 text-overflow: ellipsis;
366 white-space: nowrap;
367 }
368
369 .hero-install .install .ps1 {
370 color: var(--accent);
371 user-select: none;
372 flex: none;
373 }
374
375
376 .hero-install .install button {
377 flex: none;
378 height: 28px;
379 margin-left: auto;
380 padding: 0 14px;
381 font-family: var(--font-sans);
382 font-size: 12px;
383 font-weight: 600;
384 color: #fff;
385 background: var(--accent);
386 border: none;
387 border-radius: 6px;
388 cursor: pointer;
389 transition: background 0.2s;
390 }
391
392 .hero-install .install button:hover {
393 background: var(--accent-deep);
394 }
395
396 .hero-install .install button.copied {
397 background: oklch(0.55 0.14 155);
398 }
399
400
401 .install-option__more,
402 .install-option a[href*="原生"],
403 .install-option a[href*="安装包"] {
404 display: none !important;
405 }
406
407 .install {
408 display: inline-flex; align-items: center; gap: 14px; min-width: 0;
409 font-family: var(--font-mono); font-size: 13.5px; color: var(--ink);
410 background: var(--bg-soft); border: 1px solid var(--line); border-radius: var(--radius-sm);
411 padding: 10px 8px 10px 16px;
412 white-space: nowrap;
413 }
414 .install .ps1 { color: var(--accent); user-select: none; }
415 .install button {
416 flex: none;
417 font-family: var(--font-sans); font-size: 12.5px; font-weight: 600;
418 background: var(--card); color: var(--ink-2); border: 1px solid var(--line); cursor: pointer;
419 padding: 6px 13px; border-radius: 6px;
420 transition: background 0.2s, color 0.2s, border-color 0.2s;
421 }
422 .install button:hover { color: var(--accent); border-color: color-mix(in oklch, var(--accent) 45%, var(--line)); }
423
424
425 .also {
426 max-width: 960px;
427 margin: 18px auto 0;
428 font-size: 13.5px;
429 line-height: 1.7;
430 color: var(--ink-3);
431 }
432
433 .also-row {
434 display: flex;
435 align-items: baseline;
436 justify-content: center;
437 gap: 8px;
438 flex-wrap: wrap;
439 }
440
441 .also-label {
442 flex: none;
443 font-weight: 600;
444 color: var(--ink-2);
445 }
446
447 .also-links {
448 display: flex;
449 align-items: baseline;
450 justify-content: center;
451 gap: 0 10px;
452 flex-wrap: wrap;
453 }
454
455 .also a {
456 color: var(--accent);
457 font-weight: 500;
458 text-decoration: none;
459 transition: opacity 0.2s;
460 }
461
462 .also a:hover {
463 opacity: 0.75;
464 text-decoration: underline;
465 text-underline-offset: 3px;
466 }
467
468 .also a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; }
469
470 .also-sep {
471 color: var(--ink-3);
472 }
473
474 .also code {
475 font-family: var(--font-mono);
476 font-size: 12px;
477 color: var(--ink-2);
478 background: var(--bg-soft);
479 padding: 2px 6px;
480 border-radius: 5px;
481 }
482
483
484 .hero-cta { margin-top: 38px; display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; }
485 .cold-blocks { display: flex; justify-content: center; gap: 8px; margin-top: 46px; }
486 .cold-blocks i {
487 width: 26px; height: 26px; border-radius: 7px;
488 background: var(--accent-soft);
489 box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--accent) 26%, transparent);
490 }
491 .cold-blocks i.new { background: var(--accent); box-shadow: none; }
492
493
494 .term-stage { position: relative; margin: 58px auto 0; max-width: 880px; }
495 .fig {
496 font-family: var(--font-mono); font-size: 12px; color: var(--ink-3);
497 margin-bottom: 12px; text-align: left;
498 }
499 .term {
500 position: relative; text-align: left;
501 background: var(--term-bg);
502 border: 1px solid var(--term-edge);
503 border-radius: var(--radius); overflow: hidden;
504 box-shadow: var(--shadow-2);
505 }
506 .term-bar {
507 display: flex; align-items: center; gap: 8px;
508 padding: 14px 20px; border-bottom: 1px solid var(--term-edge);
509 }
510 .term-bar i { width: 10px; height: 10px; border-radius: 50%; background: oklch(0.42 0.008 260); }
511 .term-bar .title {
512 margin: 0 auto; transform: translateX(-20px);
513 font-family: var(--font-mono); font-size: 12px; color: oklch(0.62 0.008 260);
514 }
515 .term-body {
516 padding: 26px 30px 28px; min-height: 312px;
517 font-family: var(--font-mono); font-size: 13.5px; line-height: 2.05;
518 color: oklch(0.9 0.004 260); white-space: pre-wrap;
519 }
520 .term-body .tl { display: block; opacity: 0; transform: translateY(4px); }
521 .term-body .tl.on { opacity: 1; transform: none; transition: opacity 0.4s, transform 0.4s var(--ease); }
522 .t-dim { color: oklch(0.6 0.008 260); }
523 .t-acc { color: var(--acc-1); }
524 .t-vio { color: var(--acc-2); }
525 .t-ok { color: oklch(0.78 0.13 160); }
526 .t-warm{ color: oklch(0.82 0.11 80); }
527 .t-add { color: oklch(0.78 0.13 160); }
528 .caret {
529 display: inline-block; width: 8px; height: 16px; vertical-align: -3px;
530 background: var(--acc-1); animation: blink 1.1s steps(1) infinite;
531 }
532 @keyframes blink { 50% { opacity: 0; } }
533
534 .term-stat {
535 display: flex; gap: 26px; justify-content: space-between; flex-wrap: wrap;
536 border-top: 1px solid var(--term-edge); padding: 14px 30px;
537 font-family: var(--font-mono); font-size: 12px; color: oklch(0.6 0.008 260);
538 }
539 .term-stat b { color: oklch(0.86 0.02 260); font-weight: 500; }
540
541
542 section { padding: 118px 0 0; }
543 .sec-head { max-width: 680px; margin: 0 auto 56px; text-align: center; }
544 .sec-head.center { margin-left: auto; margin-right: auto; text-align: center; }
545 .kicker {
546 font-family: var(--font-mono); font-size: 13.5px; font-weight: 500; letter-spacing: 0.02em;
547 color: var(--accent); display: block; margin-bottom: 18px;
548 }
549 .kicker::before { content: "$ "; color: var(--ink-3); }
550 .sec-head h2 {
551 font-size: clamp(32px, 3.8vw, 48px); line-height: 1.12;
552 letter-spacing: -0.02em; font-weight: 600; text-wrap: balance;
553 }
554 .sec-head h2 .em { color: var(--accent); }
555 .sec-head p { margin-top: 18px; font-size: 17px; line-height: 1.65; color: var(--ink-2); text-wrap: pretty; }
556
557 .sec-head.split {
558 max-width: none; margin: 0 0 56px; text-align: left;
559 display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
560 gap: 20px 90px; align-items: end;
561 }
562 .sec-head.split .kicker { grid-column: 1 / -1; margin-bottom: 4px; }
563 .sec-head.split h2 { margin: 0; }
564 .sec-head.split p { margin: 0 0 6px; }
565
566
567 .feat-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 20px; }
568 .feat { grid-column: span 6; }
569 .feat:nth-child(1) { grid-column: span 7; }
570 .feat:nth-child(2) { grid-column: span 5; }
571 .feat:nth-child(3) { grid-column: span 5; }
572 .feat:nth-child(4) { grid-column: span 7; }
573 .feat:nth-child(5) { grid-column: span 6; }
574 .feat:nth-child(6) { grid-column: span 6; }
575 .feat-viz { display: flex; gap: 6px; margin-top: 30px; }
576 .feat-viz i {
577 width: 20px; height: 20px; border-radius: 6px;
578 background: var(--accent-soft);
579 box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--accent) 26%, transparent);
580 }
581 .feat-viz i.n { background: var(--accent); box-shadow: none; }
582 .feat-chip {
583 display: inline-block; margin-top: 26px;
584 font-family: var(--font-mono); font-size: 12px;
585 background: var(--bg-soft); border: 1px solid var(--line); border-radius: 7px;
586 padding: 8px 12px; color: var(--ink-2);
587 }
588 .feat {
589 position: relative; overflow: hidden;
590 background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
591 padding: 30px 30px 32px;
592 transition: border-color 0.25s;
593 }
594 .feat:hover { border-color: color-mix(in oklch, var(--accent) 38%, var(--line)); }
595 .feat .tag {
596 font-family: var(--font-mono); font-size: 11.5px; color: var(--ink-3);
597 letter-spacing: 0.04em; display: block; margin-bottom: 18px;
598 }
599 .feat:hover .tag { color: var(--accent); }
600 .feat h3 { font-size: 20px; letter-spacing: -0.018em; font-weight: 600; margin-bottom: 10px; }
601 .feat p { font-size: 15px; line-height: 1.65; color: var(--ink-2); text-wrap: pretty; }
602 .feat code { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink); }
603
604
605 .surf-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
606 .surf {
607 display: flex; flex-direction: column; gap: 10px;
608 padding: 20px 20px 24px;
609 border: 1px solid var(--line); border-radius: var(--radius);
610 background: var(--card);
611 transition: border-color 0.25s, transform 0.25s var(--ease);
612 }
613 .surf:hover { border-color: color-mix(in oklch, var(--accent) 38%, var(--line)); transform: translateY(-2px); }
614 .surf h3 { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; }
615 .surf p { flex: 1; font-size: 14px; line-height: 1.6; color: var(--ink-2); text-wrap: pretty; }
616 .surf code {
617 align-self: flex-start;
618 font-family: var(--font-mono); font-size: 12px; color: var(--ink-2);
619 background: var(--bg-soft); border: 1px solid var(--line);
620 border-radius: 7px; padding: 6px 10px;
621 }
622 .surf-art {
623 display: grid; place-items: center;
624 height: 132px; margin-bottom: 4px;
625 border-radius: var(--radius-sm);
626 background: var(--bg-soft); overflow: hidden;
627 }
628 .surf-win {
629 display: grid; grid-template-rows: auto 1fr;
630 width: 78%; height: 88px;
631 border: 1px solid var(--line); border-radius: 8px;
632 background: var(--card); overflow: hidden;
633 }
634 .surf-win .bar { height: 12px; border-bottom: 1px solid var(--line); background: var(--bg-soft); }
635 .surf-win .bar.url { position: relative; }
636 .surf-win .bar.url::after {
637 content: ""; position: absolute; left: 8px; top: 3px;
638 width: 58%; height: 6px; border-radius: 999px;
639 background: color-mix(in oklch, var(--ink) 12%, transparent);
640 }
641 .surf-win .body { display: flex; flex-direction: column; gap: 6px; padding: 9px 10px; }
642 .surf-win .l { height: 5px; width: var(--w, 60%); border-radius: 999px; background: color-mix(in oklch, var(--ink) 14%, transparent); }
643 .surf-win .l.ok { background: color-mix(in oklch, var(--accent) 55%, transparent); }
644 .surf-win .l.add { background: color-mix(in oklch, oklch(0.65 0.15 155) 62%, transparent); }
645 .surf-win .cur { width: 5px; height: 8px; background: var(--accent); }
646 .surf-win.app .body, .surf-win.ide .body { flex-direction: row; gap: 8px; }
647 .surf-win .side, .surf-win .tree {
648 display: flex; flex-direction: column; gap: 5px;
649 width: 24px; flex: none; padding-right: 7px;
650 border-right: 1px solid var(--line);
651 }
652 .surf-win .side i, .surf-win .tree i { height: 5px; width: 100%; border-radius: 999px; background: color-mix(in oklch, var(--ink) 12%, transparent); }
653 .surf-win .side i:first-child { background: color-mix(in oklch, var(--accent) 50%, transparent); }
654 .surf-win .tree i:nth-child(2) { width: 68%; }
655 .surf-win .tree i:nth-child(3) { width: 86%; }
656 .surf-win .main { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
657 .surf-win.cli { background: var(--term-bg); border-color: var(--term-edge); }
658 .surf-win.cli .bar { background: color-mix(in oklch, #fff 6%, var(--term-bg)); border-bottom-color: var(--term-edge); }
659 .surf-win.cli .l { background: color-mix(in oklch, #fff 22%, transparent); }
660 .surf-win.cli .l.ok { background: oklch(0.72 0.13 160); }
661
662
663 .steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
664 .step { padding: 6px 40px 6px 0; }
665 .step + .step { padding-left: 40px; border-left: 1px solid var(--line); }
666 .step .num {
667 display: inline-flex; align-items: center; justify-content: center;
668 width: 30px; height: 30px; border-radius: 7px;
669 background: var(--accent-soft);
670 font-family: var(--font-mono); font-size: 12.5px; font-weight: 500; color: var(--accent);
671 margin-bottom: 18px;
672 }
673 .step h3 { font-size: 18px; font-weight: 600; letter-spacing: -0.018em; margin-bottom: 10px; }
674 .step p { font-size: 14.5px; line-height: 1.62; color: var(--ink-2); }
675 .step code {
676 display: inline-block; margin-top: 16px; font-family: var(--font-mono); font-size: 12.5px;
677 background: var(--bg-soft); border: 1px solid var(--line); border-radius: 7px;
678 padding: 7px 12px; color: var(--ink);
679 }
680
681
682 .crew {
683 margin-top: 8px; display: grid; gap: 18px; overflow: hidden; padding: 24px 0 10px;
684 -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
685 mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
686 }
687 .crew-row { display: flex; width: max-content; }
688 .crew-set { display: flex; align-items: center; gap: 16px; padding-right: 16px; }
689 @media (prefers-reduced-motion: no-preference) {
690 body[data-motion="rich"] .crew-row { animation: crew-slide 60s linear infinite; }
691 body[data-motion="rich"] .crew-row.rev { animation-duration: 74s; animation-direction: reverse; }
692 .crew-row:hover { animation-play-state: paused !important; }
693 }
694 @keyframes crew-slide { to { transform: translateX(-50%); } }
695
696 .av {
697 position: relative; flex: none; display: flex; align-items: center; justify-content: center;
698 width: 54px; height: 54px; border-radius: 50%;
699 color: #fff; font-size: 14px; font-weight: 600; letter-spacing: 0.02em;
700 border: 2px solid var(--bg); box-shadow: var(--shadow-1);
701 text-decoration: none; overflow: hidden;
702 transition: transform 0.3s var(--ease), box-shadow 0.3s;
703 }
704 .av img { width: 100%; height: 100%; object-fit: cover; }
705 .av.sm { width: 44px; height: 44px; font-size: 12px; }
706 .av.lg { width: 64px; height: 64px; font-size: 16px; }
707 .av:hover { transform: translateY(-6px) scale(1.1); box-shadow: var(--shadow-2); z-index: 2; }
708 .av::after {
709 content: attr(data-h);
710 position: absolute; bottom: calc(100% + 9px); left: 50%; transform: translateX(-50%) translateY(4px);
711 font-size: 12px; font-weight: 500; white-space: nowrap;
712 background: var(--ink); color: var(--bg); padding: 5px 12px; border-radius: 8px;
713 opacity: 0; pointer-events: none;
714 transition: opacity 0.2s, transform 0.2s var(--ease);
715 }
716 .av:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }
717 .av.you {
718 background: transparent; border: 1.5px dashed var(--ink-3); color: var(--ink-2);
719 font-size: 18px; box-shadow: none;
720 }
721 .av.you:hover { border-color: var(--accent); color: var(--accent); }
722
723 .crew-cta { display: flex; justify-content: center; gap: 14px; margin-top: 38px; flex-wrap: wrap; }
724 .crew-note {
725 margin-top: 26px; text-align: center;
726 font-size: 13.5px; color: var(--ink-3);
727 }
728
729
730 @media (prefers-reduced-motion: no-preference) {
731 body[data-motion="rich"] .reveal {
732 opacity: 0; transform: translateY(10px);
733 transition: opacity 0.45s var(--ease), transform 0.45s var(--ease);
734 transition-delay: var(--d, 0s);
735 }
736 body[data-motion="rich"] .reveal.in { opacity: 1; transform: none; }
737 }
738
739
740 .os-card::after, .doc-card::after {
741 content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px;
742 background: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%),
743 color-mix(in oklch, var(--accent) 45%, transparent), transparent 70%);
744 -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
745 -webkit-mask-composite: xor;
746 mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
747 mask-composite: exclude;
748 opacity: 0; transition: opacity 0.35s; pointer-events: none;
749 }
750 .os-card:hover::after, .doc-card:hover::after { opacity: 1; }
751
752
753 .divider { position: relative; height: 24px; margin-top: 84px; pointer-events: none; }
754 .divider + section { padding-top: 52px; }
755 .divider .line {
756 position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
757 width: min(1100px, calc(100% - 80px)); height: 1px;
758 background: var(--line);
759 -webkit-mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent);
760 mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent);
761 }
762
763
764 .cta {
765 margin-top: 150px; position: relative;
766 background: var(--bg-soft); color: var(--ink); text-align: center;
767 padding: 110px 40px 120px;
768 }
769 .cta h2 { font-size: clamp(34px, 4.2vw, 52px); letter-spacing: -0.02em; font-weight: 600; text-wrap: balance; }
770 .cta h2 .em { color: var(--accent); }
771 .cta p { margin: 20px auto 0; max-width: 560px; font-size: 17px; line-height: 1.65; color: var(--ink-2); }
772 .cta .install { background: var(--card); box-shadow: var(--shadow-1); }
773 .cta .install button { background: var(--accent-soft); box-shadow: none; }
774 .cta .install button:hover { background: color-mix(in oklch, var(--accent) 16%, var(--bg)); }
775 .cta .install button.copied { background: oklch(0.55 0.14 155); color: #fff; }
776
777
778 .dl { margin-top: 44px; }
779 .dl-tabs {
780 display: inline-flex; gap: 2px; padding: 3px;
781 background: var(--bg-soft); border: 1px solid var(--line); border-radius: 9px;
782 }
783 .dl-tab {
784 font-family: var(--font-sans); font-size: 13.5px; font-weight: 500;
785 color: var(--ink-2); background: transparent; border: none; cursor: pointer;
786 padding: 8px 18px; border-radius: 6px;
787 transition: background 0.25s, color 0.25s, box-shadow 0.25s;
788 }
789 .dl-tab:hover { color: var(--ink); }
790 .dl-tab.active { background: var(--card); color: var(--accent); box-shadow: var(--shadow-1); }
791
792 .dl-pane { display: none; margin-top: 36px; }
793 .dl-pane.active { display: block; animation: pane-in 0.45s var(--ease); }
794 @keyframes pane-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
795
796 .release-channel-switch {
797 display: inline-grid; grid-template-columns: repeat(2, minmax(112px, 1fr)); gap: 3px;
798 padding: 4px; margin: 0 auto 10px;
799 background: color-mix(in oklch, var(--ink) 6%, var(--bg));
800 border: 1px solid var(--line); border-radius: var(--radius-sm);
801 }
802 .release-channel-switch button {
803 min-height: 36px; padding: 7px 18px;
804 border: 0; border-radius: 7px; cursor: pointer;
805 background: transparent; color: var(--ink-2);
806 font-family: var(--font-sans); font-size: 13px; font-weight: 600;
807 transition: background 0.2s, color 0.2s, box-shadow 0.2s;
808 }
809 .release-channel-switch button:hover { color: var(--ink); }
810 .release-channel-switch button.active {
811 background: var(--card); color: var(--accent); box-shadow: var(--shadow-1);
812 }
813 .release-channel-switch button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
814 .release-channel-summary {
815 min-height: 24px; margin: 0 auto 22px;
816 color: var(--ink-3); font-size: 13px; line-height: 1.55;
817 }
818 .release-upgrade-command { margin: 12px auto 24px; }
819 .cli-os-grid { margin-top: 0; }
820
821 .dl-note { margin-top: 22px; font-size: 13px; color: var(--ink-3); }
822 .dl-note .mono { font-family: var(--font-mono); font-size: 12px; color: var(--ink-2); }
823 .dl-note a { color: var(--accent); text-decoration: none; }
824 .dl-note a:hover { text-decoration: underline; }
825
826
827 .chan {
828 max-width: 660px; margin: 26px auto 0; text-align: left;
829 background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden;
830 }
831 .chan-row {
832 display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
833 padding: 16px 22px; font-size: 13.5px;
834 color: var(--ink-3);
835 }
836 .chan-row + .chan-row { border-top: 1px solid var(--line); }
837 .chan-row code { font-family: var(--font-mono); font-size: 13px; color: var(--ink); width: 185px; flex: none; }
838 .chan-row .v { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink-2); width: 92px; flex: none; }
839 .chan-row .s { flex: 1; min-width: 200px; }
840 .chan-row.rec { background: var(--accent-soft); }
841 .chan-row.rec code { color: var(--accent); font-weight: 500; }
842 .chan-row.rec .s { color: var(--ink-2); }
843 .chan-badge {
844 font-size: 11px; font-weight: 600; letter-spacing: 0.02em;
845 color: #fff; background: var(--accent);
846 padding: 4px 9px; border-radius: 5px; flex: none;
847 }
848 .chan-badge.pre { color: var(--ink-3); background: var(--bg-soft); box-shadow: inset 0 0 0 1px var(--line); }
849 .chan-row:not(.rec) code, .chan-row:not(.rec) .v { text-decoration: line-through; text-decoration-color: var(--ink-3); }
850
851 .os-grid {
852 display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;
853 max-width: 900px; margin: 0 auto; text-align: left;
854 }
855 .os-card {
856 position: relative; display: flex; flex-direction: column; gap: 10px;
857 background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
858 padding: 26px 24px 24px;
859 transition: border-color 0.25s;
860 }
861 .os-card:hover { border-color: color-mix(in oklch, var(--accent) 38%, var(--line)); }
862 .os-card h4 { font-size: 19px; font-weight: 600; letter-spacing: -0.018em; color: var(--ink); }
863 .os-card .meta { font-family: var(--font-mono); font-size: 11.5px; line-height: 1.7; color: var(--ink-3); }
864 .os-card .btn { margin-top: 16px; }
865 .os-options {
866 display: flex; flex-wrap: wrap; gap: 8px;
867 margin-top: 4px;
868 }
869 .os-options a {
870 display: inline-flex; align-items: center; min-height: 28px;
871 padding: 5px 9px; border-radius: 7px;
872 background: var(--bg-soft); border: 1px solid var(--line);
873 color: var(--ink-2); text-decoration: none;
874 font-size: 12px; font-weight: 600; line-height: 1.2;
875 }
876 .os-options a:hover {
877 border-color: color-mix(in oklch, var(--accent) 40%, var(--line));
878 color: var(--accent); text-decoration: none;
879 }
880 .os-card .alt {
881 font-size: 12.5px; color: var(--ink-3); text-align: center; margin-top: 2px;
882 }
883 .os-card .alt a { color: var(--accent); text-decoration: none; font-weight: 500; }
884 .os-card .alt a:hover { text-decoration: underline; }
885 .editor-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 760px; }
886 .editor-card { min-height: 190px; }
887 .editor-card--primary {
888 background: linear-gradient(180deg, color-mix(in oklch, var(--accent) 10%, var(--card)), var(--card) 82%);
889 border: 1px solid color-mix(in oklch, var(--accent) 24%, var(--line));
890 }
891 .editor-card .btn { margin-top: auto; align-self: flex-start; }
892 .editor-note { max-width: 820px; margin-inline: auto; line-height: 1.65; }
893 .editor-note code { font-family: var(--font-mono); font-size: 12px; color: var(--ink-2); }
894 .btn-light { background: var(--accent-soft); color: var(--accent); }
895 .btn-light:hover { background: color-mix(in oklch, var(--accent) 16%, var(--bg)); }
896 .dl-help {
897 position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto auto;
898 gap: 8px 12px; align-items: center;
899 max-width: 900px; margin: 18px auto 0; padding: 16px 18px;
900 background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm);
901 box-shadow: var(--shadow-1); text-align: left;
902 color: var(--ink-2); font-size: 13.5px; line-height: 1.5;
903 }
904 .dl-help strong { grid-column: 1 / -1; color: var(--ink); font-size: 14.5px; }
905 .dl-help code {
906 grid-column: 1 / 2; min-width: 0; overflow-x: auto;
907 font-family: var(--font-mono); font-size: 12.5px;
908 background: var(--bg-soft); border-radius: 8px; padding: 8px 10px;
909 color: var(--ink); white-space: nowrap;
910 }
911 .dl-help button {
912 font-family: var(--font-sans); font-size: 12.5px; font-weight: 600;
913 color: var(--accent); background: var(--accent-soft);
914 border: none; border-radius: 7px; padding: 7px 13px; cursor: pointer;
915 }
916 .dl-help button.copied { background: oklch(0.55 0.14 155); color: #fff; }
917 .dl-help a { color: var(--accent); text-decoration: none; font-weight: 600; }
918 .dl-help a:hover { text-decoration: underline; }
919 .os-card.detected { box-shadow: 0 0 0 2px var(--accent), var(--shadow-1); }
920 @keyframes cardFlash {
921 0%, 100% { box-shadow: 0 0 0 2px var(--accent), var(--shadow-1); }
922 25%, 65% { box-shadow: 0 0 0 3px var(--accent), 0 18px 44px -18px color-mix(in oklch, var(--accent) 55%, transparent); transform: translateY(-3px); }
923 }
924 .os-card.flash { animation: cardFlash 2s var(--ease); }
925 .os-chip {
926 position: absolute; top: -11px; right: 16px;
927 font-size: 11.5px; font-weight: 600; letter-spacing: 0.02em;
928 color: #fff; background: var(--accent);
929 padding: 4px 10px; border-radius: 5px;
930 }
931
932
933 .docs-layout {
934 display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 56px;
935 max-width: 1240px; margin: 0 auto; padding: 124px 40px 110px;
936 }
937 .docs-side {
938 position: sticky; top: 110px; align-self: start;
939 display: flex; flex-direction: column; gap: 16px;
940 max-height: calc(100dvh - 132px); overflow-y: auto; padding-right: 4px;
941 }
942 .docs-side-links {
943 border: 1px solid var(--line);
944 border-radius: var(--radius-sm);
945 background: var(--card);
946 padding: 16px;
947 }
948 .side-card-kicker {
949 display: block; margin-bottom: 8px;
950 font-size: 11.5px; font-weight: 700; letter-spacing: 0.06em;
951 text-transform: uppercase; color: var(--accent);
952 }
953 .side-group a small {
954 display: block; margin-top: 3px;
955 font-size: 12px; font-weight: 500; line-height: 1.35;
956 color: var(--ink-3);
957 }
958 .docs-main { min-width: 0; }
959 .side-nav {
960 display: flex; flex-direction: column; gap: 18px;
961 padding: 2px 0;
962 }
963 .side-group .gh {
964 font-size: 12px; font-weight: 600; letter-spacing: 0.06em;
965 text-transform: uppercase; color: var(--ink-3); display: block; margin: 0 0 8px; padding-left: 16px;
966 }
967 .side-group a {
968 display: block; padding: 9px 16px; border-radius: 14px;
969 color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 500;
970 transition: color 0.2s, background 0.2s;
971 }
972 .side-group a strong { display: block; color: inherit; font-size: 14px; line-height: 1.25; }
973 .side-group a code {
974 font-family: var(--font-mono); font-size: 11px;
975 background: transparent; color: inherit; padding: 0;
976 }
977 .side-group a:hover { color: var(--ink); background: var(--bg-soft); }
978 .side-group a.active { color: var(--accent); background: var(--accent-soft); }
979 .side-group a.active small { color: color-mix(in oklch, var(--accent) 72%, var(--ink-3)); }
980 .docs-side-links {
981 display: grid; gap: 8px; margin-top: 2px;
982 }
983 .docs-side-links a {
984 display: flex; align-items: center; justify-content: space-between; gap: 10px;
985 color: var(--ink-2); text-decoration: none; font-size: 13.5px; font-weight: 600;
986 }
987 .docs-side-links a::after { content: "->"; color: var(--ink-3); font-size: 12px; }
988 .docs-side-links a:hover { color: var(--accent); }
989 .docs-hero {
990 padding: 8px 0 36px; margin-bottom: 10px;
991 border-bottom: 1px solid var(--line);
992 }
993 .docs-kicker {
994 display: inline-flex; align-items: center; margin-bottom: 12px;
995 font-family: var(--font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.07em;
996 text-transform: uppercase; color: var(--accent);
997 }
998 .docs-kicker::before { content: "$ "; color: var(--ink-3); }
999 .docs-main h1 { font-size: 42px; line-height: 1.12; letter-spacing: -0.02em; font-weight: 600; margin: 0 0 14px; max-width: 760px; }
1000 .docs-main .lede { font-size: 17px; color: var(--ink-2); line-height: 1.65; margin: 0 0 26px; max-width: 760px; text-wrap: pretty; }
1001 .docs-path-grid {
1002 display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
1003 gap: 12px; margin-top: 24px;
1004 }
1005 .docs-path-grid a {
1006 display: flex; flex-direction: column; gap: 7px;
1007 min-height: 148px; padding: 17px;
1008 border: 1px solid var(--line); border-radius: var(--radius-sm);
1009 background: var(--card);
1010 color: var(--ink-2); text-decoration: none;
1011 transition: border-color 0.2s, background 0.2s, transform 0.2s var(--ease);
1012 }
1013 .docs-path-grid a:hover {
1014 border-color: color-mix(in oklch, var(--accent) 38%, var(--line));
1015 background: var(--card); transform: translateY(-1px); text-decoration: none;
1016 }
1017 .docs-path-grid strong {
1018 color: var(--ink); font-size: 14.5px; line-height: 1.25;
1019 }
1020 .docs-path-grid span {
1021 font-size: 13px; line-height: 1.55;
1022 }
1023 .docs-main h2 {
1024 font-size: 25px; letter-spacing: -0.012em; font-weight: 600;
1025 margin: 56px 0 8px; padding-top: 28px; border-top: 1px solid var(--line);
1026 scroll-margin-top: 88px;
1027 }
1028 .docs-main h2:first-of-type { border-top: none; padding-top: 0; margin-top: 0; }
1029 .docs-main h3 { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; margin: 28px 0 6px; }
1030 .docs-main p { font-size: 15.5px; line-height: 1.75; color: var(--ink-2); margin: 12px 0; text-wrap: pretty; }
1031 .docs-main a { color: var(--accent); text-decoration: none; }
1032 .docs-main a:hover { text-decoration: underline; }
1033 .docs-main ul { margin: 12px 0 12px 22px; color: var(--ink-2); font-size: 15.5px; line-height: 1.85; }
1034 .docs-main p code, .docs-main li code, .docs-main td code {
1035 font-family: var(--font-mono); font-size: 13px;
1036 background: var(--bg-soft); border-radius: 6px;
1037 padding: 2.5px 8px; color: var(--ink);
1038 }
1039 .codeblock {
1040 position: relative; margin: 18px 0; padding: 20px 24px;
1041 background: var(--term-bg); border-radius: var(--radius-sm);
1042 font-family: var(--font-mono); font-size: 13.5px; line-height: 1.85;
1043 color: oklch(0.9 0.004 260); overflow-x: auto; white-space: pre;
1044 }
1045 .codeblock--copy { padding-top: 52px; }
1046 .codeblock .c { color: oklch(0.58 0.008 260); }
1047 .codeblock .a { color: var(--acc-1); }
1048 .codeblock button {
1049 position: absolute; top: 12px; right: 12px;
1050 font-family: var(--font-sans); font-size: 12.5px; font-weight: 600;
1051 background: oklch(0.34 0.008 260); color: oklch(0.85 0.005 260);
1052 border: none; border-radius: 7px; padding: 6px 12px; cursor: pointer;
1053 transition: background 0.2s, color 0.2s;
1054 }
1055 .codeblock button:hover { background: oklch(0.4 0.01 260); color: #fff; }
1056 .codeblock button.copied { background: oklch(0.55 0.14 155); color: #fff; }
1057 .callout {
1058 display: flex; gap: 12px; align-items: flex-start;
1059 background: var(--accent-soft);
1060 border-radius: var(--radius-sm); padding: 18px 22px; margin: 22px 0;
1061 font-size: 14.5px; line-height: 1.65; color: var(--ink-2);
1062 }
1063 .callout .ico {
1064 flex: none; display: flex; align-items: center; justify-content: center;
1065 width: 22px; height: 22px; border-radius: 50%;
1066 background: var(--accent); color: #fff; font-size: 13px; font-weight: 700;
1067 }
1068 .tui-panel {
1069 margin: 18px 0 20px; padding: 20px 22px;
1070 border: 1px solid var(--line); border-radius: var(--radius-sm);
1071 background: var(--bg-soft);
1072 }
1073 .tui-panel .desktop-feature-list { margin-top: 10px !important; }
1074 .doc-choice-grid,
1075 .doc-note-grid {
1076 display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
1077 gap: 12px; margin: 18px 0;
1078 }
1079 .doc-choice-grid > div,
1080 .doc-note-grid > div {
1081 border: 1px solid var(--line);
1082 border-radius: var(--radius-sm);
1083 background: var(--card);
1084 padding: 17px 18px;
1085 }
1086 .doc-choice-grid strong,
1087 .doc-note-grid strong {
1088 display: block; color: var(--ink);
1089 font-size: 14px; line-height: 1.3; margin-bottom: 5px;
1090 }
1091 .doc-choice-grid p {
1092 margin: 0; font-size: 13.5px; line-height: 1.6;
1093 }
1094 .doc-note-grid {
1095 grid-template-columns: repeat(3, minmax(0, 1fr));
1096 }
1097 .doc-note-grid > div {
1098 display: flex; flex-direction: column; gap: 4px;
1099 }
1100 .doc-note-grid span { font-size: 13px; color: var(--ink-2); overflow-wrap: anywhere; }
1101 .desktop-panel,
1102 .web-panel {
1103 margin: 20px 0 8px; padding: 24px;
1104 border: 1px solid color-mix(in oklch, var(--accent) 18%, var(--line));
1105 border-radius: var(--radius-sm);
1106 background: linear-gradient(180deg, color-mix(in oklch, var(--accent) 9%, var(--bg)), var(--bg) 72%);
1107 }
1108 .desktop-panel-head { max-width: 680px; }
1109 .desktop-kicker {
1110 display: inline-flex; align-items: center; margin-bottom: 10px;
1111 font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
1112 color: var(--accent);
1113 }
1114 .docs-main .desktop-panel h3,
1115 .docs-main .web-panel h3 {
1116 margin: 0 0 8px; font-size: 21px; line-height: 1.25;
1117 letter-spacing: -0.012em; color: var(--ink);
1118 }
1119 .docs-main .desktop-panel p { margin: 0; max-width: 720px; }
1120 .desktop-downloads {
1121 display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
1122 gap: 10px; margin-top: 20px;
1123 }
1124 .desktop-downloads--secondary { margin-top: 10px; }
1125 .desktop-downloads--secondary .desktop-download {
1126 box-shadow: none; background: var(--bg-soft);
1127 }
1128 .desktop-download {
1129 display: flex; flex-direction: column; gap: 4px;
1130 min-width: 0; padding: 15px 16px; border-radius: 10px;
1131 background: var(--card); border: 1px solid var(--line);
1132 color: var(--ink); text-decoration: none;
1133 box-shadow: var(--shadow-1);
1134 transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s var(--ease);
1135 }
1136 .desktop-download:hover {
1137 border-color: color-mix(in oklch, var(--accent) 42%, var(--line));
1138 box-shadow: var(--shadow-2); transform: translateY(-1px); text-decoration: none;
1139 }
1140 .desktop-download strong { font-size: 15px; font-weight: 700; color: var(--ink); }
1141 .desktop-download span { font-size: 13px; color: var(--ink-2); line-height: 1.35; }
1142 .desktop-feature-list {
1143 display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
1144 gap: 10px 16px; margin: 18px 0 0 !important; padding: 0; list-style: none;
1145 }
1146 .desktop-feature-list li {
1147 position: relative; padding-left: 16px;
1148 font-size: 13.5px; line-height: 1.55; color: var(--ink-2);
1149 }
1150 .desktop-feature-list li::before {
1151 content: ""; position: absolute; left: 0; top: 0.62em;
1152 width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
1153 }
1154 .doc-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 22px; }
1155 .doc-card {
1156 position: relative; display: block; text-decoration: none;
1157 background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm);
1158 padding: 22px 24px; transition: border-color 0.25s;
1159 }
1160 .doc-card:hover { border-color: color-mix(in oklch, var(--accent) 38%, var(--line)); text-decoration: none; }
1161 .doc-card h3 { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; color: var(--ink); margin: 0 0 6px; }
1162 .doc-card p { font-size: 13.5px; line-height: 1.6; color: var(--ink-2); margin: 0; }
1163
1164
1165 footer { background: var(--bg); border-top: 1px solid var(--line); margin-top: 0; }
1166 .foot-inner {
1167 max-width: 1180px; margin: 0 auto; padding: 36px 40px 28px;
1168 display: flex; align-items: center; gap: 28px; flex-wrap: wrap;
1169 font-size: 14px; color: var(--ink-3);
1170 }
1171 .foot-sub {
1172 max-width: 1180px; margin: 0 auto; padding: 16px 40px 26px;
1173 display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;
1174 border-top: 1px solid var(--line);
1175 font-size: 13px; color: var(--ink-3);
1176 }
1177 .foot-sub .ver { font-family: var(--font-mono); font-size: 12px; }
1178 .foot-inner .brand {
1179 display: flex;
1180 align-items: center;
1181 gap: 0;
1182 text-decoration: none;
1183 color: var(--ink);
1184 }
1185 .foot-inner .brand img { width: 90px; height: auto; border-radius: 0; display: block; }
1186 .foot-inner .brand span { display: none; }
1187 .foot-links { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; }
1188 .foot-links a {
1189 color: var(--ink-2); text-decoration: none; font-weight: 500;
1190 padding: 7px 11px; border-radius: 7px;
1191 transition: color 0.2s, background 0.2s;
1192 }
1193 .foot-links a:hover { color: var(--ink); background: var(--bg-soft); }
1194
1195 @media (max-width: 900px) {
1196 .wrap { padding: 0 24px; }
1197 .nav-github { display: none; }
1198 .lang-switch { margin-left: auto; }
1199 .docs-layout { grid-template-columns: 1fr; gap: 36px; padding: 110px 24px 80px; }
1200 .docs-side { position: static; max-height: none; overflow: visible; padding-right: 0; }
1201 .docs-path-grid { grid-template-columns: 1fr 1fr; }
1202 .doc-choice-grid, .doc-note-grid { grid-template-columns: 1fr; }
1203 .desktop-downloads, .desktop-feature-list { grid-template-columns: 1fr; }
1204 .doc-cards { grid-template-columns: 1fr; }
1205 .divider { display: none; }
1206 .divider + section { padding-top: 100px; }
1207 .feat-grid, .os-grid, .steps { grid-template-columns: 1fr; }
1208 .surf-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1209 .feat, .feat:nth-child(1), .feat:nth-child(2), .feat:nth-child(3),
1210 .feat:nth-child(4), .feat:nth-child(5), .feat:nth-child(6) { grid-column: auto; }
1211 .sec-head.split { grid-template-columns: 1fr; align-items: start; }
1212 .steps { gap: 28px; }
1213 .step { padding: 0; }
1214 .step + .step { padding-left: 0; border-left: none; border-top: 1px solid var(--line); padding-top: 28px; }
1215 .dl-tab { padding: 9px 14px; font-size: 13px; }
1216 .dl-help { grid-template-columns: 1fr; }
1217 .dl-help code { grid-column: auto; white-space: normal; overflow-wrap: anywhere; }
1218 .dl-help button { justify-self: start; }
1219 .hero { padding-top: 130px; }
1220 section { padding-top: 100px; }
1221 }
1222
1223 @media (max-width: 640px) {
1224 .nav-inner { padding: 0 16px; gap: 10px; }
1225 .nav-sign-in { display: none; }
1226 .nav .brand img { width: 64px; }
1227 .nav .brand span { display: none; }
1228 .theme-switch button { padding: 6px 9px; }
1229 .docs-path-grid { grid-template-columns: 1fr; }
1230 .surf-grid { grid-template-columns: 1fr; }
1231 .docs-main h1 { font-size: 34px; }
1232 .dl-tabs {
1233 display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
1234 width: 100%; max-width: 360px; border-radius: var(--radius-sm);
1235 }
1236 .release-channel-switch { width: 100%; max-width: 360px; }
1237 .release-channel-switch button { min-width: 0; padding-inline: 12px; }
1238 .release-upgrade-command {
1239 width: 100%; max-width: 520px;
1240 white-space: normal;
1241 display: flex;
1242 flex-wrap: wrap;
1243 row-gap: 8px;
1244 }
1245 .release-upgrade-command [data-release-command="cli"] {
1246 min-width: 0;
1247 flex: 1 1 180px;
1248 overflow-wrap: anywhere;
1249 }
1250 }
1251
1252
1253 @media (max-width: 700px) {
1254 .hero-install {
1255 grid-template-columns: 1fr;
1256 border-radius: var(--radius-sm);
1257 margin-top: 40px;
1258 }
1259 .hero-install::before {
1260 display: none;
1261 }
1262 .install-option {
1263 padding: 28px;
1264 min-height: 0;
1265 }
1266 .install-option + .install-option {
1267 border-top: 1px solid var(--line);
1268 }
1269 .also-row {
1270 flex-direction: column;
1271 align-items: center;
1272 gap: 6px;
1273 }
1274 }
1275
1276 @media (max-width: 400px) {
1277 .nav .brand img { width: 28px; height: 28px; border-radius: 8px; }
1278 }
1279
1280 @media (max-width: 360px) {
1281 .nav-inner { padding: 0 12px; gap: 6px; }
1282 .lang-switch button { padding: 6px 8px; }
1283 .theme-switch button { padding: 6px 7px; }
1284 .nav .btn { padding: 9px 14px; }
1285 .hero-install .install { gap: 6px; padding-inline: 6px; }
1286 .hero-install .install button { padding-inline: 10px; }
1287 .nav-install { display: none; }
1288 .nav-menu-toggle { width: 36px; height: 36px; }
1289 }
1290
1291
1292 .auth-nav { background: color-mix(in oklch, var(--bg) 92%, transparent); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: 0 1px 0 var(--line); }
1293 .auth-main { min-height: 100vh; display: grid; place-items: center; padding: 116px 24px 72px; }
1294 .auth-card {
1295 width: 100%; max-width: 420px;
1296 background: var(--card); border-radius: var(--radius);
1297 box-shadow: var(--shadow-2); padding: 42px 40px 36px;
1298 }
1299 .auth-card.wide { max-width: 560px; }
1300 .auth-head { text-align: center; }
1301 .auth-head h1 { font-size: 26px; font-weight: 600; letter-spacing: -0.02em; }
1302 .auth-head p { margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--ink-2); }
1303 .auth-form { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; }
1304 .field { display: flex; flex-direction: column; gap: 7px; text-align: left; }
1305 .field label { font-size: 13px; font-weight: 600; color: var(--ink-2); }
1306 .field .hint { font-size: 12px; font-weight: 400; color: var(--ink-3); }
1307 .field input, .field textarea {
1308 width: 100%; font-family: var(--font-sans); font-size: 15px; color: var(--ink);
1309 background: var(--bg-soft); border: 1px solid transparent; border-radius: var(--radius-sm);
1310 padding: 12px 14px; resize: vertical;
1311 transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
1312 }
1313 .field input:focus, .field textarea:focus {
1314 outline: none; background: var(--card);
1315 border-color: color-mix(in oklch, var(--accent) 45%, var(--line));
1316 box-shadow: 0 0 0 4px var(--accent-soft);
1317 }
1318 .field input:disabled, .field textarea:disabled { opacity: 0.55; }
1319 .auth-form .btn { width: 100%; margin-top: 4px; }
1320 .btn[disabled], .btn.loading { opacity: 0.55; pointer-events: none; }
1321 .auth-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
1322 .auth-small { font-size: 12.5px; color: var(--accent); text-decoration: none; font-weight: 500; }
1323 .auth-small:hover { text-decoration: underline; }
1324 .auth-msg { margin-top: 20px; font-size: 13.5px; line-height: 1.55; border-radius: var(--radius-sm); padding: 11px 14px; text-align: left; }
1325 .auth-msg.error { background: color-mix(in oklch, oklch(0.63 0.21 25) 10%, var(--card)); color: oklch(0.5 0.19 25); }
1326 .auth-msg.ok { background: color-mix(in oklch, oklch(0.65 0.16 155) 13%, var(--card)); color: oklch(0.44 0.12 155); }
1327 :root[data-theme="dark"] .auth-msg.error { color: oklch(0.75 0.16 25); }
1328 :root[data-theme="dark"] .auth-msg.ok { color: oklch(0.78 0.14 155); }
1329 .auth-alt { margin-top: 24px; text-align: center; font-size: 14px; color: var(--ink-3); }
1330 .auth-alt a { color: var(--accent); text-decoration: none; font-weight: 500; }
1331 .auth-alt a:hover { text-decoration: underline; }
1332
1333 .acct-id { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-bottom: 8px; }
1334 .acct-handle { font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
1335 .acct-email { margin-top: 3px; font-size: 13.5px; color: var(--ink-3); }
1336 .acct-role {
1337 font-family: var(--font-mono); font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.04em;
1338 color: var(--accent); background: var(--accent-soft); padding: 5px 10px; border-radius: 6px;
1339 }
1340 .acct-h2 {
1341 font-size: 15px; font-weight: 600; color: var(--ink);
1342 margin: 30px 0 4px; padding-top: 24px; border-top: 1px solid var(--line);
1343 }
1344 .acct-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 34px; padding-top: 22px; border-top: 1px solid var(--line); }
1345 .acct-foot .btn { width: auto; margin: 0; }
1346 .acct-danger { font-family: var(--font-sans); font-size: 14px; font-weight: 500; color: oklch(0.55 0.19 25); background: none; border: none; cursor: pointer; padding: 8px 4px; }
1347 .acct-danger:hover { text-decoration: underline; }
1348
1349 .device-code { font-family: var(--font-mono); font-size: 20px; letter-spacing: 0.16em; text-transform: uppercase; text-align: center; }
1350 .device-meta { margin-top: 16px; text-align: center; font-size: 13.5px; color: var(--ink-2); }
1351 .device-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
1352 .device-actions .btn { width: 100%; margin: 0; }
1353
1354
1355
1356
1357
1358 body, .btn, .lang-switch button, .theme-switch button,
1359 .nav-links a, .nav-github, .dl-tab,
1360 .release-channel-switch button, .field input, .field textarea,
1361 .brand span, .foot-inner, .foot-sub,
1362 .hero h1, .hero .sub, .sec-head h2, .sec-head p,
1363 .feat h3, .feat p, .surf h3, .surf p,
1364 .step h3, .step p, .cta h2, .cta p,
1365 .docs-main h1, .docs-main h2, .docs-main h3,
1366 .docs-main p, .docs-main ul, .callout,
1367 .auth-head h1, .auth-head p, .auth-form, .auth-alt,
1368 .acct-handle, .acct-email, .acct-h2 {
1369 font-family: var(--font-sans);
1370 }
1371
1372
1373 .eyebrow, .kicker, .install-kicker, .feat .tag, .feat-chip,
1374 .step .num, .docs-kicker, .os-card .meta, .acct-role,
1375 .chan-badge, .side-group .gh {
1376 font-family: var(--font-sans);
1377 font-weight: 500;
1378 }
1379
1380
1381 .install, .term-bar .title, .term-body, .term-stat,
1382 .codeblock, .chan-row code, .chan-row .v,
1383 .docs-main p code, .docs-main li code, .docs-main td code,
1384 .side-group a code, .dl-help code, .editor-note code,
1385 .device-code, .surf code, .step code, .also code,
1386 .install .ps1 {
1387 font-family: var(--font-mono);
1388 }
1389
1390
1391 .eyebrow { font-size: 12px; letter-spacing: 0.02em; }
1392 .kicker { font-size: 13px; letter-spacing: 0.02em; }
1393 .kicker::before { font-family: var(--font-mono); }
1394 .docs-kicker { font-size: 12px; letter-spacing: 0.06em; font-weight: 700; }
1395 .docs-kicker::before { font-family: var(--font-mono); }
1396 .feat .tag { font-size: 11.5px; letter-spacing: 0.04em; }
1397 .feat-chip { font-size: 12px; letter-spacing: 0; }
1398 .step .num { font-size: 12.5px; font-weight: 500; }
1399 .os-card .meta { font-size: 11.5px; line-height: 1.7; }
1400 .acct-role { font-size: 11.5px; letter-spacing: 0.04em; text-transform: uppercase; }
1401
1402 @media (max-width: 640px) {
1403 .foot-inner .brand img {
1404 width: 72px;
1405 }
1406 }
1407
1408
1409
1410 .surf-grid + .divider {
1411 margin-top: 48px;
1412 height: 16px;
1413 }
1414
1415 .surf-grid + .divider + section {
1416 padding-top: 36px;
1417 }
1418
1419
1420 .surf-grid + section {
1421 padding-top: 48px;
1422 }
1423
1423 lines CSS