diff options
Diffstat (limited to 'theme')
| -rw-r--r-- | theme/static/favicon.svg | 14 | ||||
| -rw-r--r-- | theme/static/koi-hr.svg | 7 | ||||
| -rw-r--r-- | theme/static/styles.css | 607 | ||||
| -rw-r--r-- | theme/static/tokens.css | 51 | ||||
| -rw-r--r-- | theme/templates/base.html | 49 | ||||
| -rw-r--r-- | theme/templates/blog.html | 16 | ||||
| -rw-r--r-- | theme/templates/garden.html | 18 | ||||
| -rw-r--r-- | theme/templates/index.html | 38 | ||||
| -rw-r--r-- | theme/templates/page.html | 2 | ||||
| -rw-r--r-- | theme/templates/post.html | 10 |
10 files changed, 73 insertions, 739 deletions
diff --git a/theme/static/favicon.svg b/theme/static/favicon.svg deleted file mode 100644 index b6a89f2..0000000 --- a/theme/static/favicon.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1500 1499.999933"> - <style> - path { fill: #111111; } - @media (prefers-color-scheme: dark) { path { fill: #ffffff; } } - </style> - <defs> - <clipPath id="c"> - <path d="M 246.484375 243.425781 L 1253.730469 243.425781 L 1253.730469 1256.457031 L 246.484375 1256.457031 Z" clip-rule="nonzero"/> - </clipPath> - </defs> - <g clip-path="url(#c)"> - <path fill-rule="nonzero" d="M 562.695312 907.28125 C 514.085938 881.21875 396.300781 818.089844 368.757812 795.410156 C 351.777344 781.4375 345.167969 771.671875 345.152344 765.117188 C 345.152344 762.648438 346.535156 760.578125 348.84375 758.890625 C 352.042969 756.558594 356.808594 754.898438 362.398438 753.796875 C 381.738281 750.015625 408.554688 753.210938 419.015625 759.636719 C 433.589844 783.507812 445.734375 801.542969 451.113281 804.4375 C 442.617188 780.46875 429.820312 749.761719 426.273438 724.375 C 422.824219 699.628906 421.839844 674.320312 423.527344 648.550781 C 424.203125 638.359375 425.214844 628.765625 426.183594 619.714844 C 431 574.277344 434.464844 541.792969 390.460938 495.28125 C 384.738281 489.226562 377.890625 482.316406 370.613281 474.960938 C 321.140625 424.960938 250.707031 353.765625 261.152344 267.800781 C 315.074219 306.644531 342.925781 327.1875 407.71875 334.761719 C 431.320312 337.511719 456.527344 336.820312 478.058594 329.164062 C 516.382812 315.507812 544.5625 284.574219 556.761719 269.183594 C 585.796875 331.273438 570.703125 413.90625 557.585938 485.699219 C 555.382812 497.800781 553.21875 509.597656 551.347656 520.890625 L 550.988281 518.554688 C 548.242188 492 533.292969 467.066406 523.683594 458.480469 C 543.953125 487.382812 544.246094 547.246094 546.410156 585.914062 C 548.929688 630.609375 564.742188 669.382812 589.390625 702.851562 C 598.3125 714.96875 608.402344 726.378906 619.417969 737.101562 C 631.074219 748.449219 648.730469 762.6875 668.375 775.730469 C 694.527344 793.078125 719.457031 807.15625 744.265625 818.808594 C 813.890625 851.503906 901.886719 873.054688 977.726562 889.058594 C 1010.898438 896.054688 1096.996094 920.363281 1158.511719 953.554688 C 1194.910156 973.207031 1222.335938 995.527344 1223.371094 1018.152344 C 1224.523438 1043.605469 1204.757812 1067.1875 1177.46875 1086.679688 C 1137.429688 1115.277344 1081.878906 1134.636719 1050.003906 1139.148438 C 1031.6875 1141.75 1013.195312 1143.371094 994.636719 1144.058594 C 982.558594 1144.5 970.476562 1144.539062 958.371094 1144.191406 C 968.617188 1130.5 979.1875 1114.320312 979.929688 1104.875 C 941.871094 1141.261719 909.90625 1170.003906 864.242188 1199.265625 C 825.28125 1224.238281 781.023438 1245.164062 744.679688 1242.683594 C 727.714844 1241.515625 717.398438 1236.394531 712.25 1228.964844 C 708.503906 1223.5625 707.335938 1216.6875 708.210938 1209.125 C 709.167969 1200.882812 712.5 1191.832031 717.585938 1182.796875 C 731.828125 1157.542969 759.238281 1133.378906 786.851562 1127.394531 C 807.09375 1134.054688 858.996094 1138.113281 869.710938 1127.019531 C 850.992188 1126.398438 825.226562 1126.160156 785.628906 1112.675781 C 726.160156 1092.4375 669.730469 1062.9375 619.5 1025.476562 C 570.769531 989.117188 527.917969 945.246094 493.855469 895.03125 C 490.457031 890.042969 487.257812 885.117188 484.230469 880.289062 C 512.519531 895.828125 553.472656 909.324219 562.695312 907.28125 Z M 849.492188 843.15625 C 822.199219 835.515625 746.46875 809.984375 712.699219 787.941406 C 727.59375 784.449219 741.570312 775.574219 755.640625 766.617188 C 778.648438 751.992188 801.984375 737.167969 827.550781 750.769531 C 865.59375 771.007812 855.625 821.660156 849.492188 843.15625 Z M 1187.714844 1095.996094 C 1193.289062 1108.085938 1206.632812 1127.722656 1213.546875 1132.421875 C 1206.738281 1121.804688 1197.832031 1107.753906 1195.359375 1090.117188 C 1220.78125 1069.574219 1238.171875 1044.957031 1236.910156 1017.554688 C 1236.273438 1003.515625 1228.519531 990.085938 1215.964844 977.492188 C 1227.179688 964.300781 1238.597656 955.117188 1253.757812 947.238281 C 1236.328125 950.964844 1222.746094 958.582031 1210.03125 971.890625 C 1197.898438 961.117188 1182.367188 950.980469 1165.015625 941.609375 C 1102.1875 907.703125 1014.351562 882.890625 980.527344 875.761719 C 940.914062 867.402344 901.410156 858.167969 862.488281 846.980469 C 869.40625 822.773438 880.914062 763.816406 833.9375 738.800781 C 801.347656 721.457031 774.664062 738.429688 748.339844 755.164062 C 714.078125 776.953125 704.867188 785.246094 675.054688 764.835938 C 645.808594 744.8125 620.042969 721.589844 600.316406 694.808594 C 569.453125 652.917969 553.351562 602.132812 561.96875 541.046875 C 564.328125 524.25 567.570312 506.546875 570.925781 488.140625 C 585.132812 410.402344 601.589844 320.296875 563.734375 253.046875 L 558.328125 243.4375 L 552.183594 252.632812 C 552.089844 252.765625 521.253906 299.34375 473.464844 316.371094 C 454.113281 323.269531 431.039062 323.839844 409.285156 321.292969 C 344.542969 313.730469 305.648438 285.066406 251.222656 245.695312 L 249.367188 255.355469 C 230.609375 352.796875 307.546875 430.535156 360.976562 484.542969 C 367.878906 491.511719 374.386719 498.078125 380.570312 504.636719 C 420.316406 546.636719 417.140625 576.492188 412.707031 618.253906 C 411.726562 627.359375 410.703125 637.019531 410.011719 647.636719 C 408.25 674.414062 409.269531 700.664062 412.839844 726.246094 C 413.664062 732.140625 414.621094 738.003906 415.707031 743.84375 C 400.136719 739 377.105469 737.089844 359.808594 740.472656 C 352.363281 741.933594 345.738281 744.363281 340.839844 747.929688 C 335.050781 752.152344 331.585938 757.804688 331.585938 765.128906 C 331.613281 775.546875 339.617188 789.015625 360.15625 805.921875 C 375.710938 818.742188 417.804688 843.34375 460.855469 867.351562 C 464.039062 873.097656 467.453125 878.921875 471.089844 884.828125 C 474.886719 890.996094 478.734375 896.941406 482.613281 902.675781 C 517.539062 954.148438 561.460938 999.121094 611.414062 1036.371094 C 658.433594 1071.457031 710.828125 1099.710938 766.101562 1120.132812 C 741.265625 1131.347656 718.578125 1153.363281 705.757812 1176.121094 C 699.824219 1186.632812 695.921875 1197.433594 694.738281 1207.558594 C 693.503906 1218.375 695.347656 1228.417969 701.085938 1236.699219 C 708.519531 1247.433594 722.175781 1254.761719 743.75 1256.234375 C 810.464844 1260.796875 899.523438 1194.117188 943.382812 1157.15625 C 960.628906 1158.085938 977.910156 1158.246094 995.15625 1157.621094 C 1014.125 1156.917969 1033.054688 1155.246094 1051.890625 1152.578125 C 1095.21875 1146.4375 1152.65625 1121.753906 1187.714844 1095.996094"/> - </g> -</svg>
\ No newline at end of file diff --git a/theme/static/koi-hr.svg b/theme/static/koi-hr.svg deleted file mode 100644 index 1062b04..0000000 --- a/theme/static/koi-hr.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1500 1500"> - <style> - path { fill: #111111; } - @media (prefers-color-scheme: dark) { path { fill: #F0EDE8; } } - </style> - <path fill-rule="nonzero" d="M 562.695312 907.28125 C 514.085938 881.21875 396.300781 818.089844 368.757812 795.410156 C 351.777344 781.4375 345.167969 771.671875 345.152344 765.117188 C 345.152344 762.648438 346.535156 760.578125 348.84375 758.890625 C 352.042969 756.558594 356.808594 754.898438 362.398438 753.796875 C 381.738281 750.015625 408.554688 753.210938 419.015625 759.636719 C 433.589844 783.507812 445.734375 801.542969 451.113281 804.4375 C 442.617188 780.46875 429.820312 749.761719 426.273438 724.375 C 422.824219 699.628906 421.839844 674.320312 423.527344 648.550781 C 424.203125 638.359375 425.214844 628.765625 426.183594 619.714844 C 431 574.277344 434.464844 541.792969 390.460938 495.28125 C 384.738281 489.226562 377.890625 482.316406 370.613281 474.960938 C 321.140625 424.960938 250.707031 353.765625 261.152344 267.800781 C 315.074219 306.644531 342.925781 327.1875 407.71875 334.761719 C 431.320312 337.511719 456.527344 336.820312 478.058594 329.164062 C 516.382812 315.507812 544.5625 284.574219 556.761719 269.183594 C 585.796875 331.273438 570.703125 413.90625 557.585938 485.699219 C 555.382812 497.800781 553.21875 509.597656 551.347656 520.890625 L 550.988281 518.554688 C 548.242188 492 533.292969 467.066406 523.683594 458.480469 C 543.953125 487.382812 544.246094 547.246094 546.410156 585.914062 C 548.929688 630.609375 564.742188 669.382812 589.390625 702.851562 C 598.3125 714.96875 608.402344 726.378906 619.417969 737.101562 C 631.074219 748.449219 648.730469 762.6875 668.375 775.730469 C 694.527344 793.078125 719.457031 807.15625 744.265625 818.808594 C 813.890625 851.503906 901.886719 873.054688 977.726562 889.058594 C 1010.898438 896.054688 1096.996094 920.363281 1158.511719 953.554688 C 1194.910156 973.207031 1222.335938 995.527344 1223.371094 1018.152344 C 1224.523438 1043.605469 1204.757812 1067.1875 1177.46875 1086.679688 C 1137.429688 1115.277344 1081.878906 1134.636719 1050.003906 1139.148438 C 1031.6875 1141.75 1013.195312 1143.371094 994.636719 1144.058594 C 982.558594 1144.5 970.476562 1144.539062 958.371094 1144.191406 C 968.617188 1130.5 979.1875 1114.320312 979.929688 1104.875 C 941.871094 1141.261719 909.90625 1170.003906 864.242188 1199.265625 C 825.28125 1224.238281 781.023438 1245.164062 744.679688 1242.683594 C 727.714844 1241.515625 717.398438 1236.394531 712.25 1228.964844 C 708.503906 1223.5625 707.335938 1216.6875 708.210938 1209.125 C 709.167969 1200.882812 712.5 1191.832031 717.585938 1182.796875 C 731.828125 1157.542969 759.238281 1133.378906 786.851562 1127.394531 C 807.09375 1134.054688 858.996094 1138.113281 869.710938 1127.019531 C 850.992188 1126.398438 825.226562 1126.160156 785.628906 1112.675781 C 726.160156 1092.4375 669.730469 1062.9375 619.5 1025.476562 C 570.769531 989.117188 527.917969 945.246094 493.855469 895.03125 C 490.457031 890.042969 487.257812 885.117188 484.230469 880.289062 C 512.519531 895.828125 553.472656 909.324219 562.695312 907.28125 Z M 849.492188 843.15625 C 822.199219 835.515625 746.46875 809.984375 712.699219 787.941406 C 727.59375 784.449219 741.570312 775.574219 755.640625 766.617188 C 778.648438 751.992188 801.984375 737.167969 827.550781 750.769531 C 865.59375 771.007812 855.625 821.660156 849.492188 843.15625 Z M 1187.714844 1095.996094 C 1193.289062 1108.085938 1206.632812 1127.722656 1213.546875 1132.421875 C 1206.738281 1121.804688 1197.832031 1107.753906 1195.359375 1090.117188 C 1220.78125 1069.574219 1238.171875 1044.957031 1236.910156 1017.554688 C 1236.273438 1003.515625 1228.519531 990.085938 1215.964844 977.492188 C 1227.179688 964.300781 1238.597656 955.117188 1253.757812 947.238281 C 1236.328125 950.964844 1222.746094 958.582031 1210.03125 971.890625 C 1197.898438 961.117188 1182.367188 950.980469 1165.015625 941.609375 C 1102.1875 907.703125 1014.351562 882.890625 980.527344 875.761719 C 940.914062 867.402344 901.410156 858.167969 862.488281 846.980469 C 869.40625 822.773438 880.914062 763.816406 833.9375 738.800781 C 801.347656 721.457031 774.664062 738.429688 748.339844 755.164062 C 714.078125 776.953125 704.867188 785.246094 675.054688 764.835938 C 645.808594 744.8125 620.042969 721.589844 600.316406 694.808594 C 569.453125 652.917969 553.351562 602.132812 561.96875 541.046875 C 564.328125 524.25 567.570312 506.546875 570.925781 488.140625 C 585.132812 410.402344 601.589844 320.296875 563.734375 253.046875 L 558.328125 243.4375 L 552.183594 252.632812 C 552.089844 252.765625 521.253906 299.34375 473.464844 316.371094 C 454.113281 323.269531 431.039062 323.839844 409.285156 321.292969 C 344.542969 313.730469 305.648438 285.066406 251.222656 245.695312 L 249.367188 255.355469 C 230.609375 352.796875 307.546875 430.535156 360.976562 484.542969 C 367.878906 491.511719 374.386719 498.078125 380.570312 504.636719 C 420.316406 546.636719 417.140625 576.492188 412.707031 618.253906 C 411.726562 627.359375 410.703125 637.019531 410.011719 647.636719 C 408.25 674.414062 409.269531 700.664062 412.839844 726.246094 C 413.664062 732.140625 414.621094 738.003906 415.707031 743.84375 C 400.136719 739 377.105469 737.089844 359.808594 740.472656 C 352.363281 741.933594 345.738281 744.363281 340.839844 747.929688 C 335.050781 752.152344 331.585938 757.804688 331.585938 765.128906 C 331.613281 775.546875 339.617188 789.015625 360.15625 805.921875 C 375.710938 818.742188 417.804688 843.34375 460.855469 867.351562 C 464.039062 873.097656 467.453125 878.921875 471.089844 884.828125 C 474.886719 890.996094 478.734375 896.941406 482.613281 902.675781 C 517.539062 954.148438 561.460938 999.121094 611.414062 1036.371094 C 658.433594 1071.457031 710.828125 1099.710938 766.101562 1120.132812 C 741.265625 1131.347656 718.578125 1153.363281 705.757812 1176.121094 C 699.824219 1186.632812 695.921875 1197.433594 694.738281 1207.558594 C 693.503906 1218.375 695.347656 1228.417969 701.085938 1236.699219 C 708.519531 1247.433594 722.175781 1254.761719 743.75 1256.234375 C 810.464844 1260.796875 899.523438 1194.117188 943.382812 1157.15625 C 960.628906 1158.085938 977.910156 1158.246094 995.15625 1157.621094 C 1014.125 1156.917969 1033.054688 1155.246094 1051.890625 1152.578125 C 1095.21875 1146.4375 1152.65625 1121.753906 1187.714844 1095.996094"/> -</svg> diff --git a/theme/static/styles.css b/theme/static/styles.css index d6ffd0e..120f733 100644 --- a/theme/static/styles.css +++ b/theme/static/styles.css @@ -1,597 +1,12 @@ -@import url('tokens.css'); - -/* ============================================================ - HOMEPAGE INTRO - ============================================================ */ -.homepage-intro { - max-width: var(--prose-w); - margin: 3rem 0; - margin-top: 1rem; - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); -} -.homepage-intro p { margin-bottom: 1.1rem; } -.homepage-intro p:first-child { - font-size: 0.9rem; - text-transform: uppercase; - letter-spacing: 0.1em; - font-family: var(--font-sans); - color: var(--meta); - margin-bottom: 0.5rem; -} -.homepage-intro p:nth-child(2) { - font-size: 1.3rem; - font-weight: 700; - letter-spacing: -0.01em; - color: var(--fg); - margin-bottom: 1.5rem; -} - -/* ============================================================ - RESET & BASE - ============================================================ */ -*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } - -body { - background: var(--bg); - color: var(--fg); - font-family: var(--font-sans); - font-size: var(--text-body); - line-height: var(--lh-body); - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - -/* Full-bleed header — border and nav span 100vw */ -header { - width: 100%; -} - -/* Centered content column */ -main, -footer, -header { - max-width: var(--outer-w); - margin: 0 auto; - padding-left: var(--pad); - padding-right: var(--pad); -} -footer { padding-bottom: 3rem; } - -/* Prose constraint — applied to article/page body text only */ -.prose { - max-width: var(--prose-w); -} - -/* ============================================================ - MASTHEAD - ============================================================ */ -.masthead { - border-top: 2px solid var(--fg); - padding-top: 1.5rem; - padding-bottom: 0; - padding-left: var(--pad); - padding-right: var(--pad); -} - -.masthead-title { - display: block; - font-family: var(--font-serif); - font-size: var(--text-display); - font-weight: 700; - line-height: var(--lh-display); - letter-spacing: -0.03em; - text-decoration: none; - color: var(--fg); - margin-bottom: 1.25rem; -} -.masthead-title:hover { color: var(--accent); background: none; } - -.masthead-subtitle { - font-family: var(--font-sans); - font-size: var(--text-xs); - letter-spacing: 0.12em; - color: var(--meta); - text-transform: lowercase; - margin-bottom: 1rem; -} - -/* ============================================================ - NAV STRIP — full outer width, equal cells - ============================================================ */ -.masthead nav ul { - list-style: none; - display: flex; -} -.masthead nav li { flex: 1; } -.masthead nav a { - display: block; - text-align: center; - padding: 0.55rem 0; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.16em; - text-decoration: none; - color: var(--meta); - border: 1px solid var(--border-soft); - transition: color 0.1s, background 0.1s; -} -.masthead nav a:hover { color: var(--bg); background: var(--fg); } - -/* ============================================================ - MAIN CONTENT AREA - ============================================================ */ -main { padding-top: 2rem; } - -/* ============================================================ - KOI HR - ============================================================ */ -hr { - border: none; - height: 2.5rem; - position: relative; - display: flex; - align-items: center; - justify-content: center; - background-image: url('koi-hr.svg'); - background-repeat: no-repeat; - background-position: center; - background-size: auto 100%; - margin: 3rem 0; -} -hr::before, hr::after { - content: ''; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: calc(50% - 2rem); - height: 1px; - background: var(--border-soft); -} -hr::before { left: 0; } -hr::after { right: 0; } - -/* ============================================================ - FOOTER - ============================================================ */ -footer { - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - display: flex; - flex-direction: column; - gap: 0.4rem; -} -footer a { color: var(--meta); text-decoration: none; transition: color 0.1s; } -footer a:hover { color: var(--fg); background: none; } - -/* ============================================================ - TYPOGRAPHY - ============================================================ */ -h1, h2, h3, h4 { - font-family: var(--font-serif); - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.1; -} - -/* Page-level h1 (blog list, garden, guides) */ -h1 { - font-size: var(--text-h1); - margin-bottom: 0.5rem; -} - -/* Article display title — larger, tighter */ -.article-title { - font-family: var(--font-serif); - font-size: clamp(2.4rem, 5vw, 3.6rem); - font-weight: 700; - line-height: 1.05; - letter-spacing: -0.03em; - margin: 0.4rem 0 0; -} - -h2 { - font-size: var(--text-h2); - border-left: 1px solid var(--accent); - padding-left: 0.75rem; - margin-top: 2.5rem; - margin-bottom: 0.4rem; -} -h3 { font-size: 1.05rem; margin-top: 2rem; margin-bottom: 0.3rem; } - -p { margin-bottom: 1.2rem; } - -/* Accent ONLY on links and h2 bar — nowhere else */ -a { - color: var(--accent); - text-decoration: underline; - text-underline-offset: 3px; - transition: background 0.1s, color 0.1s; -} -a:hover { background: var(--accent); color: var(--bg); text-decoration: none; } - -/* ============================================================ - SECTION LABEL — uppercase eyebrow text - ============================================================ */ -.label { - display: block; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.16em; - color: var(--meta); - border-bottom: 1px solid var(--fg); - padding-bottom: 0.5rem; - margin-bottom: 0; -} - -/* ============================================================ - INFO STRIP — homepage identity block - ============================================================ */ - - -/* ============================================================ - POST LIST — numbered, full outer width - ============================================================ */ -.post-list { - list-style: none; - counter-reset: posts; -} -.post-list-item { - counter-increment: posts; - display: grid; - grid-template-columns: 2.5rem 1fr 7rem; - align-items: baseline; - gap: 0 1rem; - padding: 0.75rem 0; - border-bottom: 1px solid var(--border-soft); -} -.post-list-item:first-child { border-top: 1px solid var(--border-soft); } -.post-list-item::before { - content: counter(posts, decimal-leading-zero); - font-family: var(--font-mono); - font-size: var(--text-xs); - color: var(--meta); - letter-spacing: 0.04em; - grid-column: 1; -} -.post-list-item a { - font-size: var(--text-sm); - justify-self: start; -} -.post-list-item time { - font-size: var(--text-xs); - font-family: var(--font-mono); - color: var(--meta); - text-align: right; - white-space: nowrap; - letter-spacing: 0.04em; -} - -/* Year separator — full-width label, resets counter display */ -.post-list-year { - display: block; - font-family: var(--font-sans); - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - padding: 1.5rem 0 0.4rem; - counter-increment: none; -} - -.all-posts-link { - display: inline-block; - margin-top: 1.5rem; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.12em; -} - -/* ============================================================ - ARTICLE — post page - ============================================================ */ -.article-dateline { - font-family: var(--font-mono); - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - margin-bottom: 0.35rem; -} - -.article-standfirst { - font-family: var(--font-serif); - font-size: 1.15rem; - line-height: 1.55; - color: var(--fg-soft); - padding: 1.25rem 0; - border-top: 1px solid var(--border-soft); - border-bottom: 1px solid var(--fg); - margin-top: 1rem; - max-width: var(--prose-w); -} - -.article-body { - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); - max-width: var(--prose-w); - margin-top: 2.5rem; -} -.article-body p { margin-bottom: 1.3rem; } - -.reply-link { - max-width: var(--prose-w); - margin-top: 4rem; - padding-top: 1.5rem; - border-top: 1px solid var(--border-soft); - font-size: var(--text-xs); - font-family: var(--font-sans); - text-transform: uppercase; - letter-spacing: 0.12em; -} - -/* ============================================================ - GENERIC PAGE (about, uses, etc.) - ============================================================ */ -.page-body { - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); - max-width: var(--prose-w); - margin-top: 2rem; -} -.page-body p { margin-bottom: 1.3rem; } - -/* ============================================================ - BLOG ARCHIVE - ============================================================ */ -.blog-meta { - font-size: var(--text-sm); - color: var(--meta); - margin: 0.75rem 0 2rem; -} -.blog-meta code { - font-size: var(--text-xs); - background: var(--code-bg); - padding: 0.1rem 0.35rem; - font-family: var(--font-mono); -} - -/* Year separators in post list */ -.post-list-year { - font-family: var(--font-serif); - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - padding: 1.25rem 0 0.5rem; - list-style: none; - grid-column: 1 / -1; -} - -/* Restore list styling inside content areas */ -.article-body ul, -.article-body ol, -.page-body ul, -.page-body ol { - padding-left: 1.5rem; - margin-bottom: 1.2rem; -} -.article-body li, -.page-body li { - margin-bottom: 0.3rem; -} -.article-body ul ul, -.article-body ol ol, -.page-body ul ul, -.page-body ol ol { - margin-bottom: 0; -} - -/* ============================================================ - GARDEN - ============================================================ */ -.garden-index { list-style: none; } -.garden-index li { - display: flex; - flex-direction: column; - gap: 0.15rem; - padding: 0.8rem 0; - border-bottom: 1px solid var(--border-soft); -} -.garden-index li:first-child { border-top: 1px solid var(--border-soft); } -.garden-index a { font-size: var(--text-sm); } -.garden-desc { font-size: var(--text-xs); color: var(--meta); } - -/* ============================================================ - APP CARDS - ============================================================ */ -.app-card { - display: flex; - gap: 1.25rem; - align-items: flex-start; - padding: 1.25rem 0; - border-bottom: 1px solid var(--border-soft); -} -.app-card:first-of-type { border-top: 1px solid var(--border-soft); } -.app-icon { width: 52px; height: 52px; border-radius: 12px; flex-shrink: 0; filter: none !important; margin: 0; display: block; } -.app-card a:has(.app-icon):hover { background: none; } -.app-info { display: flex; flex-direction: column; gap: 0.2rem; } -.app-title { font-family: var(--font-sans); font-weight: 700; font-size: var(--text-sm); } -.app-subtitle { font-size: var(--text-xs); color: var(--meta); } -.app-links { font-size: var(--text-xs); margin-top: 0.3rem; } - -/* ============================================================ - CODE & PRE - ============================================================ */ -pre { - padding: 1.25rem; - border-left: 1px solid var(--border-soft); - background: var(--code-bg); - overflow-x: auto; - font-size: var(--text-sm); - margin: 1.75rem 0; - line-height: 1.6; -} -code { - font-family: var(--font-mono); - background: var(--code-bg); - padding: 0.15rem 0.4rem; - font-size: 0.875em; -} -pre code { background: none; padding: 0; font-size: inherit; } - -/* ============================================================ - BLOCKQUOTE — intentional Org-mode delimiters - ============================================================ */ -blockquote { - font-style: italic; - margin: 1.75rem 0; - padding: 0.75rem 1rem; - border-left: 1px solid var(--border-soft); - background: var(--code-bg); -} -blockquote p:last-child { margin-bottom: 0; } +body { max-width: 800px; margin: 0 auto; } +nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } +nav ul li { padding-right: 0.5rem;} +img { max-width: 100%; } +.post-list-item { display: flexbox; list-style: none; } +.post-list-item time { padding-right: 0.5rem; } +.post-list-year { list-style: none; margin-top: 1rem; margin-bottom: 0.5rem; font-weight: bold; } +.skip-link { display: none; } +footer { margin: 2rem 0;} +pre, blockquote { margin: 1rem 0; padding: 0.5rem; background-color: lightgrey; } blockquote p { margin: 0; } -blockquote::before { - content: "#+begin_quote"; - display: block; - color: var(--meta); - font-style: normal; - font-size: var(--text-xs); - font-family: var(--font-mono); - letter-spacing: 0.04em; - margin-bottom: 0.5rem; -} -blockquote::after { - content: "#+end_quote"; - display: block; - color: var(--meta); - font-style: normal; - font-size: var(--text-xs); - font-family: var(--font-mono); - letter-spacing: 0.04em; - margin-top: 0.5rem; -} - -/* ============================================================ - TABLES - ============================================================ */ -table { - display: block; - width: 100%; - max-width: 100%; - overflow-x: auto; - border: none; - border-collapse: collapse; - margin: 2rem 0; -} - -table td, table th { - white-space: nowrap; - padding: 0.5rem 1rem; -} -th, td { - border-bottom: 1px solid var(--border-soft); - padding: 0.65rem 0.75rem; - text-align: left; - font-size: var(--text-sm); -} -th { - border-bottom: 1px solid var(--fg); - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.1em; - font-weight: 700; -} -tr:last-child td { border-bottom: none; } - -/* ============================================================ - IMAGES - ============================================================ */ -img { - max-width: 100%; - height: auto; - filter: grayscale(1); - transition: filter 0.25s; - display: block; - margin: 2rem 0; -} -img:hover { filter: grayscale(0); } - -/* ============================================================ - FOOTNOTES - ============================================================ */ -.footdef { display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 0.5rem; } -.footpara { margin: 0; flex: 1; font-size: var(--text-sm); } -.footnum { - font-weight: 700; - min-width: 1.5rem; - text-align: right; - text-decoration: none; - font-size: var(--text-xs); - color: var(--meta); - font-family: var(--font-mono); -} - -/* ============================================================ - SKIP LINK - ============================================================ */ -.skip-link { - position: absolute; - top: -100px; - left: 50%; - transform: translateX(-50%); - background: var(--fg); - color: var(--bg); - padding: 0.75rem 1.5rem; - z-index: 999; - font-weight: 700; - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.12em; - text-decoration: none; - transition: top 0.2s; -} -.skip-link:focus { top: 0; outline: none; } -#main-content:focus { outline: none; } - -/* ============================================================ - RESPONSIVE - ============================================================ */ -@media (max-width: 700px) { - .masthead-title { font-size: clamp(3rem, 14vw, 5rem); } - .masthead nav ul { flex-wrap: wrap; } - .masthead nav li { flex: none; width: 50%; } - .masthead nav a { border-bottom: 1px solid var(--border-soft); } - .post-list-item { grid-template-columns: 2.25rem 1fr; } - .post-list-item time { display: none; } - .article-title { font-size: clamp(2rem, 9vw, 2.8rem); } -} - -@media (max-width: 480px) { - .masthead nav li { width: 33.333%; } -} - -/* Tags page */ -.tag-toc { - display: flex; - flex-wrap: wrap; - gap: 0.5rem 1.5rem; - list-style: none; - padding: 0; - margin: 0 0 3rem; -} -.tag-count { - color: var(--meta); - font-size: var(--text-xs); -} +code { color: darkred; }
\ No newline at end of file diff --git a/theme/static/tokens.css b/theme/static/tokens.css deleted file mode 100644 index 3f67b12..0000000 --- a/theme/static/tokens.css +++ /dev/null @@ -1,51 +0,0 @@ -/* ============================================================================= - BRAND TOKENS — cleberg.net - ============================================================================= */ -:root { - color-scheme: light dark; - - /* Light */ - --bg: #ffffff; - --bg-soft: #f5f5f5; - --fg: #0a0a0a; - --fg-soft: #444444; - --accent: #c0392b; - --border: #0a0a0a; - --border-soft: #dedede; - --code-bg: #f3f3f3; - --meta: #999999; - - /* Fonts */ - --font-serif: Georgia, 'Times New Roman', serif; - --font-sans: system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif; - --font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace; - - /* Type scale */ - --text-display: clamp(4rem, 8vw, 6.5rem); - --text-h1: clamp(2.2rem, 4vw, 3rem); - --text-h2: 1.2rem; - --text-body: 1.0625rem; - --text-sm: 0.875rem; - --text-xs: 0.6875rem; /* 11px — label tier */ - --lh-display: 0.95; - --lh-body: 1.75; - - /* Layout */ - --outer-w: 1000px; - --prose-w: 720px; - --pad: clamp(1.25rem, 4vw, 2.5rem); -} - -@media (prefers-color-scheme: dark) { - :root { - --bg: #080808; - --bg-soft: #111111; - --fg: #eeebe6; - --fg-soft: #aaa8a3; - --accent: #e05a48; - --border: #eeebe6; - --border-soft: #1e1e1e; - --code-bg: #0d0d0d; - --meta: #555555; - } -} diff --git a/theme/templates/base.html b/theme/templates/base.html index 8eca335..65681e5 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -9,45 +9,36 @@ {% if site_description is defined %}<meta name="description" content="{{ site_description }}">{% endif %} {% if site_keywords is defined %}<meta name="keywords" content="{{ site_keywords }}">{% endif %} <link rel="stylesheet" href="{{ url_for("static", file="styles.min.css") }}" type="text/css"> - <link rel="icon" href="{{ url_for("static", file="favicon.svg") }}" type="image/svg+xml"> + <link rel="icon" href="data:,"> {% block meta %}{% endblock %} {% endblock %} </head> <body> <a href="#main-content" class="skip-link">Skip to content</a> - <header class="masthead"> - <a href="/" class="masthead-title">seijaku</a> - <p class="masthead-subtitle"><i>stillness amidst the chaos</i></p> - <nav aria-label="Site Navigation"> - <ul> - <li><a href="/blog/">Blog</a></li> - <li><a href="/tags/">Tags</a></li> - <li><a href="/guides/index.html">Guides</a></li> - <li><a href="/apps/">Apps</a></li> - <li><a href="/garden/">Garden</a></li> - <li><a href="/salary/">Salary</a></li> - </ul> - </nav> - </header> + + <nav aria-label="Site Navigation"> + <ul> + <li><a href="/">Home</a></li> + <li><a href="/apps/">Apps</a></li> + <li><a href="/blog/">Blog</a></li> + <li><a href="/garden/">Garden</a></li> + <li><a href="/guides/">Guides</a></li> + <li><a href="/salary/">Salary</a></li> + <li><a href="/tags/">Tags</a></li> + </ul> + </nav> + <main id="main-content"> {% block main %}{% endblock %} </main> - <hr> + <footer> - <div> - <a href="https://github.com/ccleberg/cleberg.net">Source</a> · - <a href="/feed.xml">RSS</a> · - <a href="http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/">Onion</a> · - <a href="/now/">Now</a> · - <a href="/uses/">Uses</a> · - <a href="/tips/">Tips</a> · - <a href="https://cv.cleberg.net">CV</a> - </div> - <div> - <a href="mailto:[email protected]">[email protected]</a> [<a href="/gpg.txt">PGP</a>] · - Signal: @cmc.01 - </div> + <a href="https://github.com/ccleberg/cleberg.net">Source</a> · + <a href="/feed.xml">RSS</a> · + <a href="http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/">Onion</a> · + <a href="/tips/">Tips</a> </footer> + <section class="indieweb-links" style="display:none"> <link href="https://github.com/ccleberg" rel="me"> <link href="https://gitlab.com/ccleberg" rel="me"> diff --git a/theme/templates/blog.html b/theme/templates/blog.html index 605d883..ba7beb3 100644 --- a/theme/templates/blog.html +++ b/theme/templates/blog.html @@ -1,13 +1,13 @@ {% extends "base.html" %} {% block subtitle %}blog - {% endblock %} {% block main %} <h1>Blog</h1> -<p class="blog-meta">Use <code>⌘ F</code> / <code>Ctrl F</code> to search · <a href="/feed.xml">RSS Feed</a></p> -<p class="label">All Posts</p> +<p>Use <code>⌘ F</code> / <code>Ctrl F</code> to search · <a href="/feed.xml">RSS Feed</a></p> +<p>All Posts</p> <ul class="post-list"> -{% for post in posts %} -<li class="post-list-item"> - <a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a> - <time datetime='{{ post.date | strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time> -</li> -{% endfor %} + {% for post in posts %} + <li class="post-list-item"> + <time datetime='{{ post.date | strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time> + <a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a> + </li> + {% endfor %} </ul> {% endblock %} diff --git a/theme/templates/garden.html b/theme/templates/garden.html index 79238f5..c546078 100644 --- a/theme/templates/garden.html +++ b/theme/templates/garden.html @@ -14,14 +14,14 @@ around.</p> <span><strong>🍂 Compost:</strong> Ideas you no longer agree with but want to keep for historical context.</span><br><br> </section> -<ul class="garden-index"> -{% for post in posts %} -<li> - <a href='{{ url_for("garden", slug=post.slug) }}'>{{ post.title }}</a> - {% if post.description %} - <span class="garden-desc">{{ post.description }}</span> - {% endif %} -</li> -{% endfor %} +<ul> + {% for post in posts %} + <li> + <a href='{{ url_for("garden", slug=post.slug) }}'>{{ post.title }}</a> + {% if post.description %} + <span>{{ post.description }}</span> + {% endif %} + </li> + {% endfor %} </ul> {% endblock %} diff --git a/theme/templates/index.html b/theme/templates/index.html index d15eeca..de9fae3 100644 --- a/theme/templates/index.html +++ b/theme/templates/index.html @@ -1,22 +1,22 @@ {% extends "base.html" %} {% block main %} -<div class="homepage-intro"> - <p>My name is Christian.</p> - <p>I’m a technology auditor who doesn’t trust technology companies.</p> - <p>I run my own infrastructure. I audit everyone else's.</p> - <p>The infrastructure is the point. Self-hosted, self-managed, minimal - dependencies. This site is part of it: plaintext, no trackers, no - frameworks, no corporate CDN.</p> - <p>The audit job funds it. KPMG. Technology Assurance. I spend 50-80 hours a - week inside the systems I refuse to use personally. The irony is the - business model.</p> - <p>GPG key, salary, and server stack are all public. That's the whole - introduction.</p> -</div> +<section> + <p><b>Hi, I'm Christian.</b></p> + <p>I'm a Technology Assurance Manager @ KPMG.</p> + <p>I use this site as a place to think out loud (see my <a href="/blog/">blog</a>, <a href="/garden/">garden</a>, or + <a href="/guides/">guides</a>), a place to publish information (see + my <a href="https://cv.cleberg.net">CV</a> and <a href="/salary/">salary</a> + pages), and a foundational URI to use for my projects (see + my <a href="/apps/">apps</a>).</p> + <p>If you want to chat, you can find me in the following spaces:</p> + <ul> + <li>hello [at] cleberg.net (<a href="/gpg.txt">PGP Key</a>)</li> + <li>@cmc.01 on <a href="https://signal.org">Signal</a></li> + </ul> + <p>Curious about the technology behind this website? Check out my <a href="/uses/">/uses</a> page.</p> + <p>Curious about what I've been up to lately in my personal life? Check out my <a href="/now/">/now</a> page.</p> +</section> -<p class="section-label">Recent Posts</p> -<ul class="post-list"> - <!-- BEGIN_POSTS --> - <!-- END_POSTS --> -</ul> -<a class="all-posts-link" href="/blog/">All Posts →</a> +<p>Recent Posts</p> +<!-- BEGIN_POSTS --><!-- END_POSTS --> +<p><a href="/blog/">All Posts →</a></p> {% endblock %} diff --git a/theme/templates/page.html b/theme/templates/page.html index a302c4b..6c22589 100644 --- a/theme/templates/page.html +++ b/theme/templates/page.html @@ -3,6 +3,6 @@ {% block main %} <article> <h1>{{ post.title }}</h1> - <div class="page-body">{{ post.html | safe }}</div> + <div>{{ post.html | safe }}</div> </article> {% endblock %} diff --git a/theme/templates/post.html b/theme/templates/post.html index 018068e..df6c3b7 100644 --- a/theme/templates/post.html +++ b/theme/templates/post.html @@ -10,12 +10,12 @@ {% endblock %} {% block main %} <article> - <p class="article-dateline"><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time></p> - <h1 class="article-title">{{ post.title }}</h1> + <p><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time></p> + <h1>{{ post.title }}</h1> {% if post.description is defined %} - <p class="article-standfirst">{{ post.description }}</p> + <p>{{ post.description }}</p> {% endif %} - <div class="article-body">{{ post.html | safe }}</div> - <div class="reply-link"><a href="mailto:[email protected]">Reply via email →</a></div> + <div>{{ post.html | safe }}</div> + <div><a href="mailto:[email protected]">Reply via email →</a></div> </article> {% endblock %} |
