<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Doku · Vellum</title><link>https://pages.stkn.org/felix/vellum/de/docs/</link><description>Die Seiten, die die README nicht sein kann: das Theme vorgeführt statt tabelliert.</description><generator>Hugo</generator><language>de</language><copyright>&#169; 2026 Your Name</copyright><lastBuildDate>Thu, 09 Jul 2026 15:20:00 +0200</lastBuildDate><atom:link href="https://pages.stkn.org/felix/vellum/de/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Der Icon-Satz</title><link>https://pages.stkn.org/felix/vellum/de/docs/icons/</link><pubDate>Thu, 02 Jul 2026 10:00:00 +0200</pubDate><guid>https://pages.stkn.org/felix/vellum/de/docs/icons/</guid><description>Jedes Zeichen, das das Theme zeichnen kann — gezeichnet, weil eine Namensliste keine Strichstärke zeigt.</description><content:encoded><![CDATA[<p>Die README führt sie als Namen auf. Das ist die richtige Form für das, was man in <code>socialIcons</code>
kopiert, und die falsche, um zu entscheiden, ob sie zur eigenen Seite passen. Ein Name sagt nichts
über Strichstärke, optische Größe oder darüber, wie eine Reihe davon zusammensitzt. Also hier,
gerendert durch dasselbe <code>icon.html</code>, das auch Kopfzeile und Share-Zeile aufrufen.</p>
<h2 id="ui-zeichen" class="heading">UI-Zeichen
    <a class="heading__anchor" href="#ui-zeichen" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p>Auf einem 24×24-Raster mit 1,75er Strich gezeichnet, runde Enden, keine Füllung — durchgehend eine
Hand. Unten bei 28px gezeichnet, damit der Strich als Strich lesbar ist.</p>
<ul class="icon-sheet" role="list">
    <li class="icon-sheet__item">
        
<svg class="icon icon--arrow-up" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M12 19V5M6 11l6-6 6 6"/>
</svg>

        <code class="icon-sheet__name">arrow-up</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--arrow-right" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 12h14M13 6l6 6-6 6"/>
</svg>

        <code class="icon-sheet__name">arrow-right</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--arrow-left" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M19 12H5M11 18l-6-6 6-6"/>
</svg>

        <code class="icon-sheet__name">arrow-left</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--external" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M14 4h6v6M20 4l-8.5 8.5"/>
    <path d="M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5"/>
</svg>

        <code class="icon-sheet__name">external</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>

        <code class="icon-sheet__name">hash</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--search" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <circle cx="10.5" cy="10.5" r="6.5"/>
    <path d="m15.2 15.2 4.8 4.8"/>
</svg>

        <code class="icon-sheet__name">search</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--pencil" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M4 20h4L20 8a2.8 2.8 0 0 0-4-4L4 16z"/>
    <path d="m15 5 4 4"/>
</svg>

        <code class="icon-sheet__name">pencil</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--chevron-right" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="m9 5 7 7-7 7"/>
</svg>

        <code class="icon-sheet__name">chevron-right</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--check" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="m4 12.5 5.5 5.5L20 6"/>
</svg>

        <code class="icon-sheet__name">check</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--moon" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M21 13.2A9 9 0 1 1 10.8 3a7 7 0 0 0 10.2 10.2z"/>
</svg>

        <code class="icon-sheet__name">moon</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--sun" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <circle cx="12" cy="12" r="4.2"/>
    <path d="M12 2v2.2M12 19.8V22M4.2 4.2l1.6 1.6M18.2 18.2l1.6 1.6M2 12h2.2M19.8 12H22M4.2 19.8l1.6-1.6M18.2 5.8l1.6-1.6"/>
</svg>

        <code class="icon-sheet__name">sun</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--rss" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <circle cx="5.5" cy="18.5" r="1.6" fill="currentColor" stroke="none"/>
    <path d="M4 11.2a8.8 8.8 0 0 1 8.8 8.8M4 4.5A15.5 15.5 0 0 1 19.5 20"/>
