diff --git a/assets/css/custom.css b/assets/css/custom.css
index 1868957..7c50966 100644
--- a/assets/css/custom.css
+++ b/assets/css/custom.css
@@ -17,9 +17,9 @@
--font-family-display: 'Space Grotesk', 'Inter', system-ui, sans-serif;
--font-family-mono-shibui: var(--font-family-mono);
- --font-size-base: 1.0625rem;
+ --font-size-base: 1.1875rem; /* +2pt vs. 1.0625 — better body legibility */
--font-size-small: 0.875rem;
- --font-size-code: 0.92rem;
+ --font-size-code: 0.95rem;
--spacing-base: 1.7em;
--spacing-xs: calc(var(--spacing-base) * 0.25);
@@ -46,7 +46,7 @@
--accent-soft: #d97a5a;
/* Republik-aligned tokens */
- --color-dark-panel: #191919; /* masthead/footer/hero (Republik #191919) */
+ --color-dark-panel: #191919; /* masthead/footer/hero */
--color-dark-panel-text: #f0f0f0;
--color-dark-panel-muted: #a9a9a9;
@@ -150,19 +150,28 @@ a:hover {
/* override: stack wordmark above nav, both within content column */
}
+/* Logo as background image (paths-only SVG, no font dependency) */
.wordmark-link {
border: none;
margin: 0;
padding: 0;
- display: inline-block;
+ display: block;
justify-self: center;
- /* Republik-style: serif wordmark, all caps, white on black */
- font-family: var(--font-family-serif);
- font-weight: 700;
- font-size: clamp(1.5rem, 3vw, 2rem);
- letter-spacing: 0.02em;
+ width: clamp(140px, 18vw, 200px);
+ height: clamp(22px, 2.8vw, 32px);
+ background-image: url("/logo/logo.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ color: transparent;
+ font-size: 0;
line-height: 1;
- color: #fff;
+}
+.wordmark-sr {
+ position: absolute;
+ width: 1px; height: 1px;
+ overflow: hidden;
+ clip: rect(0 0 0 0);
}
.wordmark-link:hover,
.wordmark-link:focus { color: #fff; border: none; opacity: 0.85; }
@@ -285,7 +294,6 @@ a:hover {
color: inherit;
text-decoration: none;
}
-.journal-entry-link:hover .journal-title { color: var(--section-color, var(--accent)); }
.journal-entry-body {
display: grid;
@@ -312,11 +320,12 @@ a:hover {
line-height: 1;
}
-/* Byline: single smooth serif line, "Von Author, DD.MM.YYYY" — Republik-style */
+/* Byline: single smooth sans line, "Von Author, DD.MM.YYYY" — Republik-style */
.journal-byline {
- font-family: var(--font-family-serif);
- font-size: 1rem;
- font-style: italic;
+ font-family: var(--font-family-sans);
+ font-size: 0.95rem;
+ font-style: normal;
+ font-weight: 400;
line-height: 1.4;
color: var(--color-text-muted);
margin: 0;
@@ -324,13 +333,10 @@ a:hover {
}
.journal-byline .journal-author {
color: var(--color-text-primary);
- font-style: normal;
font-weight: 500;
- text-decoration: underline;
- text-decoration-thickness: 1px;
- text-underline-offset: 0.18em;
+ text-decoration: none;
}
-.journal-byline .journal-date { font-variant-numeric: tabular-nums; font-style: normal; }
+.journal-byline .journal-date { font-variant-numeric: tabular-nums; }
/* Legacy .journal-meta retained for backwards-compat if any markup references it */
.journal-meta {
@@ -360,7 +366,7 @@ a:hover {
font-size: 0.9rem;
letter-spacing: 0.12em;
}
-.journal-author::before { content: "Von "; color: var(--color-text-muted); font-weight: 400; font-style: italic; }
+.journal-author::before { content: "Von "; color: var(--color-text-muted); font-weight: 400; }
.journal-entry--hero .journal-author::before { color: var(--color-dark-panel-muted); }
.journal-title {
@@ -391,35 +397,96 @@ a:hover {
[data-color="amagumo"] { --section-color: var(--palette-amagumo); }
[data-color="yuki"] { --section-color: var(--palette-yuki); }
-/* Hero treatment — first entry as a coloured Republik-style block.
- Full-bleed dark panel, white serif title, light meta on top. */
-/* Hero entry — Republik pattern.
- Without cover_image: warm terracotta panel, centered text on it.
- With cover_image: image fills the hero as background, text sits
- at the bottom on a dark gradient that fades into the terracotta. */
-.journal-entry--hero {
+/* ------------------------------------------------------------------------
+ Journal entries — three Republik-style layouts (set in front matter
+ via `layout: image|icon|text`). Every entry is a full-bleed coloured
+ or image panel; per-section/per-post colour drives the bg.
+ - image: cover image fills panel; text on dark gradient overlay; white type
+ - icon: coloured bg; small centred image above text; dark type
+ - text: coloured bg; no image; dark type
+ ------------------------------------------------------------------------ */
+
+/* Base panel — break out of the boxed content column */
+.journal-entry--layout-image,
+.journal-entry--layout-icon,
+.journal-entry--layout-text {
+ list-style: none;
border: none;
- background: #3a1a0d;
- color: var(--color-dark-panel-text);
+ margin: 0 calc(50% - 50vw);
padding: 0;
- margin: 0 calc(50% - 50vw) var(--spacing-lg);
- border-top: 10px solid var(--section-color, var(--accent));
+ position: relative;
+ overflow: hidden;
}
-.journal-entry--hero:last-child { border-bottom: none; }
-.journal-entry--hero .journal-entry-link {
+
+.journal-entry--layout-image .journal-entry-link,
+.journal-entry--layout-icon .journal-entry-link,
+.journal-entry--layout-text .journal-entry-link {
+ display: block;
+ width: 100%;
+ color: inherit;
+ text-decoration: none;
+ border: none;
+}
+
+/* Centred body, generous padding */
+.journal-entry--layout-image .journal-entry-body,
+.journal-entry--layout-icon .journal-entry-body,
+.journal-entry--layout-text .journal-entry-body {
+ max-width: 60ch;
+ margin: 0 auto;
+ padding: 3.5rem 1.75rem 3rem;
+ display: grid;
+ justify-items: center;
+ row-gap: 1.1rem;
+ text-align: center;
+}
+.journal-entry--layout-image .journal-entry-body > *,
+.journal-entry--layout-icon .journal-entry-body > *,
+.journal-entry--layout-text .journal-entry-body > * {
+ margin: 0;
+ max-width: 60ch;
+}
+
+/* Title sizes per layout — image (hero) is bigger, icon/text more modest */
+.journal-entry--layout-image .journal-title {
+ font-size: clamp(2rem, 3.8vw, 2.8rem);
+ line-height: 1.08;
+ letter-spacing: -0.026em;
+ font-weight: 800;
+}
+.journal-entry--layout-icon .journal-title,
+.journal-entry--layout-text .journal-title {
+ font-size: clamp(1.7rem, 3vw, 2.2rem);
+ line-height: 1.1;
+ letter-spacing: -0.022em;
+ font-weight: 800;
+}
+
+.journal-entry--layout-image .journal-summary,
+.journal-entry--layout-icon .journal-summary,
+.journal-entry--layout-text .journal-summary {
+ font-size: 1.15rem;
+ line-height: 1.4;
+ max-width: 42ch;
+}
+.journal-entry--layout-image .journal-byline,
+.journal-entry--layout-icon .journal-byline,
+.journal-entry--layout-text .journal-byline {
+ font-size: 0.95rem;
+}
+
+/* ---- Layout: IMAGE (full-bleed photo as background, no overlay) ---- */
+.journal-entry--layout-image {
+ background: #1a1a1a;
+ color: #fff;
+}
+.journal-entry--layout-image .journal-entry-link {
display: flex;
flex-direction: column;
justify-content: flex-end;
- position: relative;
- overflow: hidden;
- color: inherit;
- min-height: auto;
+ min-height: 70vh;
}
-/* When a hero image is present, give the link a viewport-anchored height */
-.journal-entry--hero:has(.journal-hero-image) .journal-entry-link {
- min-height: 72vh;
-}
-.journal-hero-image {
+.journal-bg-image {
position: absolute;
inset: 0;
width: 100%;
@@ -429,155 +496,109 @@ a:hover {
margin: 0;
filter: none;
}
-.journal-hero-image:hover { filter: none; }
-.journal-entry--hero .journal-entry-body {
+.journal-bg-image:hover { filter: none; }
+.journal-entry--layout-image .journal-entry-body {
position: relative;
z-index: 2;
- display: grid;
- justify-items: center;
- row-gap: 1.1rem;
- padding: 2.6rem 1.75rem 3rem;
- text-align: center;
- background: #3a1a0d;
-}
-/* When a hero image is present, body sits at the bottom over a gradient
- so text reads cleanly over the photo while the photo stays visible above. */
-.journal-entry--hero:has(.journal-hero-image) .journal-entry-body {
- padding-top: 7rem;
- background: linear-gradient(180deg,
- rgba(58,26,13,0) 0%,
- rgba(58,26,13,0.55) 25%,
- rgba(58,26,13,0.92) 65%,
- #3a1a0d 100%);
-}
-.journal-entry--hero .journal-entry-body > * {
max-width: 60ch;
- margin: 0;
+ padding-top: 3rem;
+ background: transparent;
+ color: #fff;
}
-.journal-entry--hero .journal-summary { max-width: 38ch; }
+/* Solid white text — no shadow halo. Legibility comes from the slight
+ darkening of the image at the bottom (where the body sits). */
+.journal-entry--layout-image .journal-title,
+.journal-entry--layout-image .journal-rubric,
+.journal-entry--layout-image .journal-summary,
+.journal-entry--layout-image .journal-byline {
+ color: #fff;
+ text-shadow: none;
+}
+.journal-entry--layout-image .journal-section {
+ background: rgba(0, 0, 0, 0.45);
+ color: #fff;
+ backdrop-filter: blur(2px);
+ -webkit-backdrop-filter: blur(2px);
+}
+.journal-entry--layout-image .journal-byline,
+.journal-entry--layout-image .journal-byline .journal-author,
+.journal-entry--layout-image .journal-byline .journal-date,
+.journal-entry--layout-image .journal-byline .journal-author::before { color: #fff; }
+.journal-entry--layout-image .journal-byline .journal-author { text-decoration: none; }
-/* ------------------------------------------------------------------------
- Non-hero card with cover image — two presentation modes:
-
- 1) default (wide): Republik-style — image as full-card wide banner above body.
- 2) icon mode: small square/portrait thumbnail next to the body text,
- with the card background filled in --section-color (when set).
- Trigger by adding `image_mode: icon` in the front matter
- (which adds `data-image="icon"` to the
).
- ------------------------------------------------------------------------ */
-
-/* Default wide banner image (no data-image) */
-.journal-entry:not(.journal-entry--hero) .journal-card-image {
+/* ---- Layout: ICON (coloured bg + small centred image, image is NOT tinted) ---- */
+.journal-entry--layout-icon {
+ background: var(--section-color, var(--accent));
+ color: var(--color-text-primary);
+}
+.journal-icon-image {
display: block;
- width: 100%;
- aspect-ratio: 16 / 9;
- object-fit: cover;
- margin: 0 0 1rem;
- filter: grayscale(40%);
- transition: filter 0.4s ease;
-}
-.journal-entry-link:hover .journal-card-image { filter: grayscale(0%); }
-
-/* Icon mode — colored card with thumbnail to the right */
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) {
- border: none;
- background: color-mix(in oklab, var(--section-color, var(--accent)) 12%, transparent);
- padding: 1.2rem 1.4rem;
- border-radius: 4px;
- border-left: 4px solid var(--section-color, var(--accent));
-}
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) + .journal-entry { border-top: none; }
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) .journal-entry-link {
- display: grid;
- grid-template-columns: 1fr auto;
- column-gap: 1.4rem;
- align-items: start;
-}
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) .journal-entry-body {
- grid-column: 1;
-}
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) .journal-card-image {
- grid-column: 2;
- grid-row: 1;
- width: 96px;
- height: 96px;
- aspect-ratio: 1 / 1;
- object-fit: cover;
- margin: 0;
- border-radius: 4px;
+ max-width: 240px;
+ max-height: 240px;
+ width: auto;
+ height: auto;
+ margin: 0 auto 1rem;
filter: none;
}
-@media (max-width: 540px) {
- .journal-entry[data-image="icon"]:not(.journal-entry--hero) .journal-card-image {
- width: 64px;
- height: 64px;
- }
-}
-.journal-entry--hero .journal-section {
- /* on the dark hero bg: brighter tint, light text */
- background: color-mix(in oklab, var(--section-color, var(--accent-soft)) 45%, transparent);
- color: var(--color-dark-panel-text);
-}
-.journal-entry--hero .journal-byline { color: var(--color-dark-panel-muted); }
-.journal-entry--hero .journal-byline .journal-author { color: var(--color-dark-panel-text); }
-.journal-entry--hero .journal-byline .journal-author::before { color: var(--color-dark-panel-muted); }
-.journal-entry--hero .journal-title {
- font-size: clamp(2.1rem, 4.2vw, 3rem);
- line-height: 1.02;
- letter-spacing: -0.028em;
- font-weight: 800;
- color: var(--color-dark-panel-text);
-}
-.journal-entry--hero .journal-summary {
- font-size: 1.35rem;
- line-height: 1.35;
- color: var(--color-dark-panel-text);
- max-width: 38ch;
-}
-.journal-entry--hero .journal-byline {
- font-size: 1.05rem;
- color: var(--color-dark-panel-muted);
-}
-.journal-entry--hero .journal-byline .journal-author {
- color: var(--color-dark-panel-text);
-}
-.journal-entry--hero .journal-tags { color: var(--color-dark-panel-muted); }
-.journal-entry--hero .journal-entry-link:hover .journal-title { color: var(--accent-soft); }
+.journal-icon-image:hover { filter: none; }
-.journal-summary {
- font-family: var(--font-family-serif);
- font-size: var(--font-size-base);
- line-height: 1.45;
+/* ---- Layout: TEXT (coloured bg only) ---- */
+.journal-entry--layout-text {
+ background: var(--section-color, var(--accent));
color: var(--color-text-primary);
- max-width: 60ch;
}
-.journal-tags { /* now extends .tag-pills — base styles come from there */ }
+/* Section pill on coloured panels — darker overlay on the colour bg */
+.journal-entry--layout-icon .journal-section,
+.journal-entry--layout-text .journal-section {
+ background: color-mix(in oklab, var(--color-text-primary) 10%, transparent);
+ color: var(--color-text-primary);
+}
-/* Hero tags — sit inside the dark hero block, below the link, centered */
-.journal-entry--hero > .tag-pills {
+/* All text on coloured panels is solid text-primary — including byline */
+.journal-entry--layout-icon .journal-title,
+.journal-entry--layout-text .journal-title,
+.journal-entry--layout-icon .journal-summary,
+.journal-entry--layout-text .journal-summary,
+.journal-entry--layout-icon .journal-byline,
+.journal-entry--layout-text .journal-byline,
+.journal-entry--layout-icon .journal-byline .journal-author,
+.journal-entry--layout-text .journal-byline .journal-author,
+.journal-entry--layout-icon .journal-byline .journal-date,
+.journal-entry--layout-text .journal-byline .journal-date,
+.journal-entry--layout-icon .journal-byline .journal-author::before,
+.journal-entry--layout-text .journal-byline .journal-author::before {
+ color: var(--color-text-primary);
+}
+
+
+/* Tags sit centred inside the coloured panel, below the link */
+.journal-entry--layout-image > .tag-pills,
+.journal-entry--layout-icon > .tag-pills,
+.journal-entry--layout-text > .tag-pills {
margin: 0 auto;
- padding: 0 1.75rem 2.2rem;
+ padding: 0 1.75rem 2.6rem;
max-width: var(--container-width);
text-align: center;
}
-.journal-entry--hero > .tag-pills a {
+.journal-entry--layout-image > .tag-pills a {
background: color-mix(in oklab, var(--section-color, var(--accent-soft)) 30%, transparent);
color: var(--color-dark-panel-text);
}
-.journal-entry--hero > .tag-pills a:hover {
+.journal-entry--layout-image > .tag-pills a:hover {
background: color-mix(in oklab, var(--section-color, var(--accent-soft)) 50%, transparent);
}
+.journal-entry--layout-icon > .tag-pills a,
+.journal-entry--layout-text > .tag-pills a {
+ background: color-mix(in oklab, var(--color-text-primary) 12%, transparent);
+ color: var(--color-text-primary);
+}
+.journal-entry--layout-icon > .tag-pills a:hover,
+.journal-entry--layout-text > .tag-pills a:hover {
+ background: color-mix(in oklab, var(--color-text-primary) 22%, transparent);
+}
-/* Non-hero tags — sit just below the body of the card */
-.journal-entry:not(.journal-entry--hero) > .tag-pills {
- margin-top: 0.6rem;
-}
-/* In icon-mode card: tags align with the body (left of the thumbnail) */
-.journal-entry[data-image="icon"]:not(.journal-entry--hero) > .tag-pills {
- margin-top: 0.6rem;
- padding-left: 0;
-}
+.journal-tags { /* extends .tag-pills */ }
.more {
margin-top: var(--spacing-md);
@@ -787,57 +808,49 @@ a:hover {
.single-summary {
font-family: var(--font-family-serif);
font-style: normal;
- font-size: 1.25rem;
+ font-size: 1.4rem;
line-height: 1.4;
color: var(--color-text-primary);
- margin: 0 0 var(--spacing-sm);
+ margin: 0 0 var(--spacing-md); /* breathing room before byline */
max-width: 55ch;
}
.single-byline {
- font-family: var(--font-family-serif);
- font-style: italic;
- font-size: 1rem;
+ font-family: var(--font-family-sans);
+ font-size: 0.95rem;
+ line-height: 1.4;
+ color: var(--color-text-muted);
+ margin: 0 0 0.6rem;
+}
+
+/* Reading time + last-modified — sits just below the byline */
+.single-meta {
+ font-family: var(--font-family-sans);
+ font-size: 0.9rem;
line-height: 1.4;
color: var(--color-text-muted);
margin: 0;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.4rem;
+ align-items: baseline;
}
+.single-meta .reading-time,
+.single-meta .lastmod { font-variant-numeric: tabular-nums; }
.single-byline .byline-author {
color: var(--color-text-primary);
- font-style: normal;
font-weight: 500;
- text-decoration: underline;
- text-decoration-thickness: 1px;
- text-underline-offset: 0.18em;
+ text-decoration: none;
}
.single-byline .byline-author::before {
content: "Von ";
color: var(--color-text-muted);
- font-style: italic;
font-weight: 400;
text-decoration: none;
}
-.single-byline .byline-date { font-style: normal; font-variant-numeric: tabular-nums; }
-.single-byline {
- font-family: var(--font-family-mono);
- font-size: 0.85rem;
- color: var(--color-text-muted);
- margin: 0 0 var(--spacing-xs);
- display: flex;
- flex-wrap: wrap;
- gap: 0.6rem;
- align-items: baseline;
-}
+.single-byline .byline-date { font-variant-numeric: tabular-nums; }
.byline-author { color: var(--color-text-primary); font-weight: 500; }
.byline-date { font-variant-numeric: tabular-nums; }
-.single-summary {
- font-family: var(--font-family-serif);
- font-style: italic;
- font-size: 1.02rem;
- line-height: 1.45;
- margin: var(--spacing-xs) 0 0;
- max-width: 55ch;
-}
.single-content h2 {
font-family: var(--font-family-serif);
font-size: 1.45rem;
@@ -928,8 +941,8 @@ a:hover {
}
.time {
- font-family: var(--font-family-mono);
- font-size: var(--font-size-small);
+ font-family: var(--font-family-sans);
+ font-size: 0.9rem;
color: var(--color-text-muted);
margin-top: var(--spacing-md);
padding-top: var(--spacing-sm);
@@ -938,8 +951,8 @@ a:hover {
.back-nav-wrap {
margin-top: var(--spacing-md);
- font-family: var(--font-family-mono);
- font-size: var(--font-size-small);
+ font-family: var(--font-family-sans);
+ font-size: 0.9rem;
}
.back-link { border: none; color: var(--color-text-muted); }
.back-link:hover { color: var(--accent); }
@@ -951,11 +964,10 @@ a:hover {
margin-top: var(--spacing-lg);
padding-top: var(--spacing-sm);
border-top: 1px solid var(--color-border);
- font-family: var(--font-family-mono);
- font-size: var(--font-size-small);
+ font-family: var(--font-family-sans);
+ font-size: 0.85rem;
color: var(--color-text-muted);
- text-transform: uppercase;
- letter-spacing: 0.03em;
+ letter-spacing: 0.01em;
}
.page-foot-nav ol {
list-style: none;
diff --git a/content/library/buerofuehrung/warum-offen.md b/content/library/buerofuehrung/warum-offen.md
index 066d189..d295d1e 100644
--- a/content/library/buerofuehrung/warum-offen.md
+++ b/content/library/buerofuehrung/warum-offen.md
@@ -4,18 +4,19 @@ date: 2026-05-22
tags: ["büroführung", "praxis", "open-source"]
summary: "Ein offenes Architekturbüro ist nicht karitativ — es ist praktischer, robuster, ehrlicher."
color: sakura
+layout: text
---
-Architektur ist traditionell ein geschlossener Beruf. Wettbewerbe sind nicht-öffentlich, Verträge nicht-verhandelbar, Werkzeuge proprietär. Wissen wird gehortet, weil es als Wettbewerbsvorteil verstanden wird.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
-Wir bezweifeln, dass das stimmt.
+Duis aute irure dolor in reprehenderit.
-**Offen** zu arbeiten heisst hier dreierlei:
+**Lorem ipsum** dolor sit amet:
-1. **Texte und Notizen sind öffentlich.** Wer mitlesen will, kann das.
-2. **Werkzeuge sind frei.** Programme wie DOSSIER und RAPPORT sind quelloffen, andere dürfen sie nutzen, anpassen, weiterbauen.
-3. **Verträge und Honorare sind dokumentiert.** Wir zeigen, wie ein offenes Büro sich finanziert, ohne das gegen sich zu drehen.
+1. **Consectetur adipiscing elit.** Sed do eiusmod tempor incididunt ut labore.
+2. **Ut enim ad minim veniam.** Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+3. **Duis aute irure dolor.** In reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
-Das ist kein karitatives Projekt. Es ist eine Wette darauf, dass **Offenheit produktiver ist als Abschottung** — für die Praxis, für die Kollegen, für die Disziplin.
+Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt — **mollit anim id est laborum** — sed ut perspiciatis unde omnis iste.
-— mehr dazu in den folgenden Notizen.
+— natus error sit voluptatem accusantium.
diff --git a/content/library/software/dossier.md b/content/library/software/dossier.md
index c691db4..52e9e95 100644
--- a/content/library/software/dossier.md
+++ b/content/library/software/dossier.md
@@ -7,10 +7,10 @@ summary: "Projektorganisation für ein Architekturbüro — von der Anfrage zur
external: "https://dossier.gabrielevarano.ch"
color: kori
cover_image: /images/tokyo-metro.jpg
-image_mode: icon
+layout: icon
---
-**DOSSIER** ist die Projektverwaltung von OPENBUREAU.
-Eine Anwendung, die ein Projekt von der ersten Anfrage bis zur Schlussrechnung begleitet — strukturiert, nachvollziehbar, offen.
+**Lorem ipsum dolor sit amet**, consectetur adipiscing elit.
+Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua — ut enim ad minim veniam, quis nostrud exercitation.
→ [dossier.gabrielevarano.ch](https://dossier.gabrielevarano.ch)
diff --git a/content/library/software/eigene-werkzeuge.md b/content/library/software/eigene-werkzeuge.md
index f00c5ed..f1ea5e8 100644
--- a/content/library/software/eigene-werkzeuge.md
+++ b/content/library/software/eigene-werkzeuge.md
@@ -4,13 +4,14 @@ date: 2026-05-21
tags: ["software", "praxis", "tools"]
summary: "DOSSIER und RAPPORT sind keine Lifestyle-Projekte — sie sind Reaktion auf konkrete Lücken."
color: yuyake
+layout: text
---
-Wir benutzen viel fremde Software. Aber an zwei Stellen kam keiner der existierenden Werkzeuge an die Praxis heran, die wir brauchten — also haben wir selbst gebaut.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua — ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
-- **[DOSSIER](https://dossier.gabrielevarano.ch)** organisiert Projekte: von der ersten Anfrage über Vertrag, Planstände, Rechnungen bis zur Übergabe. Strukturiert genug, um nichts zu verlieren; offen genug, um nicht im Weg zu stehen.
-- **[RAPPORT](https://rapport.gabrielevarano.ch)** hält Stunden, Wege und Aufwand fest. Nicht als Überwachung, sondern als Material für die nächste Honoraroffert.
+- **[DOSSIER](https://dossier.gabrielevarano.ch)** — duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia.
+- **[RAPPORT](https://rapport.gabrielevarano.ch)** — sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.
-Beide sind quelloffen. Beide sind im Aufbau. Beide sind so geschrieben, dass ein anderes Büro sie morgen für sich nutzen könnte.
+Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
-Eine vollständige Liste der **anderen** Werkzeuge, die wir empfehlen, findet sich unter [Werkzeuge](/library/werkzeuge).
+Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet — [Werkzeuge](/library/werkzeuge).
diff --git a/content/library/software/rapport.md b/content/library/software/rapport.md
index ec2fe3a..669beaf 100644
--- a/content/library/software/rapport.md
+++ b/content/library/software/rapport.md
@@ -6,9 +6,10 @@ tags: ["software", "eigene-werkzeuge"]
summary: "Zeit- und Aufwandserfassung für ein Architekturbüro."
external: "https://rapport.gabrielevarano.ch"
color: kusa
+layout: text
---
-**RAPPORT** erfasst Stunden, Wege und Aufwand.
-Material für transparente Honorarofferten, nicht für Überwachung.
+**Lorem ipsum dolor sit amet**, consectetur adipiscing elit.
+Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
→ [rapport.gabrielevarano.ch](https://rapport.gabrielevarano.ch)
diff --git a/content/library/software/stack.md b/content/library/software/stack.md
index 8c69298..4528167 100644
--- a/content/library/software/stack.md
+++ b/content/library/software/stack.md
@@ -5,29 +5,30 @@ weight: 30
tags: ["software", "stack", "empfehlungen"]
summary: "Programme und Dienste, die wir Tag für Tag benutzen — kuratiert und kommentiert."
cover_image: /images/tokyo-metro.jpg
+layout: image
---
-Diese Liste wächst. Sie ist kein Inventar, sondern eine **Position**: jedes Werkzeug steht für eine Entscheidung über die Arbeitsweise des Büros.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore — **lorem ipsum**: ut enim ad minim veniam, quis nostrud exercitation ullamco.
-## Zeichnen & Modellieren
+## Lorem Ipsum I
-- **Rhino + Grasshopper** — das Rückgrat des geometrischen Arbeitens. Wir entwickeln eigene Plugins ([Rhino-Panel](https://gitea.kgva.ch)).
-- **Blender** — für freie 3D-Arbeiten, Visualisierungen, Animation.
+- **Lorem ipsum** — dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor ([lorem ipsum](https://gitea.kgva.ch)).
+- **Dolor sit** — ut labore et dolore magna aliqua, ut enim ad minim veniam.
-## Schreiben & Dokumentieren
+## Lorem Ipsum II
-- **Markdown + Hugo** — alle Texte, auch diese hier, sind `.md` und werden statisch generiert.
-- **Zotero** — Literatur und Quellen.
+- **Consectetur** — quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.
+- **Adipiscing** — duis aute irure dolor in reprehenderit.
-## Koordination
+## Lorem Ipsum III
-- **Gitea** (selbst-gehostet) — Code, Texte, Repositories.
-- **Flarum** (selbst-gehostet) — Diskussion und Gespräch.
-- **Nextcloud** (selbst-gehostet) — Dateien, Kalender, Kontakte.
+- **Eiusmod tempor** (lorem ipsum) — incididunt ut labore et dolore magna.
+- **Ut enim ad minim** (lorem ipsum) — veniam, quis nostrud exercitation.
+- **Quis nostrud** (lorem ipsum) — ullamco laboris nisi ut aliquip.
-## Eigene Werkzeuge
+## Lorem Ipsum IV
-- **[DOSSIER](/library/software/dossier/)** — Projektverwaltung.
-- **[RAPPORT](/library/software/rapport/)** — Stundenerfassung.
+- **[DOSSIER](/library/software/dossier/)** — lorem ipsum.
+- **[RAPPORT](/library/software/rapport/)** — dolor sit amet.
-— diese Seite wird laufend erweitert.
+— sed ut perspiciatis unde omnis iste natus error sit voluptatem.
diff --git a/content/library/theorie/typologie-als-werkzeug.md b/content/library/theorie/typologie-als-werkzeug.md
index c65d725..8cac7cf 100644
--- a/content/library/theorie/typologie-als-werkzeug.md
+++ b/content/library/theorie/typologie-als-werkzeug.md
@@ -4,12 +4,13 @@ date: 2026-05-20
tags: ["theorie", "typologie", "methode"]
summary: "Erste Notiz über Typologie nicht als Katalog, sondern als operatives Werkzeug im Entwurf."
color: ajisai
+layout: text
---
-Typologie wird oft als Inhaltsverzeichnis missverstanden: eine Liste von Grundrissen, sortiert nach Funktion. Diese Lesart ist bequem und falsch.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit: sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.
-Eine Typologie ist ein **Denkwerkzeug**. Sie macht das Wiederkehrende sichtbar und damit das Besondere argumentierbar. Erst wenn wir das Übliche kennen, können wir das Eigentümliche begründen.
+Ullamco laboris nisi ut **aliquip ex ea commodo consequat**. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
-Im Entwurf bedeutet das: nicht "welcher Typ ist das?", sondern "**gegen welchen Typ** entwerfen wir hier?".
+Excepteur sint occaecat: nicht "cupidatat non proident?", sondern "**sunt in culpa** qui officia deserunt mollit?".
-— ein erster Notiz, weitere folgen.
+— sed ut perspiciatis, weitere folgen.
diff --git a/hugo.yaml b/hugo.yaml
index 1ab8519..ea72ef5 100644
--- a/hugo.yaml
+++ b/hugo.yaml
@@ -4,7 +4,7 @@ title: "OPENBUREAU"
theme: "openbureau"
enableRobotsTXT: true
-enableGitInfo: false
+enableGitInfo: true
hasCJKLanguage: false
defaultContentLanguage: de
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 564f5c2..397a7f4 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -9,7 +9,9 @@
Skip to content
- OPENBUREAU
+
+ OPENBUREAU
+
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index d1f17fc..48e8ca2 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -23,6 +23,17 @@
{{- if .Date -}}{{- end -}}
{{ end }}
+
+ {{/* Reading time + last-modified — Republik-style, directly below byline */}}
+ {{ $showReadingTime := .Params.showreadingtime | default site.Params.showreadingtime | default true }}
+ {{ $showLastMod := .Params.showlastmod | default site.Params.showlastmod | default false }}
+ {{ $hasLastmod := and $showLastMod .Lastmod (ne (.Lastmod.Format "2006-01-02") (.Date.Format "2006-01-02")) }}
+ {{ if or (and $showReadingTime .ReadingTime) $hasLastmod }}
+
+ {{ if and $showReadingTime .ReadingTime }}{{ .ReadingTime }} min Lesezeit{{ end }}
+ {{ if $hasLastmod }}{{ if and $showReadingTime .ReadingTime }} · {{ end }}Aktualisiert am {{ .Lastmod.Format "02.01.2006" }}{{ end }}
+
+ {{ end }}
{{/* Table of Contents */}}
@@ -45,16 +56,6 @@
{{- range . -}}
- {{ if and $showReadingTime .ReadingTime }}{{ .ReadingTime }} min Lesezeit{{ end }}
- {{ if $hasLastmod }}{{ if and $showReadingTime .ReadingTime }} · {{ end }}Zuletzt aktualisiert: {{ .Lastmod.Format "02.01.2006" }}{{ end }}
-