max / makenotwork
2 files changed,
+84 insertions,
-121 deletions
| @@ -171,61 +171,23 @@ | |||
| 171 | 171 | --category-four: #f59e0b; | |
| 172 | 172 | --category-five: #a29bfe; | |
| 173 | 173 | --category-six: #17a2b8; | |
| 174 | + | --overlay: rgba(3, 2, 0, 0.5); | |
| 174 | 175 | ||
| 175 | 176 | /* -------------------------------------------------------------------- | |
| 176 | - | BRAND ALIASES — MNW's historical vocabulary over the intent layer. | |
| 177 | - | ||
| 178 | - | Kept so 300+ existing call sites (--detail, --highlight, --surface-*) | |
| 179 | - | stay valid. Names that already match an intent token (--border, | |
| 180 | - | --danger, --success, --focus-ring) consume it directly above. | |
| 181 | - | -------------------------------------------------------------------- */ | |
| 182 | - | --background: var(--surface-page); | |
| 183 | - | --background-color: var(--surface-page); | |
| 184 | - | --light-background: var(--surface-overlay); | |
| 185 | - | --secondary-bg: var(--surface-overlay); | |
| 186 | - | --surface: var(--surface-raised); | |
| 187 | - | --surface-muted: var(--surface-sunken); | |
| 188 | - | --detail: var(--content); | |
| 189 | - | --text: var(--content); | |
| 190 | - | --text-muted: var(--content-muted); | |
| 191 | - | --highlight: var(--action); | |
| 192 | - | --accent: var(--action); | |
| 193 | - | --accent-color: var(--action); | |
| 194 | - | --surface-border: var(--border); | |
| 195 | - | --border-color: var(--border); | |
| 196 | - | ||
| 197 | - | /* -------------------------------------------------------------------- | |
| 198 | - | APP-SIDE LITERALS — intentionally NOT in the shared palette. | |
| 199 | - | ||
| 200 | - | Pure black/white contrast, the brown warning tone, status-tint | |
| 201 | - | backgrounds, health + diff hues, and translucent overlays. These | |
| 202 | - | diverge from a generic accent on purpose and stay fixed across | |
| 203 | - | themes; kept literal to preserve the exact current rendering. | |
| 177 | + | APP-LOCAL CONSTANTS — not theme colors, not derivable from intents. | |
| 178 | + | ||
| 179 | + | Component CSS references the intent tokens above directly (no brand | |
| 180 | + | aliases). Status backgrounds and the faint accent tint derive from the | |
| 181 | + | intents inline via color-mix(); these few stay fixed: | |
| 182 | + | - pure black/white contrast anchors | |
| 183 | + | - Stripe's brand color (an external constant) | |
| 184 | + | - diff add/del — a hard readability convention that must not re-theme | |
| 204 | 185 | -------------------------------------------------------------------- */ | |
| 205 | - | --surface-alt: #ebe7db; | |
| 206 | - | --input-background: #e2dad2; | |
| 207 | - | --overlay: rgba(0, 0, 0, 0.5); | |
| 208 | 186 | --primary-dark: #000000; | |
| 209 | 187 | --primary-light: #ffffff; | |
| 210 | - | ||
| 211 | - | --success-bg: #e8fde8; | |
| 212 | - | --warning: #8b7355; | |
| 213 | - | --warning-bg: #fff3cd; | |
| 214 | - | --warning-border: #ffc107; | |
| 215 | - | --danger-bg: #fde8e8; | |
| 216 | - | --error: #d62828; | |
| 217 | - | --error-bg: #fef2f2; | |
| 218 | 188 | --stripe: #635BFF; | |
| 219 | 189 | ||
| 220 | - | /* Health status indicators */ | |
| 221 | - | --health-ok: #22c55e; | |
| 222 | - | --health-warn: #f59e0b; | |
| 223 | - | --health-error: #ef4444; | |
| 224 | - | --health-unknown: #9ca3af; | |
| 225 | - | ||
| 226 | - | --highlight-faint: rgba(108, 92, 231, 0.08); | |
| 227 | - | ||
| 228 | - | /* Diff / code review */ | |
| 190 | + | /* Diff / code review — fixed green-add / red-del convention */ | |
| 229 | 191 | --diff-add: #2d7d2d; | |
| 230 | 192 | --diff-add-bg: rgba(45, 125, 45, 0.08); | |
| 231 | 193 | --diff-del: #a83232; | |
| @@ -238,6 +200,8 @@ | |||
| 238 | 200 | --space-4: 1rem; | |
| 239 | 201 | --space-5: 1.5rem; | |
| 240 | 202 | --space-6: 2rem; | |
| 203 | + | --space-7: 3rem; | |
| 204 | + | --space-8: 4rem; | |
| 241 | 205 | ||
| 242 | 206 | /* Radius scale */ | |
| 243 | 207 | --radius-sm: 2px; | |
| @@ -270,8 +234,8 @@ | |||
| 270 | 234 | /* Base styles */ | |
| 271 | 235 | body { | |
| 272 | 236 | margin: 0; | |
| 273 | - | background-color: var(--background); | |
| 274 | - | color: var(--detail); | |
| 237 | + | background-color: var(--surface-page); | |
| 238 | + | color: var(--content); | |
| 275 | 239 | font-family: var(--font-body); | |
| 276 | 240 | line-height: 1.6; | |
| 277 | 241 | } | |
| @@ -308,7 +272,7 @@ body { | |||
| 308 | 272 | h1 { | |
| 309 | 273 | font-family: var(--font-heading); | |
| 310 | 274 | font-weight: normal; | |
| 311 | - | color: var(--detail); | |
| 275 | + | color: var(--content); | |
| 312 | 276 | text-align: center; | |
| 313 | 277 | font-size: 2.5rem; | |
| 314 | 278 | } | |
| @@ -317,7 +281,7 @@ h2, | |||
| 317 | 281 | h3 { | |
| 318 | 282 | font-family: var(--font-mono); | |
| 319 | 283 | font-weight: normal; | |
| 320 | - | color: var(--detail); | |
| 284 | + | color: var(--content); | |
| 321 | 285 | } | |
| 322 | 286 | ||
| 323 | 287 | /* Heading classes (charter: docs/design-system.md — every h1/h2 in a | |
| @@ -334,7 +298,7 @@ h3 { | |||
| 334 | 298 | .page-title { | |
| 335 | 299 | font-family: var(--font-heading); | |
| 336 | 300 | font-weight: normal; | |
| 337 | - | color: var(--detail); | |
| 301 | + | color: var(--content); | |
| 338 | 302 | text-align: center; | |
| 339 | 303 | font-size: 2.5rem; | |
| 340 | 304 | } | |
| @@ -342,7 +306,7 @@ h3 { | |||
| 342 | 306 | .subtitle-h2 { | |
| 343 | 307 | font-family: var(--font-mono); | |
| 344 | 308 | font-weight: normal; | |
| 345 | - | color: var(--detail); | |
| 309 | + | color: var(--content); | |
| 346 | 310 | text-align: center; | |
| 347 | 311 | font-size: 1.5rem; | |
| 348 | 312 | } | |
| @@ -350,16 +314,16 @@ h3 { | |||
| 350 | 314 | .subsection-title { | |
| 351 | 315 | font-family: var(--font-mono); | |
| 352 | 316 | font-weight: normal; | |
| 353 | - | color: var(--detail); | |
| 317 | + | color: var(--content); | |
| 354 | 318 | } | |
| 355 | 319 | ||
| 356 | 320 | p { | |
| 357 | 321 | font-family: var(--font-body); | |
| 358 | - | color: var(--detail); | |
| 322 | + | color: var(--content); | |
| 359 | 323 | } | |
| 360 | 324 | ||
| 361 | 325 | a { | |
| 362 | - | color: var(--detail); | |
| 326 | + | color: var(--content); | |
| 363 | 327 | text-decoration: none; | |
| 364 | 328 | } | |
| 365 | 329 | ||
| @@ -369,7 +333,7 @@ a:hover { | |||
| 369 | 333 | ||
| 370 | 334 | /* The signature dot */ | |
| 371 | 335 | .dot { | |
| 372 | - | color: var(--highlight); | |
| 336 | + | color: var(--action); | |
| 373 | 337 | } | |
| 374 | 338 | ||
| 375 | 339 | /* Container — default 1200px max-width. Modifier classes for narrower pages, | |
| @@ -402,10 +366,10 @@ a:hover { | |||
| 402 | 366 | =========================================== */ | |
| 403 | 367 | ||
| 404 | 368 | button { | |
| 405 | - | color: var(--detail); | |
| 406 | - | background: var(--light-background); | |
| 369 | + | color: var(--content); | |
| 370 | + | background: var(--surface-overlay); | |
| 407 | 371 | padding: 6px 12px; | |
| 408 | - | border: 1px solid var(--detail); | |
| 372 | + | border: 1px solid var(--content); | |
| 409 | 373 | font-family: inherit; | |
| 410 | 374 | cursor: pointer; | |
| 411 | 375 | box-shadow: var(--shadow-raised); | |
| @@ -446,8 +410,8 @@ button:active { | |||
| 446 | 410 | } | |
| 447 | 411 | ||
| 448 | 412 | .btn-secondary { | |
| 449 | - | background: var(--surface-muted); | |
| 450 | - | color: var(--detail); | |
| 413 | + | background: var(--surface-sunken); | |
| 414 | + | color: var(--content); | |
| 451 | 415 | border: none; | |
| 452 | 416 | padding: 0.75rem 1.5rem; | |
| 453 | 417 | font-family: var(--font-mono); | |
| @@ -539,7 +503,7 @@ button[aria-disabled="true"], | |||
| 539 | 503 | ||
| 540 | 504 | .btn--link { | |
| 541 | 505 | background: none; | |
| 542 | - | color: var(--detail); | |
| 506 | + | color: var(--content); | |
| 543 | 507 | border: none; | |
| 544 | 508 | padding: 0; | |
| 545 | 509 | font-family: var(--font-mono); | |
| @@ -601,13 +565,13 @@ form { | |||
| 601 | 565 | ||
| 602 | 566 | .form-container { | |
| 603 | 567 | max-width: 400px; | |
| 604 | - | background: var(--light-background); | |
| 568 | + | background: var(--surface-overlay); | |
| 605 | 569 | padding: 2rem; | |
| 606 | 570 | } | |
| 607 | 571 | ||
| 608 | 572 | label { | |
| 609 | 573 | font-family: var(--font-mono); | |
| 610 | - | color: var(--detail); | |
| 574 | + | color: var(--content); | |
| 611 | 575 | font-size: 14px; | |
| 612 | 576 | } | |
| 613 | 577 | ||
| @@ -619,12 +583,12 @@ input[type="date"], | |||
| 619 | 583 | textarea, | |
| 620 | 584 | select { | |
| 621 | 585 | width: 100%; | |
| 622 | - | background: var(--input-background); | |
| 586 | + | background: var(--surface-sunken); | |
| 623 | 587 | border: 1px solid var(--border); | |
| 624 | 588 | padding: 0.75rem; | |
| 625 | 589 | font-family: var(--font-mono); | |
| 626 | 590 | font-size: 0.9rem; | |
| 627 | - | color: var(--detail); | |
| 591 | + | color: var(--content); | |
| 628 | 592 | box-shadow: var(--shadow-inset); | |
| 629 | 593 | } | |
| 630 | 594 | ||
| @@ -640,7 +604,7 @@ input[type="number"]:focus, | |||
| 640 | 604 | textarea:focus, | |
| 641 | 605 | select:focus { | |
| 642 | 606 | outline: none; | |
| 643 | - | border: 1px solid var(--highlight); | |
| 607 | + | border: 1px solid var(--action); | |
| 644 | 608 | } | |
| 645 | 609 | ||
| 646 | 610 | textarea { | |
| @@ -656,10 +620,10 @@ input[type="submit"], | |||
| 656 | 620 | form button { | |
| 657 | 621 | font-family: var(--font-heading); | |
| 658 | 622 | font-size: 16px; | |
| 659 | - | color: var(--detail); | |
| 660 | - | background: var(--light-background); | |
| 623 | + | color: var(--content); | |
| 624 | + | background: var(--surface-overlay); | |
| 661 | 625 | padding: 12px 24px; | |
| 662 | - | border: 1px solid var(--detail); | |
| 626 | + | border: 1px solid var(--content); | |
| 663 | 627 | cursor: pointer; | |
| 664 | 628 | box-shadow: var(--shadow-raised); | |
| 665 | 629 | transition: box-shadow 0.1s ease, transform 0.05s ease, background 0.2s ease; | |
| @@ -667,7 +631,7 @@ form button { | |||
| 667 | 631 | ||
| 668 | 632 | input[type="submit"]:hover, | |
| 669 | 633 | form button:hover { | |
| 670 | - | background: var(--background); | |
| 634 | + | background: var(--surface-page); | |
| 671 | 635 | box-shadow: 3px 3px var(--shadow-edge); | |
| 672 | 636 | } | |
| 673 | 637 | ||
| @@ -708,25 +672,25 @@ form button:active { | |||
| 708 | 672 | /* Field-level validation error, paired with .form-group--error. | |
| 709 | 673 | Canonical: `partials/_ui.html` ui::form_field macro. */ | |
| 710 | 674 | .form-group--error label { | |
| 711 | - | color: var(--error); | |
| 675 | + | color: var(--danger); | |
| 712 | 676 | } | |
| 713 | 677 | ||
| 714 | 678 | .form-group--error input, | |
| 715 | 679 | .form-group--error textarea, | |
| 716 | 680 | .form-group--error select { | |
| 717 | - | border-color: var(--error); | |
| 681 | + | border-color: var(--danger); | |
| 718 | 682 | } | |
| 719 | 683 | ||
| 720 | 684 | .field-error { | |
| 721 | 685 | font-size: 0.85rem; | |
| 722 | - | color: var(--error); | |
| 686 | + | color: var(--danger); | |
| 723 | 687 | margin-top: var(--space-2); | |
| 724 | 688 | } | |
| 725 | 689 | ||
| 726 | 690 | /* Loading skeleton placeholder. | |
| 727 | 691 | Canonical: `partials/_ui.html` ui::loading_skeleton macro. */ | |
| 728 | 692 | .loading-skeleton { | |
| 729 | - | background: var(--surface-muted); | |
| 693 | + | background: var(--surface-sunken); | |
| 730 | 694 | border-radius: var(--radius-md); | |
| 731 | 695 | animation: skeleton-pulse 1.2s ease-in-out infinite; | |
| 732 | 696 | } | |
| @@ -785,8 +749,8 @@ form button:active { | |||
| 785 | 749 | } | |
| 786 | 750 | ||
| 787 | 751 | .tab { | |
| 788 | - | background: var(--surface-muted); | |
| 789 | - | color: var(--detail); | |
| 752 | + | background: var(--surface-sunken); | |
| 753 | + | color: var(--content); | |
| 790 | 754 | border: none; | |
| 791 | 755 | padding: 0.75rem 2rem; | |
| 792 | 756 | font-family: var(--font-mono); | |
| @@ -804,7 +768,7 @@ form button:active { | |||
| 804 | 768 | } | |
| 805 | 769 | ||
| 806 | 770 | .tab.is-selected { | |
| 807 | - | background: var(--light-background); | |
| 771 | + | background: var(--surface-overlay); | |
| 808 | 772 | opacity: 1; | |
| 809 | 773 | } | |
| 810 | 774 | ||
| @@ -822,7 +786,7 @@ form button:active { | |||
| 822 | 786 | top: 100%; | |
| 823 | 787 | right: 0; | |
| 824 | 788 | z-index: 10; | |
| 825 | - | background: var(--background); | |
| 789 | + | background: var(--surface-page); | |
| 826 | 790 | border: 1px solid var(--border); | |
| 827 | 791 | min-width: 180px; | |
| 828 | 792 | box-shadow: var(--shadow-2); | |
| @@ -846,7 +810,7 @@ form button:active { | |||
| 846 | 810 | ||
| 847 | 811 | .tab-content { | |
| 848 | 812 | display: none; | |
| 849 | - | background: var(--light-background); | |
| 813 | + | background: var(--surface-overlay); | |
| 850 | 814 | padding: 2rem; | |
| 851 | 815 | } | |
| 852 | 816 | ||
| @@ -867,7 +831,7 @@ form button:active { | |||
| 867 | 831 | } | |
| 868 | 832 | ||
| 869 | 833 | .data-table thead { | |
| 870 | - | background: var(--surface-muted); | |
| 834 | + | background: var(--surface-sunken); | |
| 871 | 835 | } | |
| 872 | 836 | ||
| 873 | 837 | .data-table th { | |
| @@ -897,15 +861,15 @@ form button:active { | |||
| 897 | 861 | } | |
| 898 | 862 | ||
| 899 | 863 | .data-table tbody tr:nth-child(odd) { | |
| 900 | - | background: var(--surface-alt); | |
| 864 | + | background: var(--surface-overlay); | |
| 901 | 865 | } | |
| 902 | 866 | ||
| 903 | 867 | .data-table tbody tr:nth-child(even) { | |
| 904 | - | background: var(--light-background); | |
| 868 | + | background: var(--surface-overlay); | |
| 905 | 869 | } | |
| 906 | 870 | ||
| 907 | 871 | .data-table tbody tr:hover { | |
| 908 | - | background: var(--surface-muted); | |
| 872 | + | background: var(--surface-sunken); | |
| 909 | 873 | } | |
| 910 | 874 | ||
| 911 | 875 | .data-table td { | |
| @@ -1055,12 +1019,12 @@ form button:active { | |||
| 1055 | 1019 | } | |
| 1056 | 1020 | ||
| 1057 | 1021 | .badge.suspended { | |
| 1058 | - | background: var(--danger-bg); | |
| 1022 | + | background: color-mix(in oklch, var(--danger) 10%, var(--surface-page)); | |
| 1059 | 1023 | color: var(--danger); | |
| 1060 | 1024 | } | |
| 1061 | 1025 | ||
| 1062 | 1026 | .badge.free { | |
| 1063 | - | background: var(--highlight); | |
| 1027 | + | background: var(--action); | |
| 1064 | 1028 | color: var(--primary-light); | |
| 1065 | 1029 | } | |
| 1066 | 1030 | ||
| @@ -1072,7 +1036,7 @@ form button:active { | |||
| 1072 | 1036 | letter-spacing: 0.02em; | |
| 1073 | 1037 | } | |
| 1074 | 1038 | .badge.ai-tier-handmade { | |
| 1075 | - | background: var(--highlight); | |
| 1039 | + | background: var(--action); | |
| 1076 | 1040 | color: var(--primary-light); | |
| 1077 | 1041 | } | |
| 1078 | 1042 | .badge.ai-tier-assisted { | |
| @@ -1080,7 +1044,7 @@ form button:active { | |||
| 1080 | 1044 | color: var(--primary-light); | |
| 1081 | 1045 | } | |
| 1082 | 1046 | .badge.ai-tier-generated { | |
| 1083 | - | background: var(--detail); | |
| 1047 | + | background: var(--content); | |
| 1084 | 1048 | color: var(--primary-light); | |
| 1085 | 1049 | } | |
| 1086 | 1050 | ||
| @@ -1091,7 +1055,7 @@ form button:active { | |||
| 1091 | 1055 | .ai-disclosure { | |
| 1092 | 1056 | margin: 0.75rem 0; | |
| 1093 | 1057 | padding: 0.75rem 1rem; | |
| 1094 | - | background: var(--surface-muted); | |
| 1058 | + | background: var(--surface-sunken); | |
| 1095 | 1059 | border-left: 3px solid var(--warning); | |
| 1096 | 1060 | } | |
| 1097 | 1061 | .ai-disclosure-label { | |
| @@ -1099,12 +1063,12 @@ form button:active { | |||
| 1099 | 1063 | font-size: 0.75rem; | |
| 1100 | 1064 | text-transform: uppercase; | |
| 1101 | 1065 | letter-spacing: 0.05em; | |
| 1102 | - | color: var(--text-muted); | |
| 1066 | + | color: var(--content-muted); | |
| 1103 | 1067 | margin-bottom: 0.25rem; | |
| 1104 | 1068 | } | |
| 1105 | 1069 | .ai-disclosure-text { | |
| 1106 | 1070 | font-size: 0.9rem; | |
| 1107 | - | color: var(--detail); | |
| 1071 | + | color: var(--content); | |
| 1108 | 1072 | } | |
| 1109 | 1073 | ||
| 1110 | 1074 | /* Discover row: plain text mention per design decision 2026-06-03 — | |
| @@ -1113,7 +1077,7 @@ form button:active { | |||
| 1113 | 1077 | .discover-row-ai-tier { | |
| 1114 | 1078 | font-family: var(--font-mono); | |
| 1115 | 1079 | font-size: 0.75rem; | |
| 1116 | - | color: var(--text-muted); | |
| 1080 | + | color: var(--content-muted); | |
| 1117 | 1081 | } | |
| 1118 | 1082 | ||
| 1119 | 1083 | /* =========================================== | |
| @@ -1130,7 +1094,7 @@ form button:active { | |||
| 1130 | 1094 | } | |
| 1131 | 1095 | ||
| 1132 | 1096 | .tag-input { | |
| 1133 | - | background: var(--surface-muted); | |
| 1097 | + | background: var(--surface-sunken); | |
| 1134 | 1098 | padding: 0.5rem; | |
| 1135 | 1099 | margin-bottom: 0.5rem; | |
| 1136 | 1100 | display: flex; | |
| @@ -1171,11 +1135,11 @@ form button:active { | |||
| 1171 | 1135 | .use-case-card) are aliased to these recipes below — templates migrate at | |
| 1172 | 1136 | their own pace. */ | |
| 1173 | 1137 | .card { | |
| 1174 | - | background: var(--light-background); | |
| 1138 | + | background: var(--surface-overlay); | |
| 1175 | 1139 | padding: 1.5rem; | |
| 1176 | 1140 | margin-bottom: 1rem; | |
| 1177 | 1141 | text-decoration: none; | |
| 1178 | - | color: var(--detail); | |
| 1142 | + | color: var(--content); | |
| 1179 | 1143 | display: block; | |
| 1180 | 1144 | border: 1px solid var(--border); | |
| 1181 | 1145 | box-shadow: var(--shadow-card); | |
| @@ -1183,12 +1147,12 @@ form button:active { | |||
| 1183 | 1147 | } | |
| 1184 | 1148 | ||
| 1185 | 1149 | .card:hover { | |
| 1186 | - | background: var(--surface-muted); | |
| 1150 | + | background: var(--surface-sunken); | |
| 1187 | 1151 | } | |
| 1188 | 1152 | ||
| 1189 | 1153 | /* Muted card primitive. */ | |
| 1190 | 1154 | .card-muted { | |
| 1191 | - | background: var(--surface-muted); | |
| 1155 | + | background: var(--surface-sunken); | |
| 1192 | 1156 | padding: 1.5rem; | |
| 1193 | 1157 | } | |
| 1194 | 1158 | /* Bordered card (.card--bordered alias for .feature-card, .tier-card, .use-case-card, .fork-card). */ | |
| @@ -1213,7 +1177,7 @@ form button:active { | |||
| 1213 | 1177 | ||
| 1214 | 1178 | .card-meta { | |
| 1215 | 1179 | font-size: 0.85rem; | |
| 1216 | - | color: var(--text-muted); | |
| 1180 | + | color: var(--content-muted); | |
| 1217 | 1181 | margin-bottom: 0.5rem; | |
| 1218 | 1182 | font-family: var(--font-mono); | |
| 1219 | 1183 | } | |
| @@ -1242,7 +1206,7 @@ form button:active { | |||
| 1242 | 1206 | } | |
| 1243 | 1207 | ||
| 1244 | 1208 | .stat-box { | |
| 1245 | - | background: var(--light-background); | |
| 1209 | + | background: var(--surface-overlay); | |
| 1246 | 1210 | padding: 1rem 1.5rem; | |
| 1247 | 1211 | flex: 1; | |
| 1248 | 1212 | text-align: center; | |
| @@ -1331,12 +1295,12 @@ form button:active { | |||
| 1331 | 1295 | ||
| 1332 | 1296 | .discussion-section p { | |
| 1333 | 1297 | margin: 0 0 0.75rem; | |
| 1334 | - | color: var(--text-muted); | |
| 1298 | + | color: var(--content-muted); | |
| 1335 | 1299 | font-size: 0.875rem; | |
| 1336 | 1300 | } | |
| 1337 | 1301 | ||
| 1338 | 1302 | .discussion-section a { | |
| 1339 | - | color: var(--highlight); | |
| 1303 | + | color: var(--action); | |
| 1340 | 1304 | text-decoration: none; | |
| 1341 | 1305 | font-size: 0.875rem; | |
| 1342 | 1306 | } | |
| @@ -1361,7 +1325,7 @@ form button:active { | |||
| 1361 | 1325 | .error-message — inline form-field error; hidden by default, shown | |
| 1362 | 1326 | with .is-active. Distinct from page-level .alert. */ | |
| 1363 | 1327 | .info-box { | |
| 1364 | - | background: var(--surface-muted); | |
| 1328 | + | background: var(--surface-sunken); | |
| 1365 | 1329 | padding: 1rem; | |
| 1366 | 1330 | margin-bottom: 1rem; | |
| 1367 | 1331 | font-size: 0.9rem; | |
| @@ -1399,10 +1363,10 @@ form button:active { | |||
| 1399 | 1363 | ||
| 1400 | 1364 | .error-message { | |
| 1401 | 1365 | font-family: var(--font-mono); | |
| 1402 | - | color: var(--error); | |
| 1403 | - | background: var(--error-bg); | |
| 1366 | + | color: var(--danger); | |
| 1367 | + | background: color-mix(in oklch, var(--danger) 10%, var(--surface-page)); | |
| 1404 | 1368 | padding: 12px; | |
| 1405 | - | border: 1px solid var(--error); | |
| 1369 | + | border: 1px solid var(--danger); | |
| 1406 | 1370 | border-radius: 2px; | |
| 1407 | 1371 | text-align: center; | |
| 1408 | 1372 | font-size: 14px; | |
| @@ -1418,7 +1382,7 @@ form button:active { | |||
| 1418 | 1382 | align-items: center; | |
| 1419 | 1383 | justify-content: center; | |
| 1420 | 1384 | padding: var(--space-6); | |
| 1421 | - | background: var(--background); | |
| 1385 | + | background: var(--surface-page); | |
| 1422 | 1386 | } | |
| 1423 | 1387 | ||
| 1424 | 1388 | .error-container { | |
| @@ -1431,14 +1395,14 @@ form button:active { | |||
| 1431 | 1395 | font-weight: 600; | |
| 1432 | 1396 | letter-spacing: 0.08em; | |
| 1433 | 1397 | text-transform: uppercase; | |
| 1434 | - | color: var(--text-muted); | |
| 1398 | + | color: var(--content-muted); | |
| 1435 | 1399 | margin-bottom: var(--space-4); | |
| 1436 | 1400 | } | |
| 1437 | 1401 | ||
| 1438 | 1402 | .error-page-message { | |
| 1439 | 1403 | font-size: 1.5rem; | |
| 1440 | 1404 | line-height: 1.4; | |
| 1441 | - | color: var(--detail); | |
| 1405 | + | color: var(--content); | |
| 1442 | 1406 | margin-bottom: var(--space-6); | |
| 1443 | 1407 | } | |
| 1444 | 1408 | ||
| @@ -1466,7 +1430,7 @@ form button:active { | |||
| 1466 | 1430 | } | |
| 1467 | 1431 | ||
| 1468 | 1432 | .buy-page .buy-card { | |
| 1469 | - | background: var(--light-background); |
Lines truncated
| @@ -367,17 +367,17 @@ function saveProjectInfo(e, projectId) { | |||
| 367 | 367 | body: JSON.stringify(data) | |
| 368 | 368 | }).then(function(r) { | |
| 369 | 369 | if (r.ok) { | |
| 370 | - | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success-color)'; } | |
| 370 | + | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success)'; } | |
| 371 | 371 | setTimeout(function() { if (status) status.textContent = ''; }, 2000); | |
| 372 | 372 | } else { | |
| 373 | 373 | r.text().then(function(body) { | |
| 374 | 374 | var msg = 'Save failed'; | |
| 375 | 375 | try { msg = JSON.parse(body).error || msg; } catch(_) {} | |
| 376 | - | if (status) { status.textContent = msg; status.style.color = 'var(--error-color)'; } | |
| 376 | + | if (status) { status.textContent = msg; status.style.color = 'var(--danger)'; } | |
| 377 | 377 | }); | |
| 378 | 378 | } | |
| 379 | 379 | }).catch(function() { | |
| 380 | - | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--error-color)'; } | |
| 380 | + | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--danger)'; } | |
| 381 | 381 | }); | |
| 382 | 382 | return false; | |
| 383 | 383 | } | |
| @@ -406,7 +406,7 @@ function saveProjectPricing(e, projectId) { | |||
| 406 | 406 | if (model === 'buy_once') { | |
| 407 | 407 | var p = parseFloat(document.getElementById('settings-price-dollars').value); | |
| 408 | 408 | if (!(p >= 0.50)) { | |
| 409 | - | if (status) { status.textContent = 'Price must be at least $0.50'; status.style.color = 'var(--error-color)'; } | |
| 409 | + | if (status) { status.textContent = 'Price must be at least $0.50'; status.style.color = 'var(--danger)'; } | |
| 410 | 410 | return false; | |
| 411 | 411 | } | |
| 412 | 412 | data.price_dollars = p; | |
| @@ -421,17 +421,17 @@ function saveProjectPricing(e, projectId) { | |||
| 421 | 421 | body: JSON.stringify(data) | |
| 422 | 422 | }).then(function(r) { | |
| 423 | 423 | if (r.ok) { | |
| 424 | - | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success-color)'; } | |
| 424 | + | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success)'; } | |
| 425 | 425 | setTimeout(function() { if (status) status.textContent = ''; }, 2000); | |
| 426 | 426 | } else { | |
| 427 | 427 | r.text().then(function(body) { | |
| 428 | 428 | var msg = 'Save failed'; | |
| 429 | 429 | try { msg = JSON.parse(body).error || msg; } catch(_) {} | |
| 430 | - | if (status) { status.textContent = msg; status.style.color = 'var(--error-color)'; } | |
| 430 | + | if (status) { status.textContent = msg; status.style.color = 'var(--danger)'; } | |
| 431 | 431 | }); | |
| 432 | 432 | } | |
| 433 | 433 | }).catch(function() { | |
| 434 | - | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--error-color)'; } | |
| 434 | + | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--danger)'; } | |
| 435 | 435 | }); | |
| 436 | 436 | return false; | |
| 437 | 437 | } | |
| @@ -451,14 +451,14 @@ function updateFeatures(projectId) { | |||
| 451 | 451 | body: JSON.stringify({features: selected}) | |
| 452 | 452 | }).then(function(r) { | |
| 453 | 453 | if (r.ok) { | |
| 454 | - | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success-color)'; } | |
| 454 | + | if (status) { status.textContent = 'Saved'; status.style.color = 'var(--success)'; } | |
| 455 | 455 | // Reload the page so the tab bar reflects new features | |
| 456 | 456 | setTimeout(function() { window.location.reload(); }, 300); | |
| 457 | 457 | } else { | |
| 458 | - | if (status) { status.textContent = 'Save failed'; status.style.color = 'var(--error-color)'; } | |
| 458 | + | if (status) { status.textContent = 'Save failed'; status.style.color = 'var(--danger)'; } | |
| 459 | 459 | } | |
| 460 | 460 | }).catch(function() { | |
| 461 | - | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--error-color)'; } | |
| 461 | + | if (status) { status.textContent = 'Network error'; status.style.color = 'var(--danger)'; } | |
| 462 | 462 | }); | |
| 463 | 463 | } | |
| 464 | 464 | </script> |