</svg>

        <code class="icon-sheet__name">rss</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--email" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <rect x="2.5" y="5" width="19" height="14" rx="2"/>
    <path d="m3 7 9 6 9-6"/>
</svg>

        <code class="icon-sheet__name">email</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--ai" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M12 2.5 16.5 11 12 14.5 7.5 11Z"/>
    <path d="M12 14.5V17"/>
    <path d="M2.5 20.5h5.5M11.5 20.5h1.5M16.5 20.5h5"/>
</svg>

        <code class="icon-sheet__name">ai</code>
    </li>
</ul>

<p>Das <code>ai</code>-Zeichen ist das ungewöhnliche und das begründete: eine Reißfeder über einer geplotteten
Linie, die Linie gestrichelt, weil eine Maschine sie gezogen hat. Es ist kein Funkeln. Ein Funkeln
sagt <em>Magie</em>; dieses Zeichen muss <em>Werkzeug</em> sagen — und es ist dasselbe Zeichen in beiden Körnungen:
neben dem Titel gestempelt für ein ganzes Blatt, auf der Änderungsfahne geflaggt für eine einzelne
Passage.</p>
<h2 id="markenzeichen" class="heading">Markenzeichen
    <a class="heading__anchor" href="#markenzeichen" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p>Das sind offizielle Logotypen von 
<a href="https://simpleicons.org" class="link-external" rel="noopener noreferrer" target="_blank">Simple Icons
<svg class="icon icon--external" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M14 4h6v6M20 4l-8.5 8.5"/>
    <path d="M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5"/>
</svg>
</a>
 (CC0), also gefüllte Formen
statt Striche. Sie lassen sich nicht auf das 24×24-Strichraster umzeichnen, ohne jemandes Marke
falsch wiederzugeben — deshalb schalten sie den Strich ab und bringen ihre eigene Füllung mit.</p>
<ul class="icon-sheet" role="list">
    <li class="icon-sheet__item">
        
<svg class="icon icon--github" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/>
</svg>

        <code class="icon-sheet__name">github</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--gitlab" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="m23.6004 9.5927-.0337-.0862L20.3.9814a.851.851 0 0 0-.3362-.405.8748.8748 0 0 0-.9997.0539.8748.8748 0 0 0-.29.4399l-2.2055 6.748H7.5375l-2.2057-6.748a.8573.8573 0 0 0-.29-.4412.8748.8748 0 0 0-.9997-.0537.8585.8585 0 0 0-.3362.4049L.4332 9.5015l-.0325.0862a6.0657 6.0657 0 0 0 2.0119 7.0105l.0113.0087.03.0213 4.976 3.7264 2.462 1.8633 1.4995 1.1321a1.0085 1.0085 0 0 0 1.2197 0l1.4995-1.1321 2.4619-1.8633 5.006-3.7489.0125-.01a6.0682 6.0682 0 0 0 2.0094-7.003z"/>
</svg>

        <code class="icon-sheet__name">gitlab</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--codeberg" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M11.999.747A11.974 11.974 0 0 0 0 12.75c0 2.254.635 4.465 1.833 6.376L11.837 6.19c.072-.092.251-.092.323 0l4.178 5.402h-2.992l.065.239h3.113l.882 1.138h-3.674l.103.374h3.86l.777 1.003h-4.358l.135.483h4.593l.695.894h-5.038l.165.589h5.326l.609.785h-5.717l.182.65h6.038l.562.727h-6.397l.183.65h6.717A12.003 12.003 0 0 0 24 12.75 11.977 11.977 0 0 0 11.999.747zm3.654 19.104.182.65h5.326c.173-.204.353-.433.513-.65zm.385 1.377.18.65h3.563c.233-.198.485-.428.712-.65zm.383 1.377.182.648h1.203c.356-.204.685-.412 1.042-.648z"/>
</svg>

        <code class="icon-sheet__name">codeberg</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--stackoverflow" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M15.725 0l-1.72 1.277 6.39 8.588 1.716-1.277L15.725 0zm-3.94 3.418l-1.369 1.644 8.225 6.85 1.369-1.644-8.225-6.85zm-3.15 4.465l-.905 1.94 9.702 4.517.904-1.94-9.701-4.517zm-1.85 4.86l-.44 2.093 10.473 2.201.44-2.092-10.473-2.203zM1.89 15.47V24h19.19v-8.53h-2.133v6.397H4.021v-6.396H1.89zm4.265 2.133v2.13h10.66v-2.13H6.154Z"/>
