diff --git a/.theme/assets/fonts/ibm-plex-mono-400.ttf b/.theme/assets/fonts/ibm-plex-mono-400.ttf new file mode 100644 index 0000000..02d682c Binary files /dev/null and b/.theme/assets/fonts/ibm-plex-mono-400.ttf differ diff --git a/.theme/assets/fonts/ibm-plex-mono-500.ttf b/.theme/assets/fonts/ibm-plex-mono-500.ttf new file mode 100644 index 0000000..54927d5 Binary files /dev/null and b/.theme/assets/fonts/ibm-plex-mono-500.ttf differ diff --git a/.theme/assets/fonts/inter-400.ttf b/.theme/assets/fonts/inter-400.ttf new file mode 100644 index 0000000..399a6e0 Binary files /dev/null and b/.theme/assets/fonts/inter-400.ttf differ diff --git a/.theme/assets/fonts/inter-500.ttf b/.theme/assets/fonts/inter-500.ttf new file mode 100644 index 0000000..4a57a1a Binary files /dev/null and b/.theme/assets/fonts/inter-500.ttf differ diff --git a/.theme/assets/fonts/playfair-display-600.ttf b/.theme/assets/fonts/playfair-display-600.ttf new file mode 100644 index 0000000..784f2a5 Binary files /dev/null and b/.theme/assets/fonts/playfair-display-600.ttf differ diff --git a/.theme/assets/fonts/playfair-display-700.ttf b/.theme/assets/fonts/playfair-display-700.ttf new file mode 100644 index 0000000..0af6372 Binary files /dev/null and b/.theme/assets/fonts/playfair-display-700.ttf differ diff --git a/.theme/assets/fonts/playfair-display-italic-500.ttf b/.theme/assets/fonts/playfair-display-italic-500.ttf new file mode 100644 index 0000000..cffca1b Binary files /dev/null and b/.theme/assets/fonts/playfair-display-italic-500.ttf differ diff --git a/.theme/assets/styles/theme.css b/.theme/assets/styles/theme.css index 3e23ae7..f4d9509 100644 --- a/.theme/assets/styles/theme.css +++ b/.theme/assets/styles/theme.css @@ -1,502 +1,137 @@ -:root { - color-scheme: dark; - --bg: #111314; - --surface: #191c1d; - --surface-raised: #202425; - --text: #f1eee6; - --muted: #aaa99f; - --line: #34393a; - --accent: #d9a75c; - --accent-strong: #f2c57d; - --focus: #8fd3ff; - --max-width: 72rem; - font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - font-synthesis: none; -} - -* { - box-sizing: border-box; -} - -html { - scroll-behavior: smooth; -} - -body { - margin: 0; - background: - radial-gradient(circle at 10% 0%, rgb(217 167 92 / 10%), transparent 28rem), - var(--bg); - color: var(--text); - font-size: 1rem; - line-height: 1.65; -} - -a { - color: var(--accent-strong); - text-underline-offset: 0.2em; - text-decoration-thickness: 0.08em; -} - -a:hover { - color: #ffe1ad; -} - -:focus-visible { - outline: 0.2rem solid var(--focus); - outline-offset: 0.2rem; -} - -.shell { - width: min(calc(100% - 2rem), var(--max-width)); - margin-inline: auto; -} - -.skip-link { - position: fixed; - z-index: 10; - top: 0.75rem; - left: 0.75rem; - padding: 0.65rem 0.9rem; - transform: translateY(-160%); - border-radius: 0.35rem; - background: var(--text); - color: var(--bg); -} - -.skip-link:focus { - transform: translateY(0); -} - -.site-header { - border-bottom: 1px solid var(--line); - background: rgb(17 19 20 / 88%); -} - -.header-inner { - min-height: 4.75rem; - display: flex; - align-items: center; - justify-content: space-between; - gap: 1.5rem; -} - -.brand { - display: inline-flex; - align-items: center; - gap: 0.7rem; - color: var(--text); - font-weight: 750; - letter-spacing: -0.02em; - text-decoration: none; -} - -.brand-mark { - width: 2rem; - height: 2rem; - display: grid; - place-items: center; - border: 1px solid var(--accent); - border-radius: 50%; - color: var(--accent-strong); - font-family: Georgia, "Times New Roman", serif; - font-style: italic; -} - -.site-nav { - display: flex; - flex-wrap: wrap; - gap: 0.25rem; -} - -.site-nav a { - padding: 0.45rem 0.7rem; - border-radius: 0.35rem; - color: var(--muted); - font-size: 0.9rem; - font-weight: 650; - text-decoration: none; -} - -.site-nav a:hover, -.site-nav a[aria-current="page"] { - background: var(--surface-raised); - color: var(--text); -} - -main.shell { - min-height: 68vh; - padding-block: clamp(3.5rem, 8vw, 7rem); -} - -h1, -h2, -h3 { - margin-top: 0; - font-family: Georgia, "Times New Roman", serif; - font-weight: 500; - line-height: 1.08; - letter-spacing: -0.035em; -} - -h1 { - max-width: 13ch; - margin-bottom: 1.25rem; - font-size: clamp(3rem, 9vw, 6.5rem); -} - -h2 { - font-size: clamp(2rem, 5vw, 3.25rem); -} - -h3 { - font-size: 1.5rem; -} - -.eyebrow, -.card-kind, -.content-meta, -.footer-meta { - color: var(--accent); - font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; - font-size: 0.78rem; - font-weight: 700; - letter-spacing: 0.12em; - text-transform: uppercase; -} - -.hero { - max-width: 62rem; -} - -.hero h1 { - max-width: 11ch; -} - -.hero-summary, -.lede { - max-width: 48rem; - color: #d2d0c8; - font-size: clamp(1.2rem, 2.5vw, 1.55rem); - line-height: 1.5; -} - -.hero-copy { - margin-top: 3rem; -} - -.section-block, -.listing { - margin-top: clamp(4rem, 9vw, 7rem); - padding-top: 2rem; - border-top: 1px solid var(--line); -} - -.section-heading { - margin-bottom: 2rem; -} - -.section-heading h2 { - margin-bottom: 0; -} - -.card-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 1rem; -} - -.card { - min-height: 18rem; - display: flex; - flex-direction: column; - padding: clamp(1.35rem, 3vw, 2rem); - border: 1px solid var(--line); - border-radius: 0.75rem; - background: linear-gradient(145deg, var(--surface-raised), var(--surface)); -} - -.card h2, -.card h3 { - margin-bottom: 0.8rem; -} - -.card h2 a, -.card h3 a, -.listing-item h2 a { - color: var(--text); - text-decoration: none; -} - -.card p:not(.card-kind) { - color: var(--muted); -} - -.card .text-link { - margin-top: auto; - padding-top: 1.5rem; -} - -.text-link { - width: fit-content; - font-weight: 750; - text-decoration: none; -} - -.page-intro, -.content-header { - margin-bottom: clamp(3rem, 8vw, 5.5rem); -} - -.page-intro h1, -.content-header h1 { - font-size: clamp(3rem, 8vw, 5.5rem); -} - -.listing { - display: grid; -} - -.listing-item { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: end; - gap: 2rem; - padding-block: 2rem; - border-bottom: 1px solid var(--line); -} - -.listing-item h2 { - margin-bottom: 0.6rem; - font-size: clamp(1.75rem, 4vw, 2.5rem); -} - -.listing-item p { - max-width: 46rem; - margin-bottom: 0; - color: var(--muted); -} - -.content-page { - max-width: 56rem; -} - -.prose { - max-width: 46rem; - color: #d5d3cb; - font-size: 1.05rem; -} - -.prose > * + * { - margin-top: 1.35em; -} - -.prose h2, -.prose h3 { - margin-top: 2em; - color: var(--text); -} - -.prose h2 { - font-size: 2rem; -} - -.prose h3 { - font-size: 1.4rem; -} - -.prose code { - padding: 0.12em 0.32em; - border: 1px solid var(--line); - border-radius: 0.25rem; - background: var(--surface); - font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; - font-size: 0.9em; -} - -.prose pre { - overflow-x: auto; - padding: 1.25rem; - border: 1px solid var(--line); - border-radius: 0.5rem; - background: #0b0d0e; -} - -.prose pre code { - padding: 0; - border: 0; - background: none; -} - -.prose blockquote { - margin-inline: 0; - padding-left: 1.25rem; - border-left: 0.2rem solid var(--accent); - color: var(--muted); -} - -.project-facts { - display: flex; - flex-wrap: wrap; - gap: 1rem; - margin-top: 2rem; -} - -.project-facts div { - min-width: 9rem; - padding: 0.8rem 1rem; - border: 1px solid var(--line); - border-radius: 0.5rem; - background: var(--surface); -} - -.project-facts dt { - color: var(--muted); - font-size: 0.75rem; - font-weight: 700; - text-transform: uppercase; -} - -.project-facts dd { - margin: 0.2rem 0 0; -} - -.tag-list { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - margin: 1.5rem 0 0; - padding: 0; - list-style: none; -} - -.tag-list li { - padding: 0.32rem 0.6rem; - border: 1px solid var(--line); - border-radius: 999px; - color: var(--muted); - font-size: 0.82rem; -} - -.content-tags { - margin-top: 3rem; - padding-top: 1.5rem; - border-top: 1px solid var(--line); -} - -.button-link { - display: inline-block; - margin-top: 1.5rem; - padding: 0.75rem 1rem; - border: 1px solid var(--accent); - border-radius: 0.4rem; - text-decoration: none; -} - -.error-page { - max-width: 48rem; -} - -.error-page p:not(.eyebrow) { - color: var(--muted); - font-size: 1.2rem; -} - -.empty-state { - color: var(--muted); -} - -.site-footer { - padding-block: 2.5rem; - border-top: 1px solid var(--line); - color: var(--muted); -} - -.footer-inner { - display: flex; - justify-content: space-between; - gap: 2rem; -} - -.footer-inner p { - margin: 0; -} - -.visually-hidden { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} - -@media (max-width: 44rem) { - .header-inner, - .footer-inner { - align-items: flex-start; - flex-direction: column; - } - - .header-inner { - padding-block: 1rem; - } - - .card-grid { - grid-template-columns: 1fr; - } - - .listing-item { - grid-template-columns: 1fr; - align-items: start; - gap: 1rem; - } -} - -@media (prefers-reduced-motion: reduce) { - html { - scroll-behavior: auto; - } -} - -@media (prefers-color-scheme: light) { - :root { - color-scheme: light; - --bg: #f4f0e7; - --surface: #ebe5da; - --surface-raised: #fffaf0; - --text: #202323; - --muted: #5f625f; - --line: #cbc4b7; - --accent: #87591b; - --accent-strong: #704713; - --focus: #075b9b; - } - - body { - background: - radial-gradient(circle at 10% 0%, rgb(135 89 27 / 11%), transparent 28rem), - var(--bg); - } - - a:hover { - color: #4e2d04; - } - - .site-header { - background: rgb(244 240 231 / 90%); - } - - .hero-summary, - .lede, - .prose { - color: #3d413f; - } - - .prose pre { - background: #242728; - color: #f7f3eb; - } -} +@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-400.ttf") format("truetype")} +@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-500.ttf") format("truetype")} +@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-400.ttf") format("truetype")} +@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/ibm-plex-mono-500.ttf") format("truetype")} +@font-face{font-family:"Playfair Display";font-style:italic;font-weight:500 600;font-display:swap;src:url("../fonts/playfair-display-italic-500.ttf") format("truetype")} +@font-face{font-family:"Playfair Display";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/playfair-display-600.ttf") format("truetype")} +@font-face{font-family:"Playfair Display";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/playfair-display-700.ttf") format("truetype")} + +:root{ + color-scheme:dark; + --ink:#0e1116; + --ink-raised:#12161c; + --paper:#edeae2; + --paper-dim:#a9a69c; + --teal:#3fa9a0; + --violet:#8073c9; + --rose:#c75b7a; + --hairline:#2a2f38; + --hairline-soft:#1b1f26; + --font-brand:"Playfair Display",Georgia,serif; + --font-mono:"IBM Plex Mono",Consolas,monospace; + --font-body:"Inter",system-ui,sans-serif; + font-synthesis:none; +} + +*{box-sizing:border-box} +html{scroll-behavior:smooth} +body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased} +a{color:inherit;text-decoration:none} +a:focus-visible{outline:1.5px solid var(--rose);outline-offset:3px} +.wrap{width:min(100% - 64px,816px);margin-inline:auto} +.skip-link{position:fixed;z-index:10;top:12px;left:12px;padding:8px 12px;transform:translateY(-180%);background:var(--paper);color:var(--ink);font-family:var(--font-mono);font-size:12px} +.skip-link:focus{transform:translateY(0)} + +.site-header{padding-top:28px;border-bottom:1px solid var(--hairline)} +.header-top{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding-bottom:22px} +.brand-lockup{display:flex;flex-direction:column;gap:4px} +.brand-mark{font-family:var(--font-brand);font-size:30px;font-weight:700;letter-spacing:.5px} +.brand-tag{color:var(--teal);font-family:var(--font-mono);font-size:11.5px;letter-spacing:1.5px;text-transform:uppercase} +.registry{display:flex;flex-wrap:wrap;gap:22px;color:var(--paper-dim);font-family:var(--font-mono);font-size:12px;letter-spacing:1px;text-transform:uppercase} +.registry a{position:relative;padding-bottom:3px;transition:color .15s ease} +.registry a::after{position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--teal);content:"";transition:width .2s ease} +.registry a:hover,.registry a[aria-current="page"]{color:var(--paper)} +.registry a:hover::after,.registry a[aria-current="page"]::after{width:100%} +.header-links{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0;color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px} +.file-number{color:var(--hairline)} +.external-links{display:flex;flex-wrap:wrap;gap:16px} +.external-links a{transition:color .15s ease} +.external-links a:hover{color:var(--violet)} + +.hero{padding:46px 0 40px;border-bottom:1px solid var(--hairline)} +.hero-eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 14px;color:var(--rose);font-family:var(--font-mono);font-size:11.5px;font-weight:400;letter-spacing:3px;text-transform:uppercase} +.hero-eyebrow::before{width:18px;height:1px;background:var(--rose);content:""} +.hero h1{max-width:610px;margin:0;color:var(--paper);font-family:var(--font-brand);font-size:clamp(28px,4vw,36px);font-style:italic;font-weight:600;line-height:1.35;letter-spacing:-.012em} +.hero-copy,.detail-summary{max-width:560px;margin:16px 0 0;color:var(--paper-dim);font-size:14.5px;line-height:1.55} +.hero-copy p{margin:0} +.hero-copy p+p{margin-top:12px} +.page-hero h1{font-size:clamp(36px,6vw,54px);font-style:normal;line-height:1.12} +.detail-hero h1{max-width:700px;font-size:clamp(38px,6.5vw,62px);font-style:normal;line-height:1.1} +.detail-summary{max-width:620px;font-size:16px} +.detail-meta{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:22px;color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.7px;text-transform:uppercase} + +.chronicle{padding:48px 0 20px} +.section-label{display:flex;justify-content:space-between;gap:20px;margin-bottom:6px;padding-bottom:22px;border-bottom:1px solid var(--hairline-soft);color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;font-weight:400;letter-spacing:2.5px;text-transform:uppercase} +.section-label h2{margin:0;font:inherit} +.ledger{position:relative;padding-left:28px} +.ledger::before{position:absolute;top:10px;bottom:10px;left:5px;width:1px;background:var(--hairline);content:""} +.entry{--node-color:var(--violet);position:relative;padding:26px 0;border-bottom:1px solid var(--hairline-soft)} +.entry:last-child{border-bottom:0} +.entry::before{position:absolute;top:32px;left:-28px;width:9px;height:9px;border:1.5px solid var(--node-color);border-radius:50%;background:var(--ink);content:""} +.entry.type-project{--node-color:var(--teal)} +.entry-meta{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:10px;color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px} +.tag{padding:2px 7px;border:1px solid var(--node-color);color:var(--node-color);font-family:var(--font-mono);font-size:10.5px;letter-spacing:1px;text-transform:capitalize} +.entry-title{margin:0 0 8px;color:var(--paper);font-family:var(--font-brand);font-size:20px;font-weight:600;line-height:1.3} +.entry-title a,.compact-title a{transition:color .15s ease} +.entry-title a:hover,.compact-title a:hover{color:var(--teal)} +.entry-snippet{max-width:620px;margin:0;color:var(--paper-dim);font-size:14px;line-height:1.6} +.entry-more{display:inline-block;margin-top:12px;padding-bottom:2px;border-bottom:1px solid transparent;color:var(--rose);font-family:var(--font-mono);font-size:11px;letter-spacing:1px;text-transform:uppercase} +.entry-more:hover{border-bottom-color:var(--rose)} +.entry.type-project:not(.project-entry){display:flex;align-items:baseline;flex-wrap:wrap;gap:14px;padding:16px 0} +.entry.type-project:not(.project-entry) .entry-meta{margin-bottom:0} +.compact-title{margin:0;font-family:var(--font-body);font-size:14.5px;font-weight:500;line-height:1.4} +.empty-state{padding:32px 0;color:var(--paper-dim);font-family:var(--font-mono);font-size:12px} + +.detail-body{padding-top:48px;padding-bottom:32px} +.markdown-body{max-width:680px;color:var(--paper-dim);font-size:15px;line-height:1.75} +.markdown-body>*:first-child{margin-top:0} +.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:2rem 0 1rem;color:var(--paper);font-family:var(--font-brand);font-weight:600;line-height:1.25} +.markdown-body h1{padding-bottom:10px;border-bottom:1px solid var(--hairline);font-size:28px;font-style:italic} +.markdown-body h2{padding-bottom:8px;border-bottom:1px solid var(--hairline-soft);font-size:22px;font-style:italic} +.markdown-body h3{font-size:18px} +.markdown-body p{margin:0 0 1.2rem} +.markdown-body ul,.markdown-body ol{margin:0 0 1.2rem 1.5rem;padding:0} +.markdown-body li{margin-bottom:.4rem} +.markdown-body a{color:var(--teal);border-bottom:1px dashed var(--teal)} +.markdown-body a:hover{border-bottom-style:solid} +.markdown-body code{padding:2px 6px;border:1px solid var(--hairline-soft);border-radius:3px;background:var(--ink-raised);color:var(--teal);font-family:var(--font-mono);font-size:.9em} +.markdown-body pre{overflow-x:auto;margin:0 0 1.5rem;padding:1.2rem;border:1px solid var(--hairline-soft);border-radius:6px;background:var(--ink-raised)} +.markdown-body pre code{padding:0;border:0;background:none;color:inherit} +.markdown-body blockquote{margin:0 0 1.5rem;padding-left:1rem;border-left:3px solid var(--teal);font-style:italic} +.markdown-body img{max-width:100%;height:auto} +.project-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;max-width:700px;margin:28px 0 0;background:var(--hairline-soft)} +.project-facts div{padding:14px;background:var(--ink)} +.project-facts dt,.section-kicker{color:var(--paper-dim);font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase} +.project-facts dd{margin:5px 0 0;color:var(--paper);font-size:13px} +.content-tags{max-width:680px;margin-top:44px;padding-top:22px;border-top:1px solid var(--hairline-soft)} +.section-kicker{margin:0 0 12px} +.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none} +.tag-list li{padding:3px 8px;border:1px solid var(--hairline);color:var(--paper-dim);font-family:var(--font-mono);font-size:10px;letter-spacing:.7px} + +.site-footer{margin-top:30px;padding:30px 0 50px;border-top:1px solid var(--hairline)} +.footer-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px} +.footer-brand{margin:0;color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px} +.footer-links{display:flex;flex-wrap:wrap;gap:18px;color:var(--paper-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px;text-transform:uppercase} +.footer-links a:hover{color:var(--teal)} +.error-page{min-height:62vh;padding-top:80px} +.error-page .entry-more{margin-top:28px} + +@media(max-width:640px){ + .wrap{width:calc(100% - 40px)} + .site-header{padding-top:32px} + .header-top{align-items:flex-start;flex-direction:column;gap:14px} + .registry{gap:14px} + .header-links{align-items:flex-start;flex-direction:column;gap:8px} + .external-links{gap:12px} + .hero{padding:46px 0 38px} + .hero h1{font-size:28px} + .page-hero h1,.detail-hero h1{font-size:38px} + .chronicle{padding-top:46px} + .section-label{font-size:10px;letter-spacing:2px} + .entry.type-project:not(.project-entry){align-items:flex-start;flex-direction:column;gap:6px} + .project-facts{grid-template-columns:1fr} + .footer-row{align-items:flex-start;flex-direction:column} + .footer-brand{max-width:320px} +} + +@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}} diff --git a/.theme/templates/404.liquid b/.theme/templates/404.liquid index 030c63f..cd57057 100644 --- a/.theme/templates/404.liquid +++ b/.theme/templates/404.liquid @@ -1,6 +1 @@ -
-

Error 404

-

That route does not exist.

-

The page may have moved, or the address may be incomplete.

- Return home -
+

{{ site.presentation.notFound.eyebrow }}

{{ site.presentation.notFound.title }}

{{ site.presentation.notFound.summary }}

{{ site.presentation.notFound.action }}
diff --git a/.theme/templates/content/article.liquid b/.theme/templates/content/article.liquid index 23debe5..9c52f03 100644 --- a/.theme/templates/content/article.liquid +++ b/.theme/templates/content/article.liquid @@ -1,25 +1 @@ -
-
-

Article

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} - {% if page.published %} - - {% endif %} -
-
- {{ page.renderedContent | safe_content }} -
- {% if page.tags.size > 0 %} - - {% endif %} -
+

