Skip to main content

max / makenotwork

17.7 KB · 821 lines History Blame Raw
1 /* ===========================================
2 LANDING PAGE
3 =========================================== */
4
5 .landing-hero {
6 max-width: 720px;
7 width: 100%;
8 text-align: center;
9 }
10
11 .landing-headline {
12 font-family: var(--font-display);
13 font-size: var(--text-head);
14 margin-bottom: var(--gap-peer);
15 }
16
17 .landing-sub {
18 font-size: var(--text-body);
19 line-height: 1.6;
20 opacity: 0.75;
21 margin-bottom: 0;
22 }
23
24 .fork-revenue-line {
25 font-size: var(--text-note);
26 opacity: 0.8;
27 margin: var(--gap-section) 0 var(--gap-peer);
28 line-height: 1.5;
29 }
30
31 .fork-revenue-line a {
32 border-bottom: 1px solid transparent;
33 transition: border-color 0.2s ease;
34 }
35
36 .fork-revenue-line a:hover {
37 border-bottom-color: currentColor;
38 }
39
40 .landing-fork {
41 display: grid;
42 grid-template-columns: 1fr 1fr;
43 gap: var(--gap-section);
44 margin-top: var(--gap-page);
45 text-align: left;
46 }
47
48 .fork-heading {
49 font-family: var(--font-mono);
50 font-size: var(--text-note);
51 font-weight: 600;
52 text-transform: uppercase;
53 letter-spacing: 0.05em;
54 margin-bottom: var(--gap-section);
55 }
56
57 .fork-list {
58 list-style: none;
59 margin: 0;
60 padding: 0;
61 flex: 1;
62 }
63
64 .fork-list li {
65 margin-bottom: var(--gap-group);
66 font-size: var(--text-note);
67 line-height: 1.5;
68 }
69
70 .fork-list strong {
71 font-family: var(--font-mono);
72 font-size: var(--text-fine);
73 }
74
75 .fork-actions {
76 margin-top: auto;
77 padding-top: var(--gap-section);
78 display: flex;
79 flex-direction: column;
80 align-items: center;
81 gap: var(--gap-peer);
82 }
83
84 .fork-actions .big-button {
85 width: 100%;
86 }
87
88 .fork-secondary-link {
89 font-family: var(--font-mono);
90 font-size: var(--text-fine);
91 opacity: 0.6;
92 transition: opacity 0.2s ease;
93 }
94
95 .fork-secondary-link:hover {
96 opacity: 1;
97 }
98
99 .fork-lede {
100 font-size: var(--text-body);
101 line-height: 1.55;
102 margin: 0 0 var(--gap-section);
103 }
104
105 .landing-browse-cta {
106 text-align: center;
107 margin: var(--gap-section) 0 0;
108 }
109
110 .landing-mobile-note {
111 text-align: center;
112 margin: var(--gap-peer) 0 0;
113 font-size: var(--text-fine);
114 color: var(--content-muted);
115 }
116
117 .founder-tagline {
118 font-family: var(--font-sans);
119 font-size: var(--text-body);
120 line-height: 1.55;
121 margin: var(--gap-section) auto 0;
122 max-width: 560px;
123 color: var(--content);
124 display: flex;
125 flex-direction: column;
126 align-items: center;
127 gap: var(--gap-peer);
128 }
129
130 .landing-velocity {
131 font-family: var(--font-mono);
132 font-size: var(--text-fine);
133 text-align: center;
134 margin: var(--gap-section) auto 0;
135 color: var(--content-muted);
136 }
137
138 .landing-velocity a {
139 color: var(--content);
140 text-decoration: none;
141 border-bottom: 1px solid var(--border);
142 }
143
144 .landing-velocity a:hover {
145 border-bottom-color: var(--content);
146 }
147
148 .founder-tagline-detail {
149 display: block;
150 }
151
152 .founder-tagline-mark {
153 font-family: var(--font-mono);
154 font-size: var(--text-fine);
155 font-weight: 600;
156 text-transform: uppercase;
157 letter-spacing: 0.08em;
158 color: var(--action);
159 padding: var(--gap-bound) var(--gap-peer);
160 border: 1px solid var(--action);
161 border-radius: var(--radius-control);
162 white-space: nowrap;
163 }
164
165 .fork-card--founder {
166 border-color: var(--action);
167 box-shadow: 0 0 0 1px var(--highlight-faint);
168 }
169
170 .founder-tier-grid {
171 display: grid;
172 grid-template-columns: 1fr 1fr;
173 gap: var(--gap-peer) var(--gap-section);
174 margin-bottom: var(--gap-section);
175 padding-bottom: var(--gap-section);
176 border-bottom: 1px dashed var(--border);
177 }
178
179 .founder-tier {
180 display: flex;
181 flex-direction: column;
182 gap: var(--gap-bound);
183 }
184
185 .founder-tier-name {
186 font-family: var(--font-mono);
187 font-size: var(--text-fine);
188 font-weight: 600;
189 text-transform: uppercase;
190 letter-spacing: 0.05em;
191 opacity: 0.7;
192 }
193
194 .founder-tier-price {
195 font-family: var(--font-display);
196 font-size: var(--text-body);
197 line-height: 1.1;
198 }
199
200 .founder-tier-price del {
201 opacity: 0.4;
202 margin-right: var(--gap-bound);
203 font-weight: 400;
204 }
205
206 .founder-tier-price strong {
207 color: var(--action);
208 font-weight: 700;
209 }
210
211 .founder-tier-unit {
212 font-family: var(--font-mono);
213 font-size: var(--text-fine);
214 opacity: 0.6;
215 margin-left: var(--gap-bound);
216 }
217
218 .founder-slots {
219 font-family: var(--font-mono);
220 font-size: var(--text-fine);
221 margin: 0 0 var(--gap-section);
222 line-height: 1.3;
223 }
224
225 .founder-slots-number {
226 font-family: var(--font-display);
227 font-size: var(--text-head);
228 color: var(--action);
229 font-weight: 700;
230 margin-right: var(--gap-bound);
231 }
232
233 .founder-slots-cap {
234 opacity: 0.55;
235 margin-left: var(--gap-bound);
236 }
237
238 .founder-slots--cap {
239 opacity: 0.7;
240 font-size: var(--text-fine);
241 }
242
243 .landing-stats-line {
244 font-family: var(--font-mono);
245 font-size: var(--text-note);
246 opacity: 0.6;
247 margin-top: var(--gap-page);
248 }
249
250 .landing-stats-line a {
251 opacity: 0.8;
252 transition: opacity 0.2s ease;
253 }
254
255 .landing-stats-line a:hover {
256 opacity: 1;
257 }
258
259 .landing-principles {
260 margin-top: var(--gap-page);
261 width: 100%;
262 }
263
264 .landing-use-cases {
265 margin-top: var(--gap-page);
266 width: 100%;
267 }
268
269 .use-case-line {
270 font-family: var(--font-mono);
271 font-size: var(--text-note);
272 opacity: 0.7;
273 letter-spacing: 0.02em;
274 }
275
276 .landing-prose {
277 font-size: var(--text-body);
278 line-height: 1.7;
279 margin-bottom: var(--gap-peer);
280 }
281
282 .notify-form {
283 display: flex;
284 gap: var(--gap-peer);
285 max-width: 400px;
286 margin: 0 auto;
287 }
288
289 .notify-input {
290 flex: 1;
291 padding: var(--gap-peer) var(--gap-section);
292 border: 1px solid var(--border);
293 border-radius: var(--radius-control);
294 font-family: var(--font-sans);
295 font-size: var(--text-note);
296 background: var(--surface-page);
297 color: var(--content);
298 }
299
300 .notify-status {
301 font-family: var(--font-mono);
302 font-size: var(--text-fine);
303 text-align: center;
304 margin-top: var(--gap-peer);
305 min-height: 1.2em;
306 }
307
308 .notify-status.success {
309 color: var(--content);
310 }
311
312 .notify-status.error {
313 color: var(--danger);
314 }
315
316 .section-label {
317 font-family: var(--font-mono);
318 font-size: var(--text-note);
319 letter-spacing: 0.05em;
320 text-transform: uppercase;
321 opacity: 0.6;
322 margin-bottom: var(--gap-section);
323 }
324
325 .tier-section {
326 margin: var(--gap-page) 0;
327 width: 100%;
328 }
329 /* Marketing pricing variant of .card--bordered. */
330 .tier-name {
331 font-family: var(--font-mono);
332 font-size: var(--text-note);
333 font-weight: 600;
334 margin-bottom: var(--gap-bound);
335 }
336
337 .tier-price {
338 font-family: var(--font-display);
339 font-size: var(--text-lead);
340 margin-bottom: var(--gap-bound);
341 }
342
343 .tier-desc {
344 font-size: var(--text-note);
345 opacity: 0.7;
346 }
347
348 .tier-card.planned {
349 opacity: 0.5;
350 border-style: dashed;
351 position: relative;
352 }
353 .secondary-links {
354 display: flex;
355 gap: var(--gap-pane);
356 justify-content: center;
357 margin-top: var(--gap-section);
358 }
359
360 .secondary-links a {
361 font-size: var(--text-note);
362 opacity: 0.6;
363 transition: opacity 0.2s ease;
364 }
365
366 .secondary-links a:hover {
367 opacity: 1;
368 }
369 .section-link {
370 display: block;
371 margin-top: var(--gap-section);
372 font-family: var(--font-mono);
373 font-size: var(--text-fine);
374 opacity: 0.55;
375 transition: opacity 0.2s ease;
376 }
377
378 .section-link:hover {
379 opacity: 1;
380 }
381
382 .how-list {
383 list-style: none;
384 margin: 0;
385 padding: 0;
386 text-align: left;
387 }
388
389 .how-list li {
390 margin-bottom: var(--gap-group);
391 font-size: var(--text-body);
392 }
393
394 .how-list strong {
395 font-family: var(--font-mono);
396 font-size: var(--text-note);
397 }
398
399 .do-rail {
400 list-style: none;
401 margin: var(--gap-page) 0 var(--gap-pane);
402 padding: 0;
403 display: grid;
404 /* A do-card stops being readable under about 200px, which is a fact about
405 the card. Three across is what that yields at full width. */
406 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
407 gap: var(--gap-section);
408 width: 100%;
409 }
410
411 .do-card {
412 background: transparent;
413 border: 1px solid var(--border);
414 padding: var(--gap-section);
415 text-align: left;
416 display: flex;
417 flex-direction: column;
418 }
419
420 .do-card-title {
421 font-family: var(--font-mono);
422 font-size: var(--text-note);
423 font-weight: 600;
424 text-transform: uppercase;
425 letter-spacing: 0.05em;
426 margin: 0 0 var(--gap-peer);
427 }
428
429 .do-card-lede {
430 font-size: var(--text-note);
431 line-height: 1.5;
432 opacity: 0.78;
433 margin: 0 0 var(--gap-section);
434 }
435
436 .do-card-links {
437 list-style: none;
438 margin: auto 0 0;
439 padding: var(--gap-section) 0 0;
440 border-top: 1px solid var(--border);
441 display: flex;
442 flex-wrap: wrap;
443 gap: var(--gap-peer) var(--gap-section);
444 }
445
446 .do-card-links a {
447 font-size: var(--text-note);
448 border-bottom: 1px solid transparent;
449 transition: border-color 0.2s ease;
450 }
451
452 .do-card-links a:hover {
453 border-bottom-color: currentColor;
454 }
455
456 .do-card--wide {
457 margin-top: var(--gap-page);
458 width: 100%;
459 }
460
461 .contrast-rail {
462 list-style: none;
463 margin: var(--gap-section) 0 0;
464 padding: 0;
465 display: grid;
466 /* Title plus a short link list, so it holds up narrower than a do-card.
467 Four across at full width. */
468 grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
469 gap: var(--gap-section);
470 width: 100%;
471 }
472
473 .contrast-card {
474 border-top: 1px solid var(--border);
475 padding: var(--gap-section) var(--gap-bound) 0;
476 text-align: left;
477 }
478
479 .contrast-card-title {
480 font-family: var(--font-mono);
481 font-size: var(--text-fine);
482 letter-spacing: 0.04em;
483 text-transform: uppercase;
484 opacity: 0.5;
485 text-decoration: line-through;
486 text-decoration-thickness: 1px;
487 margin: 0 0 var(--gap-peer);
488 font-weight: 600;
489 }
490
491 .contrast-card-links {
492 list-style: none;
493 margin: 0;
494 padding: 0;
495 display: flex;
496 flex-wrap: wrap;
497 gap: var(--gap-peer) var(--gap-section);
498 }
499
500 .contrast-card-links a {
501 font-size: var(--text-note);
502 border-bottom: 1px solid transparent;
503 transition: border-color 0.2s ease;
504 }
505
506 .contrast-card-links a:hover {
507 border-bottom-color: currentColor;
508 }
509
510 /* ===========================================
511 PRICING CALCULATOR
512 =========================================== */
513
514 /* The calculator itself is a described screen since `1e35bc8a`
515 (`crate::quasi::pricing`), so it is drawn in makeover's own classes and every
516 rule this section held for it went with `pages/pricing.html`: the dials, the
517 tier cards, the list/founder toggle, the verdict, the results table and the
518 hand-drawn crossover bar. What is left is the one rule another template still
519 matches. */
520
521 .pricing-currency {
522 font-family: var(--font-display);
523 font-size: var(--text-display);
524 opacity: 0.5;
525 }
526
527 /* ===========================================
528 DOCUMENTATION PAGES
529 =========================================== */
530
531 /* .doc-container takes the shared reading column near the top of this file. */
532
533 .doc-breadcrumb {
534 font-family: var(--font-mono);
535 font-size: var(--text-note);
536 margin-bottom: var(--gap-page);
537 }
538
539 .doc-breadcrumb a { color: var(--content); text-decoration: none; }
540 .doc-breadcrumb a:hover { text-decoration: underline; }
541
542 .doc-title {
543 font-family: var(--font-display);
544 font-size: var(--text-display);
545 font-weight: normal;
546 line-height: 1.2;
547 margin-bottom: var(--gap-pane);
548 color: var(--content);
549 text-align: left;
550 }
551
552 .doc-body {
553 font-family: var(--font-sans);
554 font-size: var(--text-lead);
555 line-height: 1.9;
556 }
557
558 .doc-body p { margin-bottom: var(--gap-pane); }
559
560 .doc-body h1 {
561 font-family: var(--font-display);
562 font-size: var(--text-title);
563 font-weight: normal;
564 margin-top: var(--gap-page);
565 margin-bottom: var(--gap-section);
566 color: var(--content);
567 text-align: left;
568 }
569
570 .doc-body h2 {
571 font-family: var(--font-mono);
572 font-size: var(--text-head);
573 font-weight: normal;
574 margin-top: var(--gap-page);
575 margin-bottom: var(--gap-section);
576 color: var(--content);
577 }
578
579 .doc-body h3 {
580 font-family: var(--font-mono);
581 font-size: var(--text-subhead);
582 font-weight: normal;
583 margin-top: var(--gap-page);
584 margin-bottom: var(--gap-section);
585 color: var(--content);
586 }
587
588 .doc-body blockquote {
589 border-left: 3px solid var(--action);
590 padding-left: var(--gap-pane);
591 margin: var(--gap-page) 0;
592 font-style: italic;
593 color: var(--content-muted);
594 }
595
596 .doc-body ul, .doc-body ol { margin-bottom: var(--gap-pane); padding-left: var(--gap-pane); }
597 .doc-body li { margin-bottom: var(--gap-peer); }
598
599 .doc-body a {
600 color: var(--action);
601 text-decoration: underline;
602 text-decoration-color: color-mix(in oklch, var(--action) 40%, transparent);
603 text-underline-offset: 2px;
604 }
605
606 .doc-body a:hover { text-decoration-color: var(--action); }
607 .doc-body strong { font-weight: bold; }
608 .doc-body em { font-style: italic; }
609
610 .doc-body code {
611 font-family: var(--font-mono);
612 background: var(--surface-sunken);
613 padding: var(--gap-bound) var(--gap-peer);
614 font-size: var(--text-body);
615 }
616
617 .doc-body pre {
618 background: var(--surface-sunken);
619 padding: var(--gap-section);
620 overflow-x: auto;
621 margin-bottom: var(--gap-pane);
622 }
623
624 .doc-body pre code { background: none; padding: 0; }
625
626 .doc-body hr { border: none; text-align: center; margin: var(--gap-page) 0; }
627 .doc-body hr::before { content: "* * *"; color: var(--content-muted); letter-spacing: 1rem; }
628
629 .doc-body table { width: 100%; border-collapse: collapse; margin-bottom: var(--gap-pane); }
630 .doc-body th, .doc-body td { padding: var(--gap-section); text-align: left; border-bottom: 1px solid var(--border); }
631 .doc-body th { font-family: var(--font-mono); font-weight: 600; }
632
633 .doc-backlinks {
634 margin-top: var(--gap-page);
635 padding-top: var(--gap-pane);
636 border-top: 1px solid var(--border);
637 }
638
639 .doc-backlinks-title {
640 font-family: var(--font-mono);
641 font-size: var(--text-note);
642 font-weight: 600;
643 text-transform: uppercase;
644 letter-spacing: 0.05em;
645 color: var(--content-muted);
646 margin-bottom: var(--gap-section);
647 }
648
649 .doc-backlinks-list {
650 list-style: none;
651 margin: 0;
652 padding: 0;
653 }
654
655 .doc-backlinks-list li { margin-bottom: var(--gap-peer); }
656 .doc-backlinks-list a { color: var(--content); text-decoration: none; }
657 .doc-backlinks-list a:hover { text-decoration: underline; }
658
659 /* Docs index page */
660 /* .docs-index takes the shared reading column near the top of this file. */
661
662 .docs-index-title {
663 font-family: var(--font-display);
664 font-size: var(--text-display);
665 font-weight: normal;
666 line-height: 1.2;
667 margin-bottom: var(--gap-page);
668 color: var(--content);
669 }
670
671 .docs-section {
672 margin-bottom: var(--gap-page);
673 }
674
675 .docs-section h2 {
676 font-family: var(--font-mono);
677 font-size: var(--text-subhead);
678 font-weight: normal;
679 color: var(--content-muted);
680 margin-bottom: var(--gap-section);
681 }
682
683 .docs-section ul {
684 list-style: none;
685 padding: 0;
686 margin: 0;
687 }
688
689 .docs-section li {
690 margin-bottom: var(--gap-peer);
691 }
692
693 .docs-section a {
694 font-family: var(--font-sans);
695 font-size: var(--text-lead);
696 color: var(--content);
697 text-decoration: none;
698 }
699
700 .docs-section a:hover {
701 color: var(--action);
702 text-decoration: underline;
703 }
704
705 .docs-section details {
706 margin-bottom: var(--gap-section);
707 }
708
709 .docs-section summary {
710 font-family: var(--font-mono);
711 font-size: var(--text-body);
712 color: var(--content-muted);
713 cursor: pointer;
714 padding: var(--gap-bound) 0;
715 list-style: disclosure-closed;
716 }
717
718 .docs-section details[open] > summary {
719 list-style: disclosure-open;
720 margin-bottom: var(--gap-bound);
721 }
722
723 .docs-section summary:hover {
724 color: var(--content);
725 }
726
727 .docs-section details ul {
728 padding-left: var(--gap-section);
729 }
730
731 /* Docs search */
732 .docs-search-container {
733 position: relative;
734 margin-bottom: var(--gap-page);
735 }
736 .docs-search-inline {
737 display: inline-block;
738 margin-bottom: 0;
739 margin-left: auto;
740 float: right;
741 }
742 .docs-search-input {
743 width: 100%;
744 max-width: 320px;
745 padding: var(--gap-peer) var(--gap-section);
746 font-family: var(--font-sans);
747 font-size: var(--text-body);
748 background: var(--surface-sunken);
749 border: 1px solid var(--border);
750 color: var(--content);
751 }
752 .docs-search-input:focus {
753 outline: 2px solid var(--action);
754 border-color: var(--action);
755 }
756 .docs-search-input::placeholder { opacity: 0.5; }
757 .docs-search-results {
758 position: absolute;
759 top: 100%;
760 left: 0;
761 right: 0;
762 max-width: 320px;
763 background: var(--surface-page);
764 border: 1px solid var(--border);
765 border-top: none;
766 max-height: 300px;
767 overflow-y: auto;
768 z-index: var(--z-dropdown);
769 box-shadow: var(--elevation-overlay);
770 }
771 .docs-search-result {
772 display: flex;
773 justify-content: space-between;
774 align-items: baseline;
775 padding: var(--gap-peer) var(--gap-section);
776 text-decoration: none;
777 color: var(--content);
778 font-size: var(--text-note);
779 border-bottom: 1px solid var(--border);
780 }
781 .docs-search-result:last-child { border-bottom: none; }
782 .docs-search-result:hover { background: var(--surface-sunken); }
783 .docs-search-result-title { font-family: var(--font-sans); }
784 .docs-search-result-section { font-family: var(--font-mono); font-size: var(--text-fine); opacity: 0.5; }.alert .alert-title {
785 font-family: var(--font-mono);
786 font-size: var(--text-note);
787 font-weight: bold;
788 text-transform: uppercase;
789 letter-spacing: 0.04em;
790 margin-bottom: var(--gap-bound);
791 }
792 .alert p:last-child { margin-bottom: 0; }
793 .alert-note { border-left-color: var(--focus-ring); }
794 .alert-note .alert-title { color: var(--focus-ring); }
795 .alert-tip { border-left-color: var(--success); }
796 .alert-tip .alert-title { color: var(--success); }
797 .alert-important { border-left-color: var(--action); }
798 .alert-important .alert-title { color: var(--action); }
799 .alert-warning { border-left-color: var(--warning); }
800 .alert-warning .alert-title { color: var(--warning); }
801 .alert-caution { border-left-color: var(--danger); }
802 .alert-caution .alert-title { color: var(--danger); }
803
804 /* ===========================================
805 USE CASES PAGE
806 =========================================== */
807
808 /* The use-cases page moved to the description layer; what the template's own
809 classes said is drawn by the design system now. What is left is the measure,
810 which a described document carries on <main> rather than on a container div,
811 the same shape as `.team-page main` and `.feed-page main`.
812
813 The grid went with it deliberately: nine equal cards are nine sibling groups
814 in the description, and how they sit is the design system's answer for every
815 consumer rather than a `grid-template-columns` here. */
816 .use-cases-page main {
817 max-width: 900px;
818 margin: 0 auto;
819 }
820
821