</svg>

        <code class="icon-sheet__name">stackoverflow</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--mastodon" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z"/>
</svg>

        <code class="icon-sheet__name">mastodon</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--bluesky" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037-.856 3.061-3.978 3.842-6.755 3.37 4.854.826 6.089 3.562 3.422 6.299-5.065 5.196-7.28-1.304-7.847-2.97-.104-.305-.152-.448-.153-.327 0-.121-.05.022-.153.327-.568 1.666-2.782 8.166-7.847 2.97-2.667-2.737-1.432-5.473 3.422-6.3-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026"/>
</svg>

        <code class="icon-sheet__name">bluesky</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--x" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z"/>
</svg>

        <code class="icon-sheet__name">x</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--linkedin" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>

        <code class="icon-sheet__name">linkedin</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--reddit" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M12 0C5.373 0 0 5.373 0 12c0 3.314 1.343 6.314 3.515 8.485l-2.286 2.286C.775 23.225 1.097 24 1.738 24H12c6.627 0 12-5.373 12-12S18.627 0 12 0Zm4.388 3.199c1.104 0 1.999.895 1.999 1.999 0 1.105-.895 2-1.999 2-.946 0-1.739-.657-1.947-1.539v.002c-1.147.162-2.032 1.15-2.032 2.341v.007c1.776.067 3.4.567 4.686 1.363.473-.363 1.064-.58 1.707-.58 1.547 0 2.802 1.254 2.802 2.802 0 1.117-.655 2.081-1.601 2.531-.088 3.256-3.637 5.876-7.997 5.876-4.361 0-7.905-2.617-7.998-5.87-.954-.447-1.614-1.415-1.614-2.538 0-1.548 1.255-2.802 2.803-2.802.645 0 1.239.218 1.712.585 1.275-.79 2.881-1.291 4.64-1.365v-.01c0-1.663 1.263-3.034 2.88-3.207.188-.911.993-1.595 1.959-1.595Zm-8.085 8.376c-.784 0-1.459.78-1.506 1.797-.047 1.016.64 1.429 1.426 1.429.786 0 1.371-.369 1.418-1.385.047-1.017-.553-1.841-1.338-1.841Zm7.406 0c-.786 0-1.385.824-1.338 1.841.047 1.017.634 1.385 1.418 1.385.785 0 1.473-.413 1.426-1.429-.046-1.017-.721-1.797-1.506-1.797Zm-3.703 4.013c-.974 0-1.907.048-2.77.135-.147.015-.241.168-.183.305.483 1.154 1.622 1.964 2.953 1.964 1.33 0 2.47-.81 2.953-1.964.057-.137-.037-.29-.184-.305-.863-.087-1.795-.135-2.769-.135Z"/>
</svg>

        <code class="icon-sheet__name">reddit</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--ycombinator" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/>
</svg>

        <code class="icon-sheet__name">ycombinator</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--telegram" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/>
</svg>

        <code class="icon-sheet__name">telegram</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--whatsapp" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/>
</svg>

        <code class="icon-sheet__name">whatsapp</code>
    </li>
</ul>

<p>Eines davon hat einen zweiten Namen. <code>ycombinator</code> schreibt eine Seite in <code>socialIcons</code>,
<code>hackernews</code> ist der Schlüssel, den die Share-Zeile für das Submit-Ziel verwendet. Beide lösen zum
selben Logotyp auf:</p>
<ul class="icon-sheet" role="list">
    <li class="icon-sheet__item">
        
<svg class="icon icon--ycombinator" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/>
</svg>

        <code class="icon-sheet__name">ycombinator</code>
    </li>
    <li class="icon-sheet__item">
        
<svg class="icon icon--hackernews" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path fill="currentColor" stroke="none" d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/>
</svg>

        <code class="icon-sheet__name">hackernews</code>
    </li>