{{ site.presentation.content.articleEyebrow }}

{{ page.title }}

{% if page.summary %}

{{ page.summary }}

{% endif %}
{{ site.presentation.content.publishedLabel }} {{ page.published }}{{ site.presentation.content.articleMeta }}
{{ page.renderedContent | safe_content }}
{% if page.tags.size > 0 %}{% endif %}
diff --git a/.theme/templates/content/page.liquid b/.theme/templates/content/page.liquid index 222750b..8abb328 100644 --- a/.theme/templates/content/page.liquid +++ b/.theme/templates/content/page.liquid @@ -1,12 +1 @@ -
-
-

Page

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} -
-
- {{ page.renderedContent | safe_content }} -
-
+

{{ site.presentation.content.pageEyebrow }}

{{ page.title }}

{% if page.summary %}

{{ page.summary }}

{% endif %}
{{ page.renderedContent | safe_content }}
diff --git a/.theme/templates/content/project.liquid b/.theme/templates/content/project.liquid index 815b488..3617e5e 100644 --- a/.theme/templates/content/project.liquid +++ b/.theme/templates/content/project.liquid @@ -1,33 +1 @@ -
-
-

Project

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} -
- {% if page.metadata.version %} -
Version
{{ page.metadata.version }}
- {% endif %} - {% if page.metadata.license %} -
License
{{ page.metadata.license }}
- {% endif %} - {% if page.metadata.stack.size > 0 %} -
Stack
{{ page.metadata.stack | join: ", " }}
- {% endif %} -
-
-
- {{ page.renderedContent | safe_content }} -
- {% if page.tags.size > 0 %} - - {% endif %} -
+

