<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://csswitch.github.io/jekyll-blueprint-theme/feed.xml" rel="self" type="application/atom+xml" /><link href="https://csswitch.github.io/jekyll-blueprint-theme/" rel="alternate" type="text/html" /><updated>2026-05-12T20:27:46+00:00</updated><id>https://csswitch.github.io/jekyll-blueprint-theme/feed.xml</id><title type="html">Blueprint Docs</title><subtitle>Technical documentation and engineering notes</subtitle><author><name>Engineer One</name><email>engineer@example.com</email></author><entry><title type="html">CSS Grid Backgrounds — No Images Required</title><link href="https://csswitch.github.io/jekyll-blueprint-theme/2024/01/22/css-grid-backgrounds/" rel="alternate" type="text/html" title="CSS Grid Backgrounds — No Images Required" /><published>2024-01-22T00:00:00+00:00</published><updated>2024-01-22T00:00:00+00:00</updated><id>https://csswitch.github.io/jekyll-blueprint-theme/2024/01/22/css-grid-backgrounds</id><content type="html" xml:base="https://csswitch.github.io/jekyll-blueprint-theme/2024/01/22/css-grid-backgrounds/"><![CDATA[<p>The Blueprint Theme grid background uses zero images — just nested <code class="language-plaintext highlighter-rouge">repeating-linear-gradient</code> layers. Here’s exactly how it works.</p>

<h2 id="the-four-layer-technique">The Four-Layer Technique</h2>

<p>A real engineering grid has two scales: fine (small squares) and major (large squares, every 5 fine squares). We replicate this with four gradient layers:</p>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">.bp-grid</span> <span class="p">{</span>
  <span class="nl">background-image</span><span class="p">:</span>
    <span class="c">/* Fine horizontal lines */</span>
    <span class="n">linear-gradient</span><span class="p">(</span><span class="n">rgba</span><span class="p">(</span><span class="m">26</span><span class="p">,</span><span class="m">74</span><span class="p">,</span><span class="m">138</span><span class="p">,</span> <span class="m">0.35</span><span class="p">)</span> <span class="m">1px</span><span class="p">,</span> <span class="nb">transparent</span> <span class="m">1px</span><span class="p">),</span>
    <span class="c">/* Fine vertical lines */</span>
    <span class="n">linear-gradient</span><span class="p">(</span><span class="m">90deg</span><span class="p">,</span> <span class="n">rgba</span><span class="p">(</span><span class="m">26</span><span class="p">,</span><span class="m">74</span><span class="p">,</span><span class="m">138</span><span class="p">,</span> <span class="m">0.35</span><span class="p">)</span> <span class="m">1px</span><span class="p">,</span> <span class="nb">transparent</span> <span class="m">1px</span><span class="p">),</span>
    <span class="c">/* Major horizontal lines (every 5 cells) */</span>
    <span class="n">linear-gradient</span><span class="p">(</span><span class="n">rgba</span><span class="p">(</span><span class="m">26</span><span class="p">,</span><span class="m">74</span><span class="p">,</span><span class="m">138</span><span class="p">,</span> <span class="m">0.6</span><span class="p">)</span> <span class="m">1px</span><span class="p">,</span> <span class="nb">transparent</span> <span class="m">1px</span><span class="p">),</span>
    <span class="c">/* Major vertical lines */</span>
    <span class="n">linear-gradient</span><span class="p">(</span><span class="m">90deg</span><span class="p">,</span> <span class="n">rgba</span><span class="p">(</span><span class="m">26</span><span class="p">,</span><span class="m">74</span><span class="p">,</span><span class="m">138</span><span class="p">,</span> <span class="m">0.6</span><span class="p">)</span> <span class="m">1px</span><span class="p">,</span> <span class="nb">transparent</span> <span class="m">1px</span><span class="p">);</span>

  <span class="nl">background-size</span><span class="p">:</span>
    <span class="m">20px</span> <span class="m">20px</span><span class="p">,</span>   <span class="c">/* fine grid */</span>
    <span class="m">20px</span> <span class="m">20px</span><span class="p">,</span>
    <span class="m">100px</span> <span class="m">100px</span><span class="p">,</span> <span class="c">/* major grid = 5 × fine */</span>
    <span class="m">100px</span> <span class="m">100px</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The major grid lines are 0.6 opacity vs 0.35 for fine — matching the thick/thin line convention in ISO 128.</p>

<h2 id="why-linear-gradient-instead-of-repeating-linear-gradient">Why <code class="language-plaintext highlighter-rouge">linear-gradient</code> Instead of <code class="language-plaintext highlighter-rouge">repeating-linear-gradient</code>?</h2>