</ul>

<h2 id="was-ein-unbekannter-name-tut" class="heading">Was ein unbekannter Name tut
    <a class="heading__anchor" href="#was-ein-unbekannter-name-tut" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p>Nichts stillschweigend. Ein Name ohne Zweig fällt auf ein allgemeines Link-Zeichen durch, damit ein
Tippfehler auf der Seite auftaucht, statt ein Loch zu hinterlassen, wo ein Icon sein sollte:</p>
<ul class="icon-sheet" role="list">
    <li class="icon-sheet__item">
        
<svg class="icon icon--kein-icon" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M10.5 13.5a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1.7 1.7"/>
    <path d="M13.5 10.5a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1.7-1.7"/>
</svg>

        <code class="icon-sheet__name">kein-icon</code>
    </li>
</ul>

<p>Das ist der ganze Fehlerfall, und er ist der Grund, warum diese Seite ein gerendertes Blatt ist und
keine Liste: Jeder Name oben wird hier wirklich gezeichnet, also wird einer, der nicht mehr auflöst,
offen sichtbar zu genau diesem Link-Zeichen.</p>
<p>Für eigene Zeichen <code>_partials/icon.html</code> um einen weiteren Zweig erweitern und beim 24×24-Raster
bleiben.</p>
]]></content:encoded><category>referenz</category></item><item><title>Die Startseite, zweimal</title><link>https://pages.stkn.org/felix/vellum/de/docs/the-landing-page/</link><pubDate>Thu, 09 Jul 2026 15:20:00 +0200</pubDate><guid>https://pages.stkn.org/felix/vellum/de/docs/the-landing-page/</guid><description>Fünf Ansichten über ein Profil und zwei Präsentationen über dieselben Params — beide laufen in dieser Demo.</description><content:encoded><![CDATA[<p>Die Startseite ist der Teil dieses Themes, den die README mit den meisten Worten beschreiben muss und
am wenigsten zeigen kann. Für die genauen Schlüssel lohnt sich dort das Nachlesen; diese Seite ist für
das, was eine Tabelle nicht transportiert: wie sich die beiden Präsentationen nebeneinander anfühlen.</p>
<h2 id="ein-profil-bis-zu-fünf-ansichten" class="heading">Ein Profil, bis zu fünf Ansichten
    <a class="heading__anchor" href="#ein-profil-bis-zu-f%c3%bcnf-ansichten" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p>Unter dem Profilblock kann eine Startseite <strong>about</strong>, <strong>skills</strong>, <strong>record</strong>, <strong>projects</strong> und
<strong>contact</strong> tragen. Jede rendert nur, wenn ihr eigener Schlüssel gesetzt ist, es gibt also nichts
abzuschalten. Setzt man keine, hat man das schlichte Profil, mit dem das Theme angefangen hat.</p>
<p>Diese Demo setzt auf Englisch alle fünf und lässt <code>projects</code> auf Deutsch bewusst weg. Das ist kein
Versehen, das behoben gehört. Ein Zweig, den nichts baut, ist ein Zweig, den nichts prüft: der Pfad
„Ansicht fehlt&quot; brauchte also eine Seite, die wirklich eine weglässt, und die deutsche Startseite ist
sie.</p>
<p>Zwei Dinge am Index, die man leicht übersieht:</p>
<ul>
<li><strong>Bei weniger als zwei Ansichten wird kein Index gezeichnet.</strong> Die einzelne Ansicht steht dann
einfach offen. Ein Index mit einem Eintrag ist ein Bedienelement, das nichts bedienen kann.</li>
<li><strong>Er braucht kein JavaScript.</strong> Ohne es stehen alle Ansichten gleichzeitig offen und die
Index-Einträge sind einfache Ankerlinks dorthin. Mit ihm wird eine Ansicht zur Zeit gezeigt, und
<code>/#profile-view-skills</code> öffnet direkt diese. Nichts liegt hinter dem Skript, was nicht auch ohne es
erreichbar wäre.</li>
</ul>
<h2 id="dieselben-params-zweimal-gezeichnet" class="heading">Dieselben Params, zweimal gezeichnet
    <a class="heading__anchor" href="#dieselben-params-zweimal-gezeichnet" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p><code>view = &quot;terminal&quot;</code> tauscht den gezeichneten Index gegen eine funktionierende Shell im macOS-Stil.