{{ site.presentation.content.projectEyebrow }}

{{ page.title }}

{% if page.summary %}

{{ page.summary }}

{% endif %}
{% if page.metadata.version %}
{{ site.presentation.content.versionLabel }}
{{ page.metadata.version }}
{% endif %}{% if page.metadata.license %}
{{ site.presentation.content.licenseLabel }}
{{ page.metadata.license }}
{% endif %}{% if page.metadata.stack.size > 0 %}
{{ site.presentation.content.stackLabel }}
{{ page.metadata.stack | join: ", " }}
{% endif %}
{{ page.renderedContent | safe_content }}
{% if page.tags.size > 0 %}{% endif %}
diff --git a/.theme/templates/home.liquid b/.theme/templates/home.liquid index 28b61a2..2f0907d 100644 --- a/.theme/templates/home.liquid +++ b/.theme/templates/home.liquid @@ -1,29 +1,22 @@
-

Configuration-first publishing

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} -
- {{ page.renderedContent | safe_content }} +
+

{{ site.presentation.home.eyebrow }}

+

{{ page.summary }}

+
{{ page.renderedContent | safe_content }}
- -{% if collection.items.size > 0 %} -
-
-

From the repository

-

Latest work

-
-
+
+
+ +
{% for item in collection.items %} -
-
-{% endif %} +
+
diff --git a/.theme/templates/layout.liquid b/.theme/templates/layout.liquid index 6907809..ad64ab3 100644 --- a/.theme/templates/layout.liquid +++ b/.theme/templates/layout.liquid @@ -4,40 +4,34 @@ - - {% if page.type == "home" %} - {{ site.title }} - {% else %} - {{ page.title }} · {{ site.title }} - {% endif %} - {% for stylesheet in theme.styles %} - - {% endfor %} + + {% if page.type == "home" %}Home — {{ site.title }}{% else %}{{ page.title }} — {{ site.title }}{% endif %} + {% for stylesheet in theme.styles %}{% endfor %} - -
- {{ page.body | safe_page_body }} -
- +
{{ page.body | safe_page_body }}
diff --git a/.theme/templates/sections/articles.liquid b/.theme/templates/sections/articles.liquid index 08588d8..75178eb 100644 --- a/.theme/templates/sections/articles.liquid +++ b/.theme/templates/sections/articles.liquid @@ -1,22 +1,4 @@ -
-