<p><code class="language-plaintext highlighter-rouge">linear-gradient</code> with <code class="language-plaintext highlighter-rouge">background-size</code> is actually more reliable for grids:</p>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">/* This gives 1px line at top of each 20px tile: */</span>
<span class="nt">background-image</span><span class="o">:</span> <span class="nt">linear-gradient</span><span class="o">(</span><span class="nf">#color</span> <span class="err">1</span><span class="nt">px</span><span class="o">,</span> <span class="nt">transparent</span> <span class="err">1</span><span class="nt">px</span><span class="o">);</span>
<span class="nt">background-size</span><span class="o">:</span> <span class="err">20</span><span class="nt">px</span> <span class="err">20</span><span class="nt">px</span><span class="o">;</span>
</code></pre></div></div>

<p>vs</p>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">/* repeating-linear-gradient is equivalent but less explicit: */</span>
<span class="nt">background-image</span><span class="o">:</span> <span class="nt">repeating-linear-gradient</span><span class="o">(</span>
  <span class="err">0</span><span class="nt">deg</span><span class="o">,</span> <span class="nf">#color</span> <span class="err">0</span><span class="nt">px</span><span class="o">,</span> <span class="nf">#color</span> <span class="err">1</span><span class="nt">px</span><span class="o">,</span> <span class="nt">transparent</span> <span class="err">1</span><span class="nt">px</span><span class="o">,</span> <span class="nt">transparent</span> <span class="err">20</span><span class="nt">px</span>
<span class="o">);</span>
</code></pre></div></div>

<p>Both work — the <code class="language-plaintext highlighter-rouge">background-size</code> approach is cleaner.</p>

<h2 id="fold-marks-with-pure-css">Fold Marks with Pure CSS</h2>

<p>Engineering drawings have small L-shaped marks at fold lines. We simulate these with pseudo-elements:</p>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">.card</span> <span class="p">{</span>
  <span class="nl">position</span><span class="p">:</span> <span class="nb">relative</span><span class="p">;</span>

  <span class="c">/* Top-left fold mark */</span>
  <span class="err">&amp;::before</span> <span class="err">{</span>
    <span class="nl">content</span><span class="p">:</span> <span class="s2">''</span><span class="p">;</span>
    <span class="nl">position</span><span class="p">:</span> <span class="nb">absolute</span><span class="p">;</span>
    <span class="nl">top</span><span class="p">:</span> <span class="m">-1px</span><span class="p">;</span> <span class="nl">left</span><span class="p">:</span> <span class="m">-1px</span><span class="p">;</span>
    <span class="nl">width</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span> <span class="nl">height</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
    <span class="nl">border-top</span><span class="p">:</span> <span class="m">2px</span> <span class="nb">solid</span> <span class="m">#4fc3f7</span><span class="p">;</span>
    <span class="nl">border-left</span><span class="p">:</span> <span class="m">2px</span> <span class="nb">solid</span> <span class="m">#4fc3f7</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="c">/* Bottom-right fold mark */</span>
  <span class="o">&amp;</span><span class="nd">::after</span> <span class="p">{</span>
    <span class="nl">content</span><span class="p">:</span> <span class="s2">''</span><span class="p">;</span>
    <span class="nl">position</span><span class="p">:</span> <span class="nb">absolute</span><span class="p">;</span>
    <span class="nl">bottom</span><span class="p">:</span> <span class="m">-1px</span><span class="p">;</span> <span class="nl">right</span><span class="p">:</span> <span class="m">-1px</span><span class="p">;</span>
    <span class="nl">width</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span> <span class="nl">height</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
    <span class="nl">border-bottom</span><span class="p">:</span> <span class="m">2px</span> <span class="nb">solid</span> <span class="m">#4fc3f7</span><span class="p">;</span>
    <span class="nl">border-right</span><span class="p">:</span> <span class="m">2px</span> <span class="nb">solid</span> <span class="m">#4fc3f7</span><span class="p">;</span>
  <span class="p">}</span>
<span class="err">}</span>
</code></pre></div></div>

<p>On hover, we change the border-color to the full accent — the fold marks “activate” and frame the card.</p>

<h2 id="the-annotation-color">The Annotation Color</h2>

<p>Orange (<code class="language-plaintext highlighter-rouge">#ff9800</code>) is the “red pencil” color in technical drawing — used for handwritten revision notes, NOT for the printed content. We use it sparingly for section markers (<code class="language-plaintext highlighter-rouge">§</code>), callout headings (<code class="language-plaintext highlighter-rouge">NOTE:</code>), and heading anchor links — things that feel annotated rather than designed.</p>

<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">.section-title</span><span class="nd">::before</span> <span class="p">{</span>
  <span class="nl">content</span><span class="p">:</span> <span class="s2">'§'</span><span class="p">;</span>
  <span class="nl">color</span><span class="p">:</span> <span class="m">#ff9800</span><span class="p">;</span> <span class="c">/* annotation orange */</span>
<span class="p">}</span>
</code></pre></div></div>

<p>This creates a visual hierarchy where the orange elements feel like someone marked them up after the fact.</p>]]></content><author><name>Engineer One</name><email>engineer@example.com</email></author><category term="css" /><category term="design" /><category term="tutorial" /><category term="grid" /><summary type="html"><![CDATA[How to build ISO-standard technical drawing grids entirely in CSS using repeating-linear-gradient and background-size.]]></summary></entry><entry><title type="html">Welcome to Blueprint Theme — Technical Jekyll</title><link href="https://csswitch.github.io/jekyll-blueprint-theme/2024/01/15/welcome-to-blueprint-theme/" rel="alternate" type="text/html" title="Welcome to Blueprint Theme — Technical Jekyll" /><published>2024-01-15T00:00:00+00:00</published><updated>2024-01-15T00:00:00+00:00</updated><id>https://csswitch.github.io/jekyll-blueprint-theme/2024/01/15/welcome-to-blueprint-theme</id><content type="html" xml:base="https://csswitch.github.io/jekyll-blueprint-theme/2024/01/15/welcome-to-blueprint-theme/"><![CDATA[<p>Welcome to <strong>Blueprint Theme</strong> — a Jekyll site that looks like it was designed by an engineer on a Monday morning.</p>