Dieselben Schlüssel, derselbe Inhalt, nichts zu migrieren. Zeile löschen und man ist zurück. Diese
Demo betreibt von jedem eines, sodass man sie nebeneinanderlegen kann:</p>
<ul>
<li>
<a href="/felix/vellum/de/"><strong>Die Startseite dieser Sprache</strong></a>
 — als Shell.</li>
<li>
<a href="/felix/vellum/en/"><strong>Die englische Startseite</strong></a>
 — dasselbe Theme, dieselben fünf
Schlüssel, als gezeichneter Index.</li>
</ul>
<p>Und zwar wirklich benutzen. Die Shell ist kein Bild einer Shell: Befehle werden getippt, die
Pfeiltasten laufen durch die Historie, Tab vervollständigt, <code>Strg+C</code> und <code>Strg+L</code> tun, was sie tun,
und <code>&lt;befehl&gt; --json</code> gibt die Rohdaten statt der Tabelle aus. Jeder Befehl in <code>help</code> ist auch ein
Knopf, damit ein Telefon ohne Tastatur an alles herankommt, und die drei Fensterknöpfe funktionieren:
Schließen klappt das Fenster auf eine Zeile zusammen, Minimieren auf seine Titelleiste, Zoomen wächst
es von 24 auf 40 Zeilen.</p>
<p>Die Ausgabe kommt zeichenweise statt zu erscheinen, und ein angeklickter Befehl wird in den Prompt
getippt. Jeder Tastendruck beendet sofort, was noch aussteht, sodass niemand hinter dem Effekt
zurückgehalten wird, und <code>prefers-reduced-motion: reduce</code> schaltet das Ganze ab.</p>
<p>Schaltet man JavaScript aus, zeigt das Fenster die bereits gelaufene Sitzung: jeden Befehl und seine
Ausgabe, der Reihe nach. Nichts geht verloren und nichts gibt vor, interaktiv zu sein. Genau dieses
Transkript ist auch das, was gedruckt wird, ohne das Fenster darum herum.</p>

<div class="alert alert--note" role="note">
    <p class="alert__label">Hinweis</p>
    <div class="alert__body"><p>Das Fenster fährt nicht Terminals weißes „Basic&quot;-Profil. Es fährt eines, das zum Theme passt, auf
derselben abgesenkten Fläche und mit denselben Syntaxfarben, die jeder Codeblock dieser Seite schon
benutzt, es sitzt also auf der Seite statt obenauf.</p></div>
</div>
<h2 id="was-die-wahl-kostet" class="heading">Was die Wahl kostet
    <a class="heading__anchor" href="#was-die-wahl-kostet" tabindex="-1" aria-hidden="true"
        title="Link zu diesem Abschnitt">
<svg class="icon icon--hash" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
    <path d="M5 9h14M5 15h14M10 3.5 8 20.5M16 3.5l-2 17"/>
</svg>
</a>
</h2>
<p>Fast nichts, und in einer Richtung weniger als nichts: <code>35-terminal.css</code> fällt vollständig aus dem
Stylesheet, solange eine Seite das Terminal nicht anfordert. Es ist die einzige Funktion des Themes,
die standardmäßig aus ist, und damit das einzige Stylesheet, das eine Seite sonst für Markup
ausliefern könnte, das auf keiner ihrer Seiten je vorkommt.</p>
<p>Diese Demo ist der Fall, der das belegt. Weil die Ansicht pro Sprache gesetzt ist, bauen Englisch und
Deutsch <em>unterschiedliche</em> Stylesheets — eines mit den Terminal-Regeln, eines ohne. Quelltext auf
einer der beiden Startseiten ansehen und den Dateinamen im <code>&lt;link&gt;</code> vergleichen.</p>
]]></content:encoded><category>referenz</category><category>layout</category></item></channel></rss>