Writing

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} -
- -
- {% for item in collection.items %} -
-
-

{{ item.contentModel }}

-

{{ item.title }}

-

{{ item.summary }}

-
- Read -
- {% else %} -

No articles have been published yet.

- {% endfor %} -
+

{{ site.presentation.articles.eyebrow }}

{{ page.title }}

{{ site.presentation.articles.intro }}

+
+{% for item in collection.items %}{% else %}

{{ site.presentation.articles.emptyState }}

{% endfor %} +
diff --git a/.theme/templates/sections/projects.liquid b/.theme/templates/sections/projects.liquid index 6233706..35a1b09 100644 --- a/.theme/templates/sections/projects.liquid +++ b/.theme/templates/sections/projects.liquid @@ -1,27 +1,4 @@ -
-

Projects

-

{{ page.title }}

- {% if page.summary %} -

{{ page.summary }}

- {% endif %} -
- -
- {% for item in collection.items %} -
-

{{ item.contentModel }}

-

{{ item.title }}

-

{{ item.summary }}

- {% if item.tags.size > 0 %} - - {% endif %} - View project -
- {% else %} -

No projects have been published yet.

- {% endfor %} -
+

{{ site.presentation.projects.eyebrow }}

{{ page.title }}

{{ site.presentation.projects.intro }}