<h2 id="the-design-language">The Design Language</h2>

<p>Blueprint’s aesthetic is lifted directly from ISO technical drawings:</p>

<ul>
  <li>The <strong>grid background</strong> is a real dual-scale engineering grid — fine lines every 20px, major lines every 100px</li>
  <li>Every card has <strong>fold marks</strong> in two corners — the tiny angular brackets used to mark folding lines on A3 drawings</li>
  <li><strong>Orange annotations</strong> are the “red pencil” callouts used by draftspeople to mark revisions</li>
  <li>The footer is a <strong>revision block</strong> — the title/author/date table found in the bottom-right corner of every engineering drawing</li>
  <li>Titles use <strong>Share Tech Mono</strong> — a monospaced font that mimics early pen plotter output</li>
</ul>

<h2 id="quick-configuration">Quick Configuration</h2>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">blueprint</span><span class="pi">:</span>
  <span class="na">grid</span><span class="pi">:</span> <span class="s2">"</span><span class="s">fine"</span>           <span class="c1"># fine | coarse | none</span>
  <span class="na">fold_marks</span><span class="pi">:</span> <span class="no">true</span>       <span class="c1"># corner tick marks on cards</span>
  <span class="na">revision_block</span><span class="pi">:</span> <span class="no">true</span>   <span class="c1"># technical drawing footer</span>
  <span class="na">line_weight</span><span class="pi">:</span> <span class="s2">"</span><span class="s">normal"</span>  <span class="c1"># light | normal | heavy</span>
</code></pre></div></div>

<h2 id="writing-documentation">Writing Documentation</h2>

<p>Blueprint works great for technical writing. Use blockquotes as callout notes:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gt">&gt; This becomes a NOTE: callout annotation.</span>
</code></pre></div></div>

<p>Use code blocks with language identifiers for syntax highlighting:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">```</span><span class="nl">javascript
</span><span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">compute</span><span class="p">(</span><span class="nx">input</span><span class="p">);</span>
<span class="p">```</span>
</code></pre></div></div>

<h2 id="tag-system">Tag System</h2>

<p>Add tags in your post front matter:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">tags</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">javascript</span><span class="pi">,</span> <span class="nv">architecture</span><span class="pi">,</span> <span class="nv">tutorial</span><span class="pi">]</span>
</code></pre></div></div>

<p>Tags are filterable on the <code class="language-plaintext highlighter-rouge">/tags/</code> page and shown as outlined chips on every card.</p>]]></content><author><name>Engineer One</name><email>engineer@example.com</email></author><category term="design" /><category term="documentation" /><category term="getting-started" /><summary type="html"><![CDATA[A technical drawing–inspired Jekyll theme with engineering grid, fold marks, annotation callouts, and a revision block footer.]]></summary></entry></feed>