+
+{% for item in collection.items %}{% else %}

{{ site.presentation.projects.emptyState }}

{% endfor %} +
diff --git a/.theme/theme.yml b/.theme/theme.yml index cfca5b7..d6d6bba 100644 --- a/.theme/theme.yml +++ b/.theme/theme.yml @@ -1,6 +1,6 @@ protocol: labyricorn-theme/v1 -id: labyricorn-default -version: 1.0.0 +id: labyricorn-chronicle +version: 2.0.0 engine: liquid templates: @@ -19,7 +19,14 @@ assets: styles: - assets/styles/theme.css scripts: [] - files: [] + files: + - assets/fonts/inter-400.ttf + - assets/fonts/inter-500.ttf + - assets/fonts/ibm-plex-mono-400.ttf + - assets/fonts/ibm-plex-mono-500.ttf + - assets/fonts/playfair-display-600.ttf + - assets/fonts/playfair-display-700.ttf + - assets/fonts/playfair-display-italic-500.ttf fonts: [] security: diff --git a/pages/index.md b/pages/index.md index 96cbdfa..478e8f3 100644 --- a/pages/index.md +++ b/pages/index.md @@ -4,19 +4,7 @@ title: Labyricorn slug: home route: / status: published -summary: A configuration-first, Git-driven home for projects, articles, and documentation. +summary: A living record of what is shipping, what is written, and what is quietly under construction. --- -Labyricorn brings project information, articles, and documentation together -without replacing Git as the source of truth. - -The first version of this site is deliberately small. It exists to prove the -complete publishing path from a repository, through Labyricorn, to the locally -hosted public website. - -## Start here - -- Read the introduction to the publishing approach. -- Follow the Labyricorn project as the platform becomes operational. -- Return as additional repositories and content models are connected. - +Every entry below is generated directly from Git. Nothing here is hand-edited — commit it, and it appears. diff --git a/projects/labyricorn.md b/projects/labyricorn.md index 37ecd7b..e672bfe 100644 --- a/projects/labyricorn.md +++ b/projects/labyricorn.md @@ -3,6 +3,7 @@ model: project title: Labyricorn slug: labyricorn route: /projects/labyricorn/ +date: 2026-07-23 status: published summary: A configuration-first, Git-driven site builder and its administrative control plane. repository_url: https://git.labyricorn.com diff --git a/site.yml b/site.yml index df167cf..973512b 100644 --- a/site.yml +++ b/site.yml @@ -5,6 +5,59 @@ site: title: Labyricorn baseUrl: https://labyricorn.com language: en-US + presentation: + tagline: // developer devlog & project hub + registryLabel: REG. NO. 004 — EST. LOCAL + footerNotice: © 2026 Labyricorn — GENERATED FROM GIT, NEVER HAND-EDITED + headerLinks: + - label: Site source + url: https://git.labyricorn.com/Labyricorn/labyricorn-site-git-repo + - label: Engine + url: https://git.labyricorn.com/Labyricorn/git-website-engine-control-plane + footerLinks: + - label: Contact + url: mailto:hello@labyricorn.com + - label: Gitea + url: https://git.labyricorn.com/Labyricorn/labyricorn-site-git-repo + - label: Articles + url: /articles/ + - label: Projects + url: /projects/ + home: + eyebrow: The Chronicle + activityLabel: Recent activity + orderLabel: Repository order + entryAction: Read entry + articles: + eyebrow: The written record + intro: Notes, decisions, and dispatches published directly from the repository. + listLabel: Published entries + orderLabel: Newest in Git + entryAction: Read entry + emptyState: No articles have been published yet. + projects: + eyebrow: The working set + intro: Systems currently shipping, evolving, or quietly under construction. + listLabel: Project registry + orderLabel: Git is authoritative + entryAction: Open project + emptyState: No projects have been published yet. + content: + articleEyebrow: Article + articleMeta: Repository record + articleTags: Filed under + pageEyebrow: Repository page + projectEyebrow: Project registry + projectTags: Project tags + publishedLabel: Published + versionLabel: Version + licenseLabel: License + stackLabel: Stack + notFound: + eyebrow: Error 404 + title: That route is not in the ledger. + summary: The page may have moved, or the address may be incomplete. + action: Return to the chronicle navigationFile: ./navigation.yml projectsFile: ./projects.yml