--- /dev/null
+{
+ "permissions": {
+ "allow": [
+ "Read(//home/danix/Programming/AI/claude/danixme/**)",
+ "Read(//home/danix/Programming/AI/claude/danixme/themes/**)",
+ "Bash(/home/danix/.claude/plugins/cache/superpowers-marketplace/superpowers/5.0.6/skills/brainstorming/scripts/start-server.sh:*)",
+ "Bash(git add:*)",
+ "Bash(git commit -m ':*)",
+ "Bash(hugo)",
+ "Bash(git commit:*)",
+ "Bash(hugo server:*)",
+ "Bash(curl -s http://localhost:1313/js/main.js)",
+ "Bash(curl -s http://localhost:1313/)",
+ "Read(//tmp/**)"
+ ]
+ }
+}
--- /dev/null
+<style>
+ @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap');
+
+ .approaches { display: flex; gap: 1.5rem; flex-wrap: wrap; margin-top: 1rem; }
+
+ .approach-card {
+ flex: 1;
+ min-width: 260px;
+ max-width: 340px;
+ border-radius: 12px;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid transparent;
+ transition: border-color 0.2s, box-shadow 0.2s;
+ position: relative;
+ }
+ .approach-card.selected { border-color: #a855f7; box-shadow: 0 0 24px rgba(168,85,247,0.4); }
+ .approach-card:hover { border-color: rgba(168,85,247,0.4); }
+
+ .approach-label {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 0.7rem;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.5rem 1rem;
+ font-weight: 600;
+ }
+
+ /* ── OPTION A: Hacker Terminal ── */
+ .preview-a {
+ background: #060b10;
+ padding: 1rem;
+ font-family: 'JetBrains Mono', monospace;
+ min-height: 340px;
+ }
+ .preview-a .nav-a {
+ display: flex; gap: 1rem; align-items: center; margin-bottom: 1rem;
+ border-bottom: 1px solid #182840; padding-bottom: 0.6rem;
+ }
+ .preview-a .logo-a { color: #a855f7; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.1em; }
+ .preview-a .nav-link { color: #7a9bb8; font-size: 0.55rem; letter-spacing: 0.12em; text-transform: uppercase; }
+ .preview-a .hero-a {
+ background: #060b10;
+ border: 1px solid #182840;
+ padding: 0.8rem;
+ margin-bottom: 0.8rem;
+ position: relative;
+ overflow: hidden;
+ }
+ .preview-a .matrix-strip {
+ position: absolute; top: 0; right: 0; bottom: 0; width: 40%;
+ background: linear-gradient(to right, #060b10, transparent);
+ display: flex; align-items: center; justify-content: flex-end;
+ font-size: 0.4rem; color: rgba(0,255,136,0.2); letter-spacing: 0.05em;
+ padding-right: 0.3rem; overflow: hidden; line-height: 1.2;
+ font-weight: 300;
+ }
+ .preview-a .name-a { font-family: 'Oxanium', sans-serif; color: #a855f7; font-size: 1.1rem; font-weight: 800; }
+ .preview-a .role-a { color: #00ff88; font-size: 0.5rem; letter-spacing: 0.15em; text-transform: uppercase; margin: 0.2rem 0; }
+ .preview-a .bio-a { color: #7a9bb8; font-size: 0.45rem; line-height: 1.6; max-width: 55%; font-family: 'IBM Plex Sans', sans-serif; }
+ .preview-a .card-a {
+ background: #101e2d;
+ border: 1px solid #182840;
+ padding: 0.6rem;
+ margin-bottom: 0.5rem;
+ display: flex; gap: 0.5rem;
+ }
+ .preview-a .card-img-a {
+ width: 40px; height: 32px; background: #182840; flex-shrink: 0;
+ border: 1px solid #a855f7; position: relative; overflow: hidden;
+ }
+ .preview-a .card-img-a::after {
+ content: ''; position: absolute; inset: 0;
+ background: linear-gradient(135deg, rgba(168,85,247,0.3), transparent);
+ }
+ .preview-a .tag-a {
+ font-size: 0.38rem; color: #00ff88; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 0.15rem;
+ border: 1px solid rgba(0,255,136,0.3); display: inline-block; padding: 0.05rem 0.2rem;
+ }
+ .preview-a .title-a { color: #c4d6e8; font-size: 0.5rem; font-weight: 600; line-height: 1.3; margin-bottom: 0.15rem; }
+ .preview-a .excerpt-a { color: #7a9bb8; font-size: 0.4rem; font-family: 'IBM Plex Sans', sans-serif; line-height: 1.5; }
+ .label-a { background: #060b10; color: #a855f7; }
+
+ /* ── OPTION B: Editorial Dark ── */
+ .preview-b {
+ background: #0a0f1a;
+ padding: 1rem;
+ min-height: 340px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ }
+ .preview-b .nav-b {
+ display: flex; gap: 1rem; align-items: center; margin-bottom: 1.2rem;
+ padding-bottom: 0.6rem;
+ }
+ .preview-b .logo-b { font-family: 'Oxanium', sans-serif; color: #e8e8f0; font-size: 0.8rem; font-weight: 800; }
+ .preview-b .nav-link-b { color: #6a7fa0; font-size: 0.5rem; letter-spacing: 0.06em; font-family: 'JetBrains Mono', monospace; }
+ .preview-b .hero-b {
+ margin-bottom: 1rem;
+ padding-bottom: 0.8rem;
+ border-bottom: 1px solid #1e2840;
+ position: relative; overflow: hidden;
+ }
+ .preview-b .matrix-strip-b {
+ position: absolute; top: 0; right: 0; bottom: 0; width: 35%;
+ display: flex; align-items: center; justify-content: flex-end;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 0.38rem; color: rgba(0,255,136,0.1); letter-spacing: 0.05em;
+ padding-right: 0.3rem; overflow: hidden; line-height: 1.3;
+ }
+ .preview-b .eyebrow-b { font-family: 'JetBrains Mono', monospace; color: #a855f7; font-size: 0.42rem; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 0.3rem; }
+ .preview-b .name-b { font-family: 'Oxanium', sans-serif; color: #e8e8f0; font-size: 1.4rem; font-weight: 800; line-height: 1.1; margin-bottom: 0.25rem; }
+ .preview-b .bio-b { color: #8899b8; font-size: 0.46rem; line-height: 1.8; max-width: 58%; }
+ .preview-b .section-label-b { font-family: 'JetBrains Mono', monospace; font-size: 0.42rem; color: #a855f7; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 0.6rem; }
+ .preview-b .grid-b { display: grid; grid-template-columns: 1.4fr 1fr; gap: 0.5rem; }
+ .preview-b .card-b {
+ background: #111827;
+ border-radius: 6px;
+ overflow: hidden;
+ }
+ .preview-b .card-b.featured { grid-row: span 2; }
+ .preview-b .card-img-b {
+ height: 50px; background: linear-gradient(135deg, #1e2840 60%, #2d1f4a);
+ position: relative;
+ }
+ .preview-b .card-img-b.featured { height: 90px; }
+ .preview-b .card-img-b::after {
+ content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 50%;
+ background: linear-gradient(to top, #111827, transparent);
+ }
+ .preview-b .card-body-b { padding: 0.5rem; }
+ .preview-b .tag-b { font-family: 'JetBrains Mono', monospace; font-size: 0.35rem; color: #a855f7; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 0.12rem; }
+ .preview-b .title-b { color: #d4e0f0; font-size: 0.48rem; font-weight: 600; line-height: 1.35; }
+ .label-b { background: #0a0f1a; color: #d4e0f0; font-family: 'IBM Plex Sans', sans-serif; }
+
+ /* ── OPTION C: Warm Personal ── */
+ .preview-c {
+ background: #0d0f14;
+ padding: 1rem;
+ min-height: 340px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ }
+ .preview-c .nav-c {
+ display: flex; gap: 1rem; align-items: center; margin-bottom: 1rem;
+ padding-bottom: 0.6rem; border-bottom: 1px solid #1e2030;
+ }
+ .preview-c .logo-c { font-family: 'Oxanium', sans-serif; color: #c084fc; font-size: 0.75rem; font-weight: 800; }
+ .preview-c .nav-link-c { color: #6a7a90; font-size: 0.5rem; letter-spacing: 0.04em; font-family: 'IBM Plex Sans', sans-serif; }
+ .preview-c .hero-c {
+ display: flex; align-items: center; gap: 0.8rem;
+ margin-bottom: 0.8rem; padding-bottom: 0.8rem; border-bottom: 1px solid #1e2030;
+ position: relative; overflow: hidden;
+ }
+ .preview-c .matrix-strip-c {
+ position: absolute; top: 0; right: 0; bottom: 0; width: 30%;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 0.38rem; color: rgba(192,132,252,0.12); letter-spacing: 0.05em;
+ padding-right: 0.3rem; overflow: hidden; line-height: 1.3; display: flex; align-items: center;
+ justify-content: flex-end;
+ }
+ .preview-c .avatar-c {
+ width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0;
+ background: linear-gradient(135deg, #a855f7, #00ff88);
+ display: flex; align-items: center; justify-content: center;
+ font-family: 'Oxanium', sans-serif; color: #fff; font-size: 0.65rem; font-weight: 800;
+ }
+ .preview-c .name-c { font-family: 'Oxanium', sans-serif; color: #dde8f8; font-size: 0.9rem; font-weight: 800; line-height: 1.1; }
+ .preview-c .role-c { font-family: 'JetBrains Mono', monospace; color: #c084fc; font-size: 0.38rem; letter-spacing: 0.1em; margin: 0.1rem 0; }
+ .preview-c .bio-c { color: #7a8fa8; font-size: 0.4rem; line-height: 1.7; max-width: 55%; }
+ .preview-c .filters-c { display: flex; gap: 0.3rem; margin-bottom: 0.6rem; flex-wrap: wrap; }
+ .preview-c .filter-c { font-family: 'JetBrains Mono', monospace; font-size: 0.38rem; padding: 0.1rem 0.35rem; border-radius: 20px; letter-spacing: 0.08em; text-transform: uppercase; cursor: pointer; }
+ .preview-c .filter-all { background: #a855f7; color: #fff; }
+ .preview-c .filter-inactive { background: rgba(168,85,247,0.1); color: #7a8fa8; border: 1px solid rgba(168,85,247,0.2); }
+
+ /* Mixed card types for feed */
+ .preview-c .feed-c { display: flex; flex-direction: column; gap: 0.4rem; }
+
+ /* Article card */
+ .preview-c .card-article {
+ background: #141820; border-radius: 6px; display: flex; gap: 0.5rem; overflow: hidden;
+ border-left: 2px solid #a855f7;
+ }
+ .preview-c .card-article-img { width: 48px; height: 40px; background: linear-gradient(135deg, #1e2840, #2d1f4a); flex-shrink: 0; }
+ .preview-c .card-article-body { padding: 0.4rem 0.4rem 0.4rem 0; }
+ .preview-c .card-type { font-family: 'JetBrains Mono', monospace; font-size: 0.35rem; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 0.08rem; }
+ .preview-c .type-tech { color: #a855f7; }
+ .preview-c .type-life { color: #f59e0b; }
+ .preview-c .type-quote { color: #00ff88; }
+ .preview-c .type-link { color: #38bdf8; }
+ .preview-c .card-title-c { color: #ccd8ec; font-size: 0.48rem; font-weight: 600; line-height: 1.3; }
+
+ /* Quote card */
+ .preview-c .card-quote {
+ background: #0f1520; border-radius: 6px; padding: 0.5rem 0.6rem;
+ border-left: 3px solid #00ff88;
+ }
+ .preview-c .quote-text { color: #a0b8c8; font-size: 0.44rem; font-style: italic; line-height: 1.6; margin-bottom: 0.15rem; font-family: 'IBM Plex Sans', sans-serif; }
+ .preview-c .quote-attr { font-family: 'JetBrains Mono', monospace; font-size: 0.35rem; color: #00ff88; letter-spacing: 0.08em; }
+
+ /* Link card */
+ .preview-c .card-link {
+ background: #141820; border-radius: 6px; padding: 0.4rem 0.5rem;
+ display: flex; align-items: center; gap: 0.4rem;
+ border-left: 2px solid #38bdf8;
+ }
+ .preview-c .link-icon { font-size: 0.7rem; flex-shrink: 0; }
+ .preview-c .link-title { color: #ccd8ec; font-size: 0.45rem; font-weight: 600; }
+ .preview-c .link-domain { font-family: 'JetBrains Mono', monospace; font-size: 0.35rem; color: #38bdf8; }
+
+ .label-c { background: #0d0f14; color: #dde8f8; font-family: 'IBM Plex Sans', sans-serif; }
+
+ .approach-badge {
+ position: absolute; top: 0.5rem; right: 0.5rem;
+ font-family: 'JetBrains Mono', monospace; font-size: 0.55rem;
+ background: rgba(168,85,247,0.15); color: #a855f7;
+ border: 1px solid rgba(168,85,247,0.3); padding: 0.15rem 0.4rem;
+ letter-spacing: 0.1em; text-transform: uppercase;
+ }
+</style>
+
+<h2>Three theme directions for danix.xyz</h2>
+<p class="subtitle">Each preserves the fonts and colors from danixme — the difference is in personality and layout approach. Click to select.</p>
+
+<div class="approaches">
+
+ <!-- OPTION A -->
+ <div class="approach-card" data-choice="a" onclick="toggleSelect(this)">
+ <div class="approach-label label-a">A — Hacker Terminal</div>
+ <div class="preview-a">
+ <div class="approach-badge">A</div>
+ <div class="nav-a">
+ <span class="logo-a">danix</span>
+ <span class="nav-link">articles</span>
+ <span class="nav-link">contact</span>
+ </div>
+ <div class="hero-a">
+ <div class="matrix-strip">アイウ01カキABC<br>エオ234クケBCD<br>カキ567コサCDE<br>クケ890シスDEF</div>
+ <div class="name-a">danilo m.</div>
+ <div class="role-a">// engineer · writer · human</div>
+ <div class="bio-a">writing about the things I learn, the things I think, and the things that move me.</div>
+ </div>
+ <div class="card-a">
+ <div class="card-img-a"></div>
+ <div>
+ <div class="tag-a">tech</div>
+ <div class="title-a">Understanding Kubernetes networking from scratch</div>
+ <div class="excerpt-a">After years of cargo-culting configs...</div>
+ </div>
+ </div>
+ <div class="card-a">
+ <div class="card-img-a"></div>
+ <div>
+ <div class="tag-a" style="color:#f59e0b;border-color:rgba(245,158,11,0.3)">life</div>
+ <div class="title-a">On slowing down in a world that won't</div>
+ <div class="excerpt-a">There's a particular kind of exhaustion...</div>
+ </div>
+ </div>
+ </div>
+ <div class="approach-label label-a" style="font-size:0.6rem;padding:0.4rem 1rem;border-top:1px solid #182840">Sharp edges · terminal soul · max hacker</div>
+ </div>
+
+ <!-- OPTION B -->
+ <div class="approach-card" data-choice="b" onclick="toggleSelect(this)">
+ <div class="approach-label label-b">B — Editorial Dark</div>
+ <div class="preview-b">
+ <div class="approach-badge">B</div>
+ <div class="nav-b">
+ <span class="logo-b">danix</span>
+ <span class="nav-link-b">articles</span>
+ <span class="nav-link-b">contact</span>
+ </div>
+ <div class="hero-b">
+ <div class="matrix-strip-b">アイウ01カキABC<br>エオ234クケBCD<br>カキ567コサCDE</div>
+ <div class="eyebrow-b">// engineer · writer · human</div>
+ <div class="name-b">danilo m.</div>
+ <div class="bio-b">Writing about IT, life, and the things that matter. Honest takes, real learning.</div>
+ </div>
+ <div class="section-label-b">latest</div>
+ <div class="grid-b">
+ <div class="card-b featured">
+ <div class="card-img-b featured"></div>
+ <div class="card-body-b">
+ <div class="tag-b">tech</div>
+ <div class="title-b">Understanding Kubernetes networking from scratch</div>
+ </div>
+ </div>
+ <div class="card-b">
+ <div class="card-img-b"></div>
+ <div class="card-body-b">
+ <div class="tag-b" style="color:#f59e0b">life</div>
+ <div class="title-b">On slowing down</div>
+ </div>
+ </div>
+ <div class="card-b">
+ <div class="card-img-b"></div>
+ <div class="card-body-b">
+ <div class="tag-b" style="color:#00ff88">quote</div>
+ <div class="title-b">"The obstacle is the way"</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="approach-label label-b" style="font-size:0.6rem;padding:0.4rem 1rem;border-top:1px solid #1e2840">Magazine grid · featured post · editorial rhythm</div>
+ </div>
+
+ <!-- OPTION C -->
+ <div class="approach-card" data-choice="c" onclick="toggleSelect(this)">
+ <div class="approach-label label-c">C — Warm Personal</div>
+ <div class="preview-c">
+ <div class="approach-badge">C</div>
+ <div class="nav-c">
+ <span class="logo-c">danix</span>
+ <span class="nav-link-c">articles</span>
+ <span class="nav-link-c">contact</span>
+ </div>
+ <div class="hero-c">
+ <div class="matrix-strip-c">アイウ01<br>エオ234<br>カキ567</div>
+ <div class="avatar-c">DM</div>
+ <div>
+ <div class="name-c">danilo m.</div>
+ <div class="role-c">// engineer · writer · human</div>
+ <div class="bio-c">Writing about the things I learn, think about, and find worth sharing.</div>
+ </div>
+ </div>
+ <div class="filters-c">
+ <span class="filter-c filter-all">all</span>
+ <span class="filter-c filter-inactive">tech</span>
+ <span class="filter-c filter-inactive">life</span>
+ <span class="filter-c filter-inactive">quotes</span>
+ <span class="filter-c filter-inactive">links</span>
+ <span class="filter-c filter-inactive">photos</span>
+ </div>
+ <div class="feed-c">
+ <div class="card-article">
+ <div class="card-article-img"></div>
+ <div class="card-article-body">
+ <div class="card-type type-tech">tech</div>
+ <div class="card-title-c">Understanding Kubernetes networking from scratch</div>
+ </div>
+ </div>
+ <div class="card-quote">
+ <div class="card-type type-quote">quote</div>
+ <div class="quote-text">"The obstacle is the way"</div>
+ <div class="quote-attr">— Marcus Aurelius</div>
+ </div>
+ <div class="card-link">
+ <div class="link-icon">🔗</div>
+ <div>
+ <div class="card-type type-link">link</div>
+ <div class="link-title">The future of Linux packaging</div>
+ <div class="link-domain">lwn.net</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="approach-label label-c" style="font-size:0.6rem;padding:0.4rem 1rem;border-top:1px solid #1e2030">Feed-first · type-colored cards · human warmth</div>
+ </div>
+
+</div>
--- /dev/null
+<div style="display:flex;align-items:center;justify-content:center;min-height:60vh">
+ <p class="subtitle">Continuing in terminal...</p>
+</div>
\ No newline at end of file
--- /dev/null
+{"reason":"idle timeout","timestamp":1775369816592}
--- /dev/null
+{"type":"server-started","port":54310,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:54310","screen_dir":"/home/danix/Programming/GIT/danix2-hugo-theme/.superpowers/brainstorm/15080-1775367116/content","state_dir":"/home/danix/Programming/GIT/danix2-hugo-theme/.superpowers/brainstorm/15080-1775367116/state"}
+{"type":"screen-added","file":"/home/danix/Programming/GIT/danix2-hugo-theme/.superpowers/brainstorm/15080-1775367116/content/theme-approaches.html"}
+{"source":"user-event","type":"click","text":"B — Editorial Dark\n \n B\n \n danix\n articles\n contact\n \n \n アイウ01カキABCエオ234クケBCDカキ567コサCDE\n // engineer · writer · human\n danilo m.\n Writing about IT, life, and the things that matter. Honest takes, real learning.\n \n latest\n \n \n \n \n tech\n Understanding Kubernetes networking from scratch\n \n \n \n \n \n life\n On slowing down\n \n \n \n \n \n quote\n \"The obstacle is the way\"\n \n \n \n \n Magazine grid · featured post · editorial rhythm","choice":"b","id":null,"timestamp":1775367824598}
+{"type":"screen-added","file":"/home/danix/Programming/GIT/danix2-hugo-theme/.superpowers/brainstorm/15080-1775367116/content/waiting.html"}
+{"type":"server-stopped","reason":"idle timeout"}
#matrix-canvas {
position: absolute;
inset: 0;
- opacity: 0.13;
+ opacity: 0.25;
pointer-events: none;
}
html.theme-light #matrix-canvas {
- opacity: 0.18;
+ opacity: 0.35;
}
.hero-content {
max-width: 400px;
}
-/* Scanlines effect on canvas */
-#matrix-canvas::after {
- content: '';
- position: absolute;
- inset: 0;
- background: repeating-linear-gradient(
- 0deg,
- rgba(0, 0, 0, 0.15),
- rgba(0, 0, 0, 0.15) 1px,
- transparent 1px,
- transparent 2px
- );
- pointer-events: none;
-}
/* Ambient glow behind hero */
.hero::before {
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap');
@import 'variables.css';
+@import 'components/header.css';
+@import 'components/footer.css';
@import 'components/hero.css';
@import 'components/card.css';
@import 'components/feed.css';
--- /dev/null
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "*": [
+ "*"
+ ]
+ }
+ }
+}
\ No newline at end of file
{{ partial "hero.html" . }}
<div class="container feed-section">
- <div class="feed-label">Latest</div>
-
{{ $posts := where site.RegularPages "Type" "in" (slice "articles") }}
{{ $posts := sort $posts "Params.date" "desc" }}
- {{ $latest := first 3 $posts }}
+
+ {{ $featured := where $posts "Params.featured" true }}
+ {{ $notFeatured := where $posts "Params.featured" "!=" true }}
<div class="feed-grid">
- {{ range $latest }}
- {{ $data := dict "title" .Title "type" .Params.type "description" .Summary "date" .Date "url" .RelPermalink "image" .Params.image "featured" .Params.featured }}
- {{ partial "post-card.html" $data }}
+ {{ if $featured }}
+ <div class="feed-label">Featured</div>
+ {{ range first 1 $featured }}
+ {{ $data := dict "title" .Title "type" .Params.type "description" .Summary "date" .Date "url" .RelPermalink "image" .Params.image "featured" true }}
+ {{ partial "post-card.html" $data }}
+ {{ end }}
+ {{ end }}
+
+ {{ if or $featured $notFeatured }}
+ {{ if $featured }}<div class="feed-label" style="margin-top: 2rem;">Latest</div>{{ else }}<div class="feed-label">Latest</div>{{ end }}
+ {{ $latest := first 3 $notFeatured }}
+ {{ range $latest }}
+ {{ $data := dict "title" .Title "type" .Params.type "description" .Summary "date" .Date "url" .RelPermalink "image" .Params.image "featured" false }}
+ {{ partial "post-card.html" $data }}
+ {{ end }}
{{ end }}
</div>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Articles | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" class="active">
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <div class="container">
+ <h1>Articles</h1>
+
+
+ <div class="filter-bar">
+ <button class="filter-btn active" data-filter="all">All</button>
+ <button class="filter-btn" data-filter="tech">Tech</button>
+ <button class="filter-btn" data-filter="life">Life</button>
+ <button class="filter-btn" data-filter="quote">Quote</button>
+ <button class="filter-btn" data-filter="link">Link</button>
+ <button class="filter-btn" data-filter="photo">Photo</button>
+ </div>
+
+ <div class="feed-list" id="articles-feed">
+
+ </div>
+
+ </div>
+
+
+
+ <script defer src="/js/filters.38212ecd54ff7f1fdebf2aebe32e8c248382e80f93dae0761ebbbd03ca28dc5b.js"></script>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Categories | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <h1>Categories</h1>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Categories on danilo m.</title>
+ <link>http://localhost:1313/categories/</link>
+ <description>Recent content in Categories on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
+ </channel>
+</rss>
--- /dev/null
+header{border-bottom:1px solid #222;margin-bottom:1rem}footer{border-top:1px solid #222;margin-top:1rem}body{color:#222;font-family:sans-serif;line-height:1.5;margin:1rem;max-width:768px}a{color:#00e;text-decoration:none}
--- /dev/null
+@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap";:root{--bg: #060b10;--bg2: #0c1520;--surface: #101e2d;--border: #182840;--accent: #a855f7;--accent2: #00ff88;--text: #c4d6e8;--text-dim: #7a9bb8;--muted: #304860;--color-tech: #a855f7;--color-life: #f59e0b;--color-quote: #00ff88;--color-link: #38bdf8;--color-photo: #ec4899;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Courier New", monospace;--font-head: "Oxanium", sans-serif;--fs-body: .95rem;--fs-nav: .8rem;--fs-badge: .7rem;--fs-btn: .8rem;--fs-h3: 1.5rem;--fs-h2: clamp(1.7rem, 6vw, 3rem);--container-max: 1080px;--container-narrow: 768px;--gap-sm: .5rem;--gap-md: 1.5rem;--gap-lg: 2.5rem;--gap-xl: 4rem;--section-py-mobile: 4rem;--section-py-desktop: 6rem;--card-px-mobile: 1.5rem;--card-px-desktop: 2rem;--transition: all .2s ease;--transition-slow: all .75s cubic-bezier(.16,1,.3,1)}html.theme-light{--bg: #f0f4f8;--bg2: #e2eaf4;--surface: #d4dff0;--border: #a8bdd8;--accent: #7c3aed;--accent2: #008f5a;--text: #0d1b2a;--text-dim: #2e4a6a;--muted: #6888a8}@media(max-width:479px){:root{--bp: "mobile"}}@media(min-width:480px){:root{--bp: "sm"}}@media(min-width:768px){:root{--bp: "md"}}@media(min-width:1200px){:root{--bp: "lg"}}html{font-size:17px;scroll-behavior:smooth}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);line-height:1.95;transition:background-color .2s,color .2s}h1{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin-bottom:.5rem}h2{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin:2rem 0 1rem}h3{font-family:var(--font-head);font-size:var(--fs-h3);font-weight:800;line-height:1.2;margin:1.5rem 0 .75rem}h4,h5,h6{font-family:var(--font-head);font-weight:800;margin:1rem 0 .5rem}p{margin-bottom:1rem}a{color:var(--accent);text-decoration:none;transition:var(--transition)}a:hover{color:var(--accent2)}.container{max-width:var(--container-max);margin:0 auto;padding:0 1.5rem}.container-narrow{max-width:var(--container-narrow);margin:0 auto;padding:0 1.5rem}main{min-height:calc(100vh - 200px)}ul,ol{margin-left:1.5rem;margin-bottom:1rem}li{margin-bottom:.5rem}code{font-family:var(--font-mono);background:var(--surface);padding:.25rem .5rem;border-radius:4px;font-size:.9em}pre{margin-bottom:1rem;overflow-x:auto}pre code{padding:0;background:none;border-radius:0}:focus{outline:2px solid var(--accent);outline-offset:2px}button:focus,a:focus{outline:2px dashed var(--accent);outline-offset:4px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
--- /dev/null
+@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap";:root{--bg: #060b10;--bg2: #0c1520;--surface: #101e2d;--border: #182840;--accent: #a855f7;--accent2: #00ff88;--text: #c4d6e8;--text-dim: #7a9bb8;--muted: #304860;--color-tech: #a855f7;--color-life: #f59e0b;--color-quote: #00ff88;--color-link: #38bdf8;--color-photo: #ec4899;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Courier New", monospace;--font-head: "Oxanium", sans-serif;--fs-body: .95rem;--fs-nav: .8rem;--fs-badge: .7rem;--fs-btn: .8rem;--fs-h3: 1.5rem;--fs-h2: clamp(1.7rem, 6vw, 3rem);--container-max: 1080px;--container-narrow: 768px;--gap-sm: .5rem;--gap-md: 1.5rem;--gap-lg: 2.5rem;--gap-xl: 4rem;--section-py-mobile: 4rem;--section-py-desktop: 6rem;--card-px-mobile: 1.5rem;--card-px-desktop: 2rem;--transition: all .2s ease;--transition-slow: all .75s cubic-bezier(.16,1,.3,1)}html.theme-light{--bg: #f0f4f8;--bg2: #e2eaf4;--surface: #d4dff0;--border: #a8bdd8;--accent: #7c3aed;--accent2: #008f5a;--text: #0d1b2a;--text-dim: #2e4a6a;--muted: #6888a8}@media(max-width:479px){:root{--bp: "mobile"}}@media(min-width:480px){:root{--bp: "sm"}}@media(min-width:768px){:root{--bp: "md"}}@media(min-width:1200px){:root{--bp: "lg"}}.hero{position:relative;overflow:hidden;padding:var(--section-py-mobile) 1.5rem;background:var(--bg);border-bottom:1px solid var(--border)}@media(min-width:768px){.hero{padding:var(--section-py-desktop) 1.5rem}}#matrix-canvas{position:absolute;inset:0;opacity:.13;pointer-events:none}html.theme-light #matrix-canvas{opacity:.18}.hero-content{position:relative;z-index:1;max-width:var(--container-max);margin:0 auto;display:flex;align-items:center;gap:var(--gap-lg)}.hero-avatar{width:64px;height:64px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-size:1.4rem;font-weight:800;color:#fff}@media(min-width:768px){.hero-avatar{width:80px;height:80px;font-size:1.8rem}}.hero-text h1{margin-bottom:.25rem}.hero-role{font-family:var(--font-mono);font-size:.85rem;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.75rem}.hero-bio{color:var(--text-dim);font-size:.95rem;line-height:1.8;max-width:400px}#matrix-canvas:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15) 1px,transparent 1px,transparent 2px);pointer-events:none}.hero:before{content:"";position:absolute;top:50%;left:50%;width:600px;height:600px;background:radial-gradient(circle,rgba(168,85,247,.15) 0%,transparent 70%);transform:translate(-50%,-50%);pointer-events:none}@media(max-width:768px){.hero-content{flex-direction:column;text-align:center}.hero-bio{max-width:100%}}html{font-size:17px;scroll-behavior:smooth}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);line-height:1.95;transition:background-color .2s,color .2s}h1{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin-bottom:.5rem}h2{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin:2rem 0 1rem}h3{font-family:var(--font-head);font-size:var(--fs-h3);font-weight:800;line-height:1.2;margin:1.5rem 0 .75rem}h4,h5,h6{font-family:var(--font-head);font-weight:800;margin:1rem 0 .5rem}p{margin-bottom:1rem}a{color:var(--accent);text-decoration:none;transition:var(--transition)}a:hover{color:var(--accent2)}.container{max-width:var(--container-max);margin:0 auto;padding:0 1.5rem}.container-narrow{max-width:var(--container-narrow);margin:0 auto;padding:0 1.5rem}main{min-height:calc(100vh - 200px)}ul,ol{margin-left:1.5rem;margin-bottom:1rem}li{margin-bottom:.5rem}code{font-family:var(--font-mono);background:var(--surface);padding:.25rem .5rem;border-radius:4px;font-size:.9em}pre{margin-bottom:1rem;overflow-x:auto}pre code{padding:0;background:none;border-radius:0}:focus{outline:2px solid var(--accent);outline-offset:2px}button:focus,a:focus{outline:2px dashed var(--accent);outline-offset:4px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
--- /dev/null
+@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap";:root{--bg: #060b10;--bg2: #0c1520;--surface: #101e2d;--border: #182840;--accent: #a855f7;--accent2: #00ff88;--text: #c4d6e8;--text-dim: #7a9bb8;--muted: #304860;--color-tech: #a855f7;--color-life: #f59e0b;--color-quote: #00ff88;--color-link: #38bdf8;--color-photo: #ec4899;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Courier New", monospace;--font-head: "Oxanium", sans-serif;--fs-body: .95rem;--fs-nav: .8rem;--fs-badge: .7rem;--fs-btn: .8rem;--fs-h3: 1.5rem;--fs-h2: clamp(1.7rem, 6vw, 3rem);--container-max: 1080px;--container-narrow: 768px;--gap-sm: .5rem;--gap-md: 1.5rem;--gap-lg: 2.5rem;--gap-xl: 4rem;--section-py-mobile: 4rem;--section-py-desktop: 6rem;--card-px-mobile: 1.5rem;--card-px-desktop: 2rem;--transition: all .2s ease;--transition-slow: all .75s cubic-bezier(.16,1,.3,1)}html.theme-light{--bg: #f0f4f8;--bg2: #e2eaf4;--surface: #d4dff0;--border: #a8bdd8;--accent: #7c3aed;--accent2: #008f5a;--text: #0d1b2a;--text-dim: #2e4a6a;--muted: #6888a8}@media(max-width:479px){:root{--bp: "mobile"}}@media(min-width:480px){:root{--bp: "sm"}}@media(min-width:768px){:root{--bp: "md"}}@media(min-width:1200px){:root{--bp: "lg"}}.hero{position:relative;overflow:hidden;padding:var(--section-py-mobile) 1.5rem;background:var(--bg);border-bottom:1px solid var(--border)}@media(min-width:768px){.hero{padding:var(--section-py-desktop) 1.5rem}}#matrix-canvas{position:absolute;inset:0;opacity:.13;pointer-events:none}html.theme-light #matrix-canvas{opacity:.18}.hero-content{position:relative;z-index:1;max-width:var(--container-max);margin:0 auto;display:flex;align-items:center;gap:var(--gap-lg)}.hero-avatar{width:64px;height:64px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-size:1.4rem;font-weight:800;color:#fff}@media(min-width:768px){.hero-avatar{width:80px;height:80px;font-size:1.8rem}}.hero-text h1{margin-bottom:.25rem}.hero-role{font-family:var(--font-mono);font-size:.85rem;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.75rem}.hero-bio{color:var(--text-dim);font-size:.95rem;line-height:1.8;max-width:400px}#matrix-canvas:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15) 1px,transparent 1px,transparent 2px);pointer-events:none}.hero:before{content:"";position:absolute;top:50%;left:50%;width:600px;height:600px;background:radial-gradient(circle,rgba(168,85,247,.15) 0%,transparent 70%);transform:translate(-50%,-50%);pointer-events:none}@media(max-width:768px){.hero-content{flex-direction:column;text-align:center}.hero-bio{max-width:100%}}.post-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;transition:var(--transition);display:flex;gap:var(--gap-md)}.post-card:hover{border-color:var(--accent);box-shadow:0 0 20px #a855f733}.post-card-image{width:120px;height:100px;flex-shrink:0;object-fit:cover;background:linear-gradient(135deg,var(--border),var(--bg2));border-right:1px solid var(--border)}@media(min-width:768px){.post-card-image{width:160px;height:120px}}.post-card-body{padding:var(--gap-md);display:flex;flex-direction:column;justify-content:center;flex-grow:1}.post-type-badge{display:inline-block;font-family:var(--font-mono);font-size:var(--fs-badge);font-weight:600;text-transform:uppercase;letter-spacing:.1em;padding:.35rem .7rem;border-radius:20px;margin-bottom:.5rem;width:fit-content}.post-type-badge.tech{background:color-mix(in srgb,var(--color-tech) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-tech) 30%,transparent);color:var(--color-tech)}.post-type-badge.life{background:color-mix(in srgb,var(--color-life) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-life) 30%,transparent);color:var(--color-life)}.post-type-badge.quote{background:color-mix(in srgb,var(--color-quote) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-quote) 30%,transparent);color:var(--color-quote)}.post-type-badge.link{background:color-mix(in srgb,var(--color-link) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-link) 30%,transparent);color:var(--color-link)}.post-type-badge.photo{background:color-mix(in srgb,var(--color-photo) 15%,transparent);border:1px solid color-mix(in srgb,var(--color-photo) 30%,transparent);color:var(--color-photo)}.post-card-title{font-family:var(--font-head);font-size:1.1rem;font-weight:700;line-height:1.3;margin-bottom:.5rem;color:var(--text)}.post-card-title a{color:var(--text);text-decoration:none}.post-card-title a:hover{color:var(--accent)}.post-card-excerpt{color:var(--text-dim);font-size:.9rem;line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:.5rem}.post-card-meta{display:flex;gap:1rem;font-family:var(--font-mono);font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.post-card.featured{grid-row:span 2}.post-card.featured .post-card-image{width:100%;height:180px;border-right:none;border-bottom:1px solid var(--border)}.post-card.featured .post-card-body{padding:var(--gap-lg)}@media(max-width:768px){.post-card{flex-direction:column}.post-card-image{width:100%;height:150px;border-right:none;border-bottom:1px solid var(--border)}.post-card.featured .post-card-image{height:150px}}.feed-section{padding:var(--section-py-mobile) 0}@media(min-width:768px){.feed-section{padding:var(--section-py-desktop) 0}}.feed-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:1.5rem}.feed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--gap-md);margin-bottom:var(--gap-xl)}@media(min-width:768px){.feed-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1200px){.feed-grid{grid-template-columns:repeat(3,1fr)}}.feed-list{display:flex;flex-direction:column;gap:var(--gap-md)}.feed-list .post-card{flex-direction:row}.filter-bar{display:flex;gap:var(--gap-sm);margin-bottom:var(--gap-lg);flex-wrap:wrap}.filter-btn{font-family:var(--font-mono);font-size:var(--fs-badge);padding:.4rem 1rem;border:1px solid var(--border);border-radius:20px;background:transparent;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:var(--transition)}.filter-btn:hover{border-color:var(--accent);color:var(--accent)}.filter-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.feed-cta{display:inline-block;padding:.75rem 1.5rem;background:var(--accent);color:#fff;border-radius:4px;font-family:var(--font-mono);font-size:var(--fs-btn);text-transform:uppercase;letter-spacing:.1em;text-decoration:none;transition:var(--transition)}.feed-cta:hover{background:var(--accent2);color:var(--bg)}pre{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;padding:1rem;overflow-x:auto;position:relative;margin:1.5rem 0}pre code{font-family:var(--font-mono);font-size:.9rem;line-height:1.6;color:var(--text)}.highlight{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;padding:1rem;overflow-x:auto;margin:1.5rem 0;position:relative}.highlight code{background:none;padding:0;border-radius:0;color:inherit}.highlight .k,.highlight .kn,.highlight .kp,.highlight .kr{color:#f59e0b}.highlight .kt{color:#a855f7}.highlight .n{color:#c4d6e8}.highlight .na,.highlight .nb{color:#38bdf8}.highlight .nc{color:#a855f7}.highlight .no{color:#0f8}.highlight .nd{color:#f59e0b}.highlight .ni{color:#a855f7}.highlight .ne{color:#f59e0b}.highlight .nf{color:#38bdf8}.highlight .nl,.highlight .nn{color:#a855f7}.highlight .nt{color:#f59e0b}.highlight .nv{color:#c4d6e8}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .s1,.highlight .s2{color:#0f8}.highlight .se{color:#f59e0b}.highlight .sh{color:#0f8}.highlight .si{color:#f59e0b}.highlight .sx,.highlight .sr,.highlight .ss{color:#0f8}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo{color:#38bdf8}.highlight .o{color:#c4d6e8}.highlight .ow{color:#a855f7}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm{color:#7a9bb8}.highlight .cp,.highlight .cpf{color:#f59e0b}html.theme-light .highlight{background:var(--surface);border-left-color:var(--accent)}html.theme-light .highlight .c{color:#6a7fa0}.code-copy-btn{position:absolute;top:.75rem;right:.75rem;background:var(--accent);color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;font-family:var(--font-mono);font-size:.75rem;cursor:pointer;opacity:0;transition:var(--transition);text-transform:uppercase;letter-spacing:.08em}.highlight:hover .code-copy-btn,pre:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{background:var(--accent2);color:var(--bg)}.code-copy-btn.copied{background:var(--accent2)}code{font-family:var(--font-mono);background:var(--surface);padding:.25rem .5rem;border-radius:4px;font-size:.9em;color:var(--accent2)}p code{border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}.reading-progress{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent2));width:0%;z-index:200;transition:width .1s ease-out}.article-page .reading-progress,.page-page .reading-progress{display:block}body:not(.scrollable) .reading-progress{display:none}html{font-size:17px;scroll-behavior:smooth}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);line-height:1.95;transition:background-color .2s,color .2s}h1{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin-bottom:.5rem}h2{font-family:var(--font-head);font-size:var(--fs-h2);font-weight:800;line-height:1.1;margin:2rem 0 1rem}h3{font-family:var(--font-head);font-size:var(--fs-h3);font-weight:800;line-height:1.2;margin:1.5rem 0 .75rem}h4,h5,h6{font-family:var(--font-head);font-weight:800;margin:1rem 0 .5rem}p{margin-bottom:1rem}a{color:var(--accent);text-decoration:none;transition:var(--transition)}a:hover{color:var(--accent2)}.container{max-width:var(--container-max);margin:0 auto;padding:0 1.5rem}.container-narrow{max-width:var(--container-narrow);margin:0 auto;padding:0 1.5rem}main{min-height:calc(100vh - 200px)}ul,ol{margin-left:1.5rem;margin-bottom:1rem}li{margin-bottom:.5rem}code{font-family:var(--font-mono);background:var(--surface);padding:.25rem .5rem;border-radius:4px;font-size:.9em}pre{margin-bottom:1rem;overflow-x:auto}pre code{padding:0;background:none;border-radius:0}:focus{outline:2px solid var(--accent);outline-offset:2px}button:focus,a:focus{outline:2px dashed var(--accent);outline-offset:4px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
--- /dev/null
+@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300&family=Oxanium:wght@700;800&display=swap";
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/variables.css */
+:root {
+ --bg: #060b10;
+ --bg2: #0c1520;
+ --surface: #101e2d;
+ --border: #182840;
+ --accent: #a855f7;
+ --accent2: #00ff88;
+ --text: #c4d6e8;
+ --text-dim: #7a9bb8;
+ --muted: #304860;
+ --color-tech: #a855f7;
+ --color-life: #f59e0b;
+ --color-quote: #00ff88;
+ --color-link: #38bdf8;
+ --color-photo: #ec4899;
+ --font-body:
+ "IBM Plex Sans",
+ system-ui,
+ sans-serif;
+ --font-mono:
+ "JetBrains Mono",
+ "Courier New",
+ monospace;
+ --font-head: "Oxanium", sans-serif;
+ --fs-body: 0.95rem;
+ --fs-nav: 0.8rem;
+ --fs-badge: 0.7rem;
+ --fs-btn: 0.8rem;
+ --fs-h3: 1.5rem;
+ --fs-h2: clamp(1.7rem, 6vw, 3rem);
+ --container-max: 1080px;
+ --container-narrow: 768px;
+ --gap-sm: 0.5rem;
+ --gap-md: 1.5rem;
+ --gap-lg: 2.5rem;
+ --gap-xl: 4rem;
+ --section-py-mobile: 4rem;
+ --section-py-desktop: 6rem;
+ --card-px-mobile: 1.5rem;
+ --card-px-desktop: 2rem;
+ --transition: all 0.2s ease;
+ --transition-slow: all 0.75s cubic-bezier(0.16,1,0.3,1);
+}
+html.theme-light {
+ --bg: #f0f4f8;
+ --bg2: #e2eaf4;
+ --surface: #d4dff0;
+ --border: #a8bdd8;
+ --accent: #7c3aed;
+ --accent2: #008f5a;
+ --text: #0d1b2a;
+ --text-dim: #2e4a6a;
+ --muted: #6888a8;
+}
+@media (max-width: 479px) {
+ :root {
+ --bp: "mobile";
+ }
+}
+@media (min-width: 480px) {
+ :root {
+ --bp: "sm";
+ }
+}
+@media (min-width: 768px) {
+ :root {
+ --bp: "md";
+ }
+}
+@media (min-width: 1200px) {
+ :root {
+ --bp: "lg";
+ }
+}
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/hero.css */
+.hero {
+ position: relative;
+ overflow: hidden;
+ padding: var(--section-py-mobile) 1.5rem;
+ background: var(--bg);
+ border-bottom: 1px solid var(--border);
+}
+@media (min-width: 768px) {
+ .hero {
+ padding: var(--section-py-desktop) 1.5rem;
+ }
+}
+#matrix-canvas {
+ position: absolute;
+ inset: 0;
+ opacity: 0.13;
+ pointer-events: none;
+}
+html.theme-light #matrix-canvas {
+ opacity: 0.18;
+}
+.hero-content {
+ position: relative;
+ z-index: 1;
+ max-width: var(--container-max);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ gap: var(--gap-lg);
+}
+.hero-avatar {
+ width: 64px;
+ height: 64px;
+ border-radius: 50%;
+ flex-shrink: 0;
+ background:
+ linear-gradient(
+ 135deg,
+ var(--accent),
+ var(--accent2));
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-family: var(--font-head);
+ font-size: 1.4rem;
+ font-weight: 800;
+ color: #fff;
+}
+@media (min-width: 768px) {
+ .hero-avatar {
+ width: 80px;
+ height: 80px;
+ font-size: 1.8rem;
+ }
+}
+.hero-text h1 {
+ margin-bottom: 0.25rem;
+}
+.hero-role {
+ font-family: var(--font-mono);
+ font-size: 0.85rem;
+ color: var(--accent);
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ margin-bottom: 0.75rem;
+}
+.hero-bio {
+ color: var(--text-dim);
+ font-size: 0.95rem;
+ line-height: 1.8;
+ max-width: 400px;
+}
+#matrix-canvas::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background:
+ repeating-linear-gradient(
+ 0deg,
+ rgba(0, 0, 0, 0.15),
+ rgba(0, 0, 0, 0.15) 1px,
+ transparent 1px,
+ transparent 2px);
+ pointer-events: none;
+}
+.hero::before {
+ content: "";
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 600px;
+ height: 600px;
+ background:
+ radial-gradient(
+ circle,
+ rgba(168, 85, 247, 0.15) 0%,
+ transparent 70%);
+ transform: translate(-50%, -50%);
+ pointer-events: none;
+}
+@media (max-width: 768px) {
+ .hero-content {
+ flex-direction: column;
+ text-align: center;
+ }
+ .hero-bio {
+ max-width: 100%;
+ }
+}
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/card.css */
+.post-card {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 8px;
+ overflow: hidden;
+ transition: var(--transition);
+ display: flex;
+ gap: var(--gap-md);
+}
+.post-card:hover {
+ border-color: var(--accent);
+ box-shadow: 0 0 20px rgba(168, 85, 247, 0.2);
+}
+.post-card-image {
+ width: 120px;
+ height: 100px;
+ flex-shrink: 0;
+ object-fit: cover;
+ background:
+ linear-gradient(
+ 135deg,
+ var(--border),
+ var(--bg2));
+ border-right: 1px solid var(--border);
+}
+@media (min-width: 768px) {
+ .post-card-image {
+ width: 160px;
+ height: 120px;
+ }
+}
+.post-card-body {
+ padding: var(--gap-md);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ flex-grow: 1;
+}
+.post-type-badge {
+ display: inline-block;
+ font-family: var(--font-mono);
+ font-size: var(--fs-badge);
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ padding: 0.35rem 0.7rem;
+ border-radius: 20px;
+ margin-bottom: 0.5rem;
+ width: fit-content;
+}
+.post-type-badge.tech {
+ background: color-mix(in srgb, var(--color-tech) 15%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-tech) 30%, transparent);
+ color: var(--color-tech);
+}
+.post-type-badge.life {
+ background: color-mix(in srgb, var(--color-life) 15%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-life) 30%, transparent);
+ color: var(--color-life);
+}
+.post-type-badge.quote {
+ background: color-mix(in srgb, var(--color-quote) 15%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-quote) 30%, transparent);
+ color: var(--color-quote);
+}
+.post-type-badge.link {
+ background: color-mix(in srgb, var(--color-link) 15%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-link) 30%, transparent);
+ color: var(--color-link);
+}
+.post-type-badge.photo {
+ background: color-mix(in srgb, var(--color-photo) 15%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-photo) 30%, transparent);
+ color: var(--color-photo);
+}
+.post-card-title {
+ font-family: var(--font-head);
+ font-size: 1.1rem;
+ font-weight: 700;
+ line-height: 1.3;
+ margin-bottom: 0.5rem;
+ color: var(--text);
+}
+.post-card-title a {
+ color: var(--text);
+ text-decoration: none;
+}
+.post-card-title a:hover {
+ color: var(--accent);
+}
+.post-card-excerpt {
+ color: var(--text-dim);
+ font-size: 0.9rem;
+ line-height: 1.6;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ margin-bottom: 0.5rem;
+}
+.post-card-meta {
+ display: flex;
+ gap: 1rem;
+ font-family: var(--font-mono);
+ font-size: 0.75rem;
+ color: var(--muted);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+}
+.post-card.featured {
+ grid-row: span 2;
+}
+.post-card.featured .post-card-image {
+ width: 100%;
+ height: 180px;
+ border-right: none;
+ border-bottom: 1px solid var(--border);
+}
+.post-card.featured .post-card-body {
+ padding: var(--gap-lg);
+}
+@media (max-width: 768px) {
+ .post-card {
+ flex-direction: column;
+ }
+ .post-card-image {
+ width: 100%;
+ height: 150px;
+ border-right: none;
+ border-bottom: 1px solid var(--border);
+ }
+ .post-card.featured .post-card-image {
+ height: 150px;
+ }
+}
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/feed.css */
+.feed-section {
+ padding: var(--section-py-mobile) 0;
+}
+@media (min-width: 768px) {
+ .feed-section {
+ padding: var(--section-py-desktop) 0;
+ }
+}
+.feed-label {
+ font-family: var(--font-mono);
+ font-size: 0.75rem;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--accent);
+ margin-bottom: 1.5rem;
+}
+.feed-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ gap: var(--gap-md);
+ margin-bottom: var(--gap-xl);
+}
+@media (min-width: 768px) {
+ .feed-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+@media (min-width: 1200px) {
+ .feed-grid {
+ grid-template-columns: repeat(3, 1fr);
+ }
+}
+.feed-list {
+ display: flex;
+ flex-direction: column;
+ gap: var(--gap-md);
+}
+.feed-list .post-card {
+ flex-direction: row;
+}
+.filter-bar {
+ display: flex;
+ gap: var(--gap-sm);
+ margin-bottom: var(--gap-lg);
+ flex-wrap: wrap;
+}
+.filter-btn {
+ font-family: var(--font-mono);
+ font-size: var(--fs-badge);
+ padding: 0.4rem 1rem;
+ border: 1px solid var(--border);
+ border-radius: 20px;
+ background: transparent;
+ color: var(--text-dim);
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ cursor: pointer;
+ transition: var(--transition);
+}
+.filter-btn:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+}
+.filter-btn.active {
+ background: var(--accent);
+ color: #fff;
+ border-color: var(--accent);
+}
+.feed-cta {
+ display: inline-block;
+ padding: 0.75rem 1.5rem;
+ background: var(--accent);
+ color: #fff;
+ border-radius: 4px;
+ font-family: var(--font-mono);
+ font-size: var(--fs-btn);
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ text-decoration: none;
+ transition: var(--transition);
+}
+.feed-cta:hover {
+ background: var(--accent2);
+ color: var(--bg);
+}
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/code.css */
+pre {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-left: 3px solid var(--accent);
+ border-radius: 6px;
+ padding: 1rem;
+ overflow-x: auto;
+ position: relative;
+ margin: 1.5rem 0;
+}
+pre code {
+ font-family: var(--font-mono);
+ font-size: 0.9rem;
+ line-height: 1.6;
+ color: var(--text);
+}
+.highlight {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-left: 3px solid var(--accent);
+ border-radius: 6px;
+ padding: 1rem;
+ overflow-x: auto;
+ margin: 1.5rem 0;
+ position: relative;
+}
+.highlight code {
+ background: none;
+ padding: 0;
+ border-radius: 0;
+ color: inherit;
+}
+.highlight .k {
+ color: #f59e0b;
+}
+.highlight .kn {
+ color: #f59e0b;
+}
+.highlight .kp {
+ color: #f59e0b;
+}
+.highlight .kr {
+ color: #f59e0b;
+}
+.highlight .kt {
+ color: #a855f7;
+}
+.highlight .n {
+ color: #c4d6e8;
+}
+.highlight .na {
+ color: #38bdf8;
+}
+.highlight .nb {
+ color: #38bdf8;
+}
+.highlight .nc {
+ color: #a855f7;
+}
+.highlight .no {
+ color: #00ff88;
+}
+.highlight .nd {
+ color: #f59e0b;
+}
+.highlight .ni {
+ color: #a855f7;
+}
+.highlight .ne {
+ color: #f59e0b;
+}
+.highlight .nf {
+ color: #38bdf8;
+}
+.highlight .nl {
+ color: #a855f7;
+}
+.highlight .nn {
+ color: #a855f7;
+}
+.highlight .nt {
+ color: #f59e0b;
+}
+.highlight .nv {
+ color: #c4d6e8;
+}
+.highlight .s {
+ color: #00ff88;
+}
+.highlight .sa {
+ color: #00ff88;
+}
+.highlight .sb {
+ color: #00ff88;
+}
+.highlight .sc {
+ color: #00ff88;
+}
+.highlight .s1 {
+ color: #00ff88;
+}
+.highlight .s2 {
+ color: #00ff88;
+}
+.highlight .se {
+ color: #f59e0b;
+}
+.highlight .sh {
+ color: #00ff88;
+}
+.highlight .si {
+ color: #f59e0b;
+}
+.highlight .sx {
+ color: #00ff88;
+}
+.highlight .sr {
+ color: #00ff88;
+}
+.highlight .ss {
+ color: #00ff88;
+}
+.highlight .m {
+ color: #38bdf8;
+}
+.highlight .mb {
+ color: #38bdf8;
+}
+.highlight .mf {
+ color: #38bdf8;
+}
+.highlight .mh {
+ color: #38bdf8;
+}
+.highlight .mi {
+ color: #38bdf8;
+}
+.highlight .il {
+ color: #38bdf8;
+}
+.highlight .mo {
+ color: #38bdf8;
+}
+.highlight .o {
+ color: #c4d6e8;
+}
+.highlight .ow {
+ color: #a855f7;
+}
+.highlight .c {
+ color: #7a9bb8;
+}
+.highlight .c1 {
+ color: #7a9bb8;
+}
+.highlight .ch {
+ color: #7a9bb8;
+}
+.highlight .cm {
+ color: #7a9bb8;
+}
+.highlight .cp {
+ color: #f59e0b;
+}
+.highlight .cpf {
+ color: #f59e0b;
+}
+html.theme-light .highlight {
+ background: var(--surface);
+ border-left-color: var(--accent);
+}
+html.theme-light .highlight .c {
+ color: #6a7fa0;
+}
+.code-copy-btn {
+ position: absolute;
+ top: 0.75rem;
+ right: 0.75rem;
+ background: var(--accent);
+ color: #fff;
+ border: none;
+ padding: 0.4rem 0.8rem;
+ border-radius: 4px;
+ font-family: var(--font-mono);
+ font-size: 0.75rem;
+ cursor: pointer;
+ opacity: 0;
+ transition: var(--transition);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+}
+.highlight:hover .code-copy-btn,
+pre:hover .code-copy-btn {
+ opacity: 1;
+}
+.code-copy-btn:hover {
+ background: var(--accent2);
+ color: var(--bg);
+}
+.code-copy-btn.copied {
+ background: var(--accent2);
+}
+code {
+ font-family: var(--font-mono);
+ background: var(--surface);
+ padding: 0.25rem 0.5rem;
+ border-radius: 4px;
+ font-size: 0.9em;
+ color: var(--accent2);
+}
+p code {
+ border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
+}
+
+/* ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/progress-bar.css */
+.reading-progress {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 3px;
+ background:
+ linear-gradient(
+ 90deg,
+ var(--accent),
+ var(--accent2));
+ width: 0%;
+ z-index: 200;
+ transition: width 0.1s ease-out;
+}
+.article-page .reading-progress,
+.page-page .reading-progress {
+ display: block;
+}
+body:not(.scrollable) .reading-progress {
+ display: none;
+}
+
+/* <stdin> */
+html {
+ font-size: 17px;
+ scroll-behavior: smooth;
+}
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+body {
+ background-color: var(--bg);
+ color: var(--text);
+ font-family: var(--font-body);
+ font-size: var(--fs-body);
+ line-height: 1.95;
+ transition: background-color 0.2s, color 0.2s;
+}
+h1 {
+ font-family: var(--font-head);
+ font-size: var(--fs-h2);
+ font-weight: 800;
+ line-height: 1.1;
+ margin-bottom: 0.5rem;
+}
+h2 {
+ font-family: var(--font-head);
+ font-size: var(--fs-h2);
+ font-weight: 800;
+ line-height: 1.1;
+ margin: 2rem 0 1rem;
+}
+h3 {
+ font-family: var(--font-head);
+ font-size: var(--fs-h3);
+ font-weight: 800;
+ line-height: 1.2;
+ margin: 1.5rem 0 0.75rem;
+}
+h4,
+h5,
+h6 {
+ font-family: var(--font-head);
+ font-weight: 800;
+ margin: 1rem 0 0.5rem;
+}
+p {
+ margin-bottom: 1rem;
+}
+a {
+ color: var(--accent);
+ text-decoration: none;
+ transition: var(--transition);
+}
+a:hover {
+ color: var(--accent2);
+}
+.container {
+ max-width: var(--container-max);
+ margin: 0 auto;
+ padding: 0 1.5rem;
+}
+.container-narrow {
+ max-width: var(--container-narrow);
+ margin: 0 auto;
+ padding: 0 1.5rem;
+}
+main {
+ min-height: calc(100vh - 200px);
+}
+ul,
+ol {
+ margin-left: 1.5rem;
+ margin-bottom: 1rem;
+}
+li {
+ margin-bottom: 0.5rem;
+}
+code {
+ font-family: var(--font-mono);
+ background: var(--surface);
+ padding: 0.25rem 0.5rem;
+ border-radius: 4px;
+ font-size: 0.9em;
+}
+pre {
+ margin-bottom: 1rem;
+ overflow-x: auto;
+}
+pre code {
+ padding: 0;
+ background: none;
+ border-radius: 0;
+}
+:focus {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+button:focus,
+a:focus {
+ outline: 2px dashed var(--accent);
+ outline-offset: 4px;
+}
+@media (prefers-reduced-motion: reduce) {
+ * {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ scroll-behavior: auto !important;
+ }
+}
+/*# sourceMappingURL=main.css.map */
--- /dev/null
+{"version":3,"sources":["file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/variables.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/hero.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/card.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/feed.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/code.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/components/progress-bar.css","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/css/main.css"],"sourcesContent":["/* variables.css */\n\n:root {\n /* Dark theme colors (default) */\n --bg: #060b10;\n --bg2: #0c1520;\n --surface: #101e2d;\n --border: #182840;\n --accent: #a855f7;\n --accent2: #00ff88;\n --text: #c4d6e8;\n --text-dim: #7a9bb8;\n --muted: #304860;\n\n /* Type colors */\n --color-tech: #a855f7; /* purple */\n --color-life: #f59e0b; /* amber */\n --color-quote: #00ff88; /* green */\n --color-link: #38bdf8; /* cyan */\n --color-photo: #ec4899; /* pink */\n\n /* Typography */\n --font-body: 'IBM Plex Sans', system-ui, sans-serif;\n --font-mono: 'JetBrains Mono', 'Courier New', monospace;\n --font-head: 'Oxanium', sans-serif;\n\n /* Font sizes (base: 17px on html) */\n --fs-body: 0.95rem;\n --fs-nav: 0.8rem;\n --fs-badge: 0.7rem;\n --fs-btn: 0.8rem;\n --fs-h3: 1.5rem;\n --fs-h2: clamp(1.7rem, 6vw, 3rem);\n\n /* Layout */\n --container-max: 1080px;\n --container-narrow: 768px;\n --gap-sm: 0.5rem;\n --gap-md: 1.5rem;\n --gap-lg: 2.5rem;\n --gap-xl: 4rem;\n\n /* Spacing */\n --section-py-mobile: 4rem;\n --section-py-desktop: 6rem;\n --card-px-mobile: 1.5rem;\n --card-px-desktop: 2rem;\n\n /* Transitions */\n --transition: all 0.2s ease;\n --transition-slow: all 0.75s cubic-bezier(0.16,1,0.3,1);\n}\n\nhtml.theme-light {\n /* Light theme */\n --bg: #f0f4f8;\n --bg2: #e2eaf4;\n --surface: #d4dff0;\n --border: #a8bdd8;\n --accent: #7c3aed;\n --accent2: #008f5a;\n --text: #0d1b2a;\n --text-dim: #2e4a6a;\n --muted: #6888a8;\n}\n\n/* Breakpoints as CSS variables for reference */\n@media (max-width: 479px) {\n :root {\n --bp: \"mobile\";\n }\n}\n\n@media (min-width: 480px) {\n :root {\n --bp: \"sm\";\n }\n}\n\n@media (min-width: 768px) {\n :root {\n --bp: \"md\";\n }\n}\n\n@media (min-width: 1200px) {\n :root {\n --bp: \"lg\";\n }\n}\n","/* hero.css */\n.hero {\n position: relative;\n overflow: hidden;\n padding: var(--section-py-mobile) 1.5rem;\n background: var(--bg);\n border-bottom: 1px solid var(--border);\n}\n\n@media (min-width: 768px) {\n .hero {\n padding: var(--section-py-desktop) 1.5rem;\n }\n}\n\n#matrix-canvas {\n position: absolute;\n inset: 0;\n opacity: 0.13;\n pointer-events: none;\n}\n\nhtml.theme-light #matrix-canvas {\n opacity: 0.18;\n}\n\n.hero-content {\n position: relative;\n z-index: 1;\n max-width: var(--container-max);\n margin: 0 auto;\n display: flex;\n align-items: center;\n gap: var(--gap-lg);\n}\n\n.hero-avatar {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n flex-shrink: 0;\n background: linear-gradient(135deg, var(--accent), var(--accent2));\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-head);\n font-size: 1.4rem;\n font-weight: 800;\n color: #fff;\n}\n\n@media (min-width: 768px) {\n .hero-avatar {\n width: 80px;\n height: 80px;\n font-size: 1.8rem;\n }\n}\n\n.hero-text h1 {\n margin-bottom: 0.25rem;\n}\n\n.hero-role {\n font-family: var(--font-mono);\n font-size: 0.85rem;\n color: var(--accent);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n margin-bottom: 0.75rem;\n}\n\n.hero-bio {\n color: var(--text-dim);\n font-size: 0.95rem;\n line-height: 1.8;\n max-width: 400px;\n}\n\n/* Scanlines effect on canvas */\n#matrix-canvas::after {\n content: '';\n position: absolute;\n inset: 0;\n background: repeating-linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.15),\n rgba(0, 0, 0, 0.15) 1px,\n transparent 1px,\n transparent 2px\n );\n pointer-events: none;\n}\n\n/* Ambient glow behind hero */\n.hero::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 600px;\n height: 600px;\n background: radial-gradient(circle, rgba(168, 85, 247, 0.15) 0%, transparent 70%);\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n\n@media (max-width: 768px) {\n .hero-content {\n flex-direction: column;\n text-align: center;\n }\n\n .hero-bio {\n max-width: 100%;\n }\n}\n","/* card.css */\n.post-card {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n overflow: hidden;\n transition: var(--transition);\n display: flex;\n gap: var(--gap-md);\n}\n\n.post-card:hover {\n border-color: var(--accent);\n box-shadow: 0 0 20px rgba(168, 85, 247, 0.2);\n}\n\n.post-card-image {\n width: 120px;\n height: 100px;\n flex-shrink: 0;\n object-fit: cover;\n background: linear-gradient(135deg, var(--border), var(--bg2));\n border-right: 1px solid var(--border);\n}\n\n@media (min-width: 768px) {\n .post-card-image {\n width: 160px;\n height: 120px;\n }\n}\n\n.post-card-body {\n padding: var(--gap-md);\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n}\n\n.post-type-badge {\n display: inline-block;\n font-family: var(--font-mono);\n font-size: var(--fs-badge);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n padding: 0.35rem 0.7rem;\n border-radius: 20px;\n margin-bottom: 0.5rem;\n width: fit-content;\n}\n\n/* Type-specific badge colors */\n.post-type-badge.tech {\n background: color-mix(in srgb, var(--color-tech) 15%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-tech) 30%, transparent);\n color: var(--color-tech);\n}\n\n.post-type-badge.life {\n background: color-mix(in srgb, var(--color-life) 15%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-life) 30%, transparent);\n color: var(--color-life);\n}\n\n.post-type-badge.quote {\n background: color-mix(in srgb, var(--color-quote) 15%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-quote) 30%, transparent);\n color: var(--color-quote);\n}\n\n.post-type-badge.link {\n background: color-mix(in srgb, var(--color-link) 15%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-link) 30%, transparent);\n color: var(--color-link);\n}\n\n.post-type-badge.photo {\n background: color-mix(in srgb, var(--color-photo) 15%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-photo) 30%, transparent);\n color: var(--color-photo);\n}\n\n.post-card-title {\n font-family: var(--font-head);\n font-size: 1.1rem;\n font-weight: 700;\n line-height: 1.3;\n margin-bottom: 0.5rem;\n color: var(--text);\n}\n\n.post-card-title a {\n color: var(--text);\n text-decoration: none;\n}\n\n.post-card-title a:hover {\n color: var(--accent);\n}\n\n.post-card-excerpt {\n color: var(--text-dim);\n font-size: 0.9rem;\n line-height: 1.6;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n margin-bottom: 0.5rem;\n}\n\n.post-card-meta {\n display: flex;\n gap: 1rem;\n font-family: var(--font-mono);\n font-size: 0.75rem;\n color: var(--muted);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n/* Featured card in grid */\n.post-card.featured {\n grid-row: span 2;\n}\n\n.post-card.featured .post-card-image {\n width: 100%;\n height: 180px;\n border-right: none;\n border-bottom: 1px solid var(--border);\n}\n\n.post-card.featured .post-card-body {\n padding: var(--gap-lg);\n}\n\n@media (max-width: 768px) {\n .post-card {\n flex-direction: column;\n }\n\n .post-card-image {\n width: 100%;\n height: 150px;\n border-right: none;\n border-bottom: 1px solid var(--border);\n }\n\n .post-card.featured .post-card-image {\n height: 150px;\n }\n}\n","/* feed.css */\n.feed-section {\n padding: var(--section-py-mobile) 0;\n}\n\n@media (min-width: 768px) {\n .feed-section {\n padding: var(--section-py-desktop) 0;\n }\n}\n\n.feed-label {\n font-family: var(--font-mono);\n font-size: 0.75rem;\n letter-spacing: 0.15em;\n text-transform: uppercase;\n color: var(--accent);\n margin-bottom: 1.5rem;\n}\n\n.feed-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: var(--gap-md);\n margin-bottom: var(--gap-xl);\n}\n\n@media (min-width: 768px) {\n .feed-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (min-width: 1200px) {\n .feed-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n.feed-list {\n display: flex;\n flex-direction: column;\n gap: var(--gap-md);\n}\n\n.feed-list .post-card {\n flex-direction: row;\n}\n\n/* Filter bar */\n.filter-bar {\n display: flex;\n gap: var(--gap-sm);\n margin-bottom: var(--gap-lg);\n flex-wrap: wrap;\n}\n\n.filter-btn {\n font-family: var(--font-mono);\n font-size: var(--fs-badge);\n padding: 0.4rem 1rem;\n border: 1px solid var(--border);\n border-radius: 20px;\n background: transparent;\n color: var(--text-dim);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n cursor: pointer;\n transition: var(--transition);\n}\n\n.filter-btn:hover {\n border-color: var(--accent);\n color: var(--accent);\n}\n\n.filter-btn.active {\n background: var(--accent);\n color: #fff;\n border-color: var(--accent);\n}\n\n/* View all link */\n.feed-cta {\n display: inline-block;\n padding: 0.75rem 1.5rem;\n background: var(--accent);\n color: #fff;\n border-radius: 4px;\n font-family: var(--font-mono);\n font-size: var(--fs-btn);\n text-transform: uppercase;\n letter-spacing: 0.1em;\n text-decoration: none;\n transition: var(--transition);\n}\n\n.feed-cta:hover {\n background: var(--accent2);\n color: var(--bg);\n}\n","/* code.css */\npre {\n background: var(--surface);\n border: 1px solid var(--border);\n border-left: 3px solid var(--accent);\n border-radius: 6px;\n padding: 1rem;\n overflow-x: auto;\n position: relative;\n margin: 1.5rem 0;\n}\n\npre code {\n font-family: var(--font-mono);\n font-size: 0.9rem;\n line-height: 1.6;\n color: var(--text);\n}\n\n/* Chroma syntax highlighting */\n.highlight {\n background: var(--surface);\n border: 1px solid var(--border);\n border-left: 3px solid var(--accent);\n border-radius: 6px;\n padding: 1rem;\n overflow-x: auto;\n margin: 1.5rem 0;\n position: relative;\n}\n\n.highlight code {\n background: none;\n padding: 0;\n border-radius: 0;\n color: inherit;\n}\n\n/* Chroma color overrides for dark theme */\n.highlight .k { color: #f59e0b; }\n.highlight .kn { color: #f59e0b; }\n.highlight .kp { color: #f59e0b; }\n.highlight .kr { color: #f59e0b; }\n.highlight .kt { color: #a855f7; }\n.highlight .n { color: #c4d6e8; }\n.highlight .na { color: #38bdf8; }\n.highlight .nb { color: #38bdf8; }\n.highlight .nc { color: #a855f7; }\n.highlight .no { color: #00ff88; }\n.highlight .nd { color: #f59e0b; }\n.highlight .ni { color: #a855f7; }\n.highlight .ne { color: #f59e0b; }\n.highlight .nf { color: #38bdf8; }\n.highlight .nl { color: #a855f7; }\n.highlight .nn { color: #a855f7; }\n.highlight .nt { color: #f59e0b; }\n.highlight .nv { color: #c4d6e8; }\n.highlight .s { color: #00ff88; }\n.highlight .sa { color: #00ff88; }\n.highlight .sb { color: #00ff88; }\n.highlight .sc { color: #00ff88; }\n.highlight .s1 { color: #00ff88; }\n.highlight .s2 { color: #00ff88; }\n.highlight .se { color: #f59e0b; }\n.highlight .sh { color: #00ff88; }\n.highlight .si { color: #f59e0b; }\n.highlight .sx { color: #00ff88; }\n.highlight .sr { color: #00ff88; }\n.highlight .ss { color: #00ff88; }\n.highlight .m { color: #38bdf8; }\n.highlight .mb { color: #38bdf8; }\n.highlight .mf { color: #38bdf8; }\n.highlight .mh { color: #38bdf8; }\n.highlight .mi { color: #38bdf8; }\n.highlight .il { color: #38bdf8; }\n.highlight .mo { color: #38bdf8; }\n.highlight .o { color: #c4d6e8; }\n.highlight .ow { color: #a855f7; }\n.highlight .c { color: #7a9bb8; }\n.highlight .c1 { color: #7a9bb8; }\n.highlight .ch { color: #7a9bb8; }\n.highlight .cm { color: #7a9bb8; }\n.highlight .cp { color: #f59e0b; }\n.highlight .cpf { color: #f59e0b; }\n\nhtml.theme-light .highlight {\n background: var(--surface);\n border-left-color: var(--accent);\n}\n\nhtml.theme-light .highlight .c { color: #6a7fa0; }\n\n/* Copy button for code blocks */\n.code-copy-btn {\n position: absolute;\n top: 0.75rem;\n right: 0.75rem;\n background: var(--accent);\n color: #fff;\n border: none;\n padding: 0.4rem 0.8rem;\n border-radius: 4px;\n font-family: var(--font-mono);\n font-size: 0.75rem;\n cursor: pointer;\n opacity: 0;\n transition: var(--transition);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.highlight:hover .code-copy-btn,\npre:hover .code-copy-btn {\n opacity: 1;\n}\n\n.code-copy-btn:hover {\n background: var(--accent2);\n color: var(--bg);\n}\n\n.code-copy-btn.copied {\n background: var(--accent2);\n}\n\n/* Inline code */\ncode {\n font-family: var(--font-mono);\n background: var(--surface);\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.9em;\n color: var(--accent2);\n}\n\np code {\n border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);\n}\n","/* progress-bar.css */\n.reading-progress {\n position: fixed;\n top: 0;\n left: 0;\n height: 3px;\n background: linear-gradient(90deg, var(--accent), var(--accent2));\n width: 0%;\n z-index: 200;\n transition: width 0.1s ease-out;\n}\n\n/* Only show on pages with sufficient content */\n.article-page .reading-progress,\n.page-page .reading-progress {\n display: block;\n}\n\n/* Hide if no scrollable content */\nbody:not(.scrollable) .reading-progress {\n display: none;\n}\n","@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600\u0026family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,300\u0026family=Oxanium:wght@700;800\u0026display=swap');\n\n@import 'variables.css';\n@import 'components/hero.css';\n@import 'components/card.css';\n@import 'components/feed.css';\n@import 'components/code.css';\n@import 'components/progress-bar.css';\n\n/* Base Styles */\nhtml {\n font-size: 17px;\n scroll-behavior: smooth;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n background-color: var(--bg);\n color: var(--text);\n font-family: var(--font-body);\n font-size: var(--fs-body);\n line-height: 1.95;\n transition: background-color 0.2s, color 0.2s;\n}\n\n/* Typography */\nh1 {\n font-family: var(--font-head);\n font-size: var(--fs-h2);\n font-weight: 800;\n line-height: 1.1;\n margin-bottom: 0.5rem;\n}\n\nh2 {\n font-family: var(--font-head);\n font-size: var(--fs-h2);\n font-weight: 800;\n line-height: 1.1;\n margin: 2rem 0 1rem;\n}\n\nh3 {\n font-family: var(--font-head);\n font-size: var(--fs-h3);\n font-weight: 800;\n line-height: 1.2;\n margin: 1.5rem 0 0.75rem;\n}\n\nh4, h5, h6 {\n font-family: var(--font-head);\n font-weight: 800;\n margin: 1rem 0 0.5rem;\n}\n\np {\n margin-bottom: 1rem;\n}\n\na {\n color: var(--accent);\n text-decoration: none;\n transition: var(--transition);\n}\n\na:hover {\n color: var(--accent2);\n}\n\n/* Utilities */\n.container {\n max-width: var(--container-max);\n margin: 0 auto;\n padding: 0 1.5rem;\n}\n\n.container-narrow {\n max-width: var(--container-narrow);\n margin: 0 auto;\n padding: 0 1.5rem;\n}\n\nmain {\n min-height: calc(100vh - 200px);\n}\n\n/* Lists */\nul, ol {\n margin-left: 1.5rem;\n margin-bottom: 1rem;\n}\n\nli {\n margin-bottom: 0.5rem;\n}\n\ncode {\n font-family: var(--font-mono);\n background: var(--surface);\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.9em;\n}\n\npre {\n margin-bottom: 1rem;\n overflow-x: auto;\n}\n\npre code {\n padding: 0;\n background: none;\n border-radius: 0;\n}\n\n/* Focus styles for accessibility */\n:focus {\n outline: 2px solid var(--accent);\n outline-offset: 2px;\n}\n\nbutton:focus,\na:focus {\n outline: 2px dashed var(--accent);\n outline-offset: 4px;\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":"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","names":[]}
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head>
+ <meta name="generator" content="Hugo 0.159.2"><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <section class="hero">
+ <canvas id="matrix-canvas"></canvas>
+
+ <div class="hero-content">
+ <div class="hero-avatar">DM</div>
+ <div class="hero-text">
+ <h1>Danilo M.</h1>
+ <div class="hero-role">// engineer • writer • human</div>
+ <p class="hero-bio">Writing about IT, life, and the things that matter.</p>
+ </div>
+ </div>
+</section>
+
+
+ <div class="container feed-section">
+ <div class="feed-label">Latest</div>
+
+
+
+
+
+ <div class="feed-grid">
+
+ </div>
+
+ <a href="/articles/" class="feed-cta">View all articles</a>
+ </div>
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Home on danilo m.</title>
+ <link>http://localhost:1313/</link>
+ <description>Recent content in Home on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <lastBuildDate>Thu, 01 Jan 2026 00:00:00 +0000</lastBuildDate>
+ <atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Contact</title>
+ <link>http://localhost:1313/is/here/</link>
+ <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
+ <guid>http://localhost:1313/is/here/</guid>
+ <description><p>Get in touch — send me a message and I&rsquo;ll get back to you soon.</p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted -->Send<!-- raw HTML omitted --></p>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<!-- raw HTML omitted --></description>
+ </item>
+ <item>
+ <title>Post 3</title>
+ <link>http://localhost:1313/posts/post-3/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-3/</guid>
+ <description><p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.</p></description>
+ </item>
+ <item>
+ <title>Post 2</title>
+ <link>http://localhost:1313/posts/post-2/</link>
+ <pubDate>Wed, 15 Feb 2023 10:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-2/</guid>
+ <description><p>Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.</p>
<p>Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.</p></description>
+ </item>
+ <item>
+ <title>Post 1</title>
+ <link>http://localhost:1313/posts/post-1/</link>
+ <pubDate>Sun, 15 Jan 2023 09:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-1/</guid>
+ <description><p>Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.</p>
<p>Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.</p></description>
+ </item>
+ </channel>
+</rss>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Contact | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" class="active">
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" class="active">
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <article class="page-page">
+ <div class="container-narrow">
+ <h1>Contact</h1>
+ <div class="post-card-meta" style="margin-bottom: 2rem;">
+ <span>Jan 1, 2026</span>
+
+ </div>
+
+ <div class="post-content">
+ <p>Get in touch — send me a message and I’ll get back to you soon.</p>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<p><!-- raw HTML omitted -->Send<!-- raw HTML omitted --></p>
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+<!-- raw HTML omitted -->
+
+ </div>
+ </div>
+ </article>
+
+
+ <div class="container-narrow" style="margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--border);">
+ <nav class="page-nav">
+ <h3 style="margin-bottom: 1rem;">Other pages</h3>
+ <ul style="list-style: none; margin: 0;">
+
+
+
+ <li style="margin-bottom: 0.5rem;">
+ <a href="/is/here/" class="active">
+ Contact
+ </a>
+ </li>
+
+
+ </ul>
+ </nav>
+ </div>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>About | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" class="active">
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <div class="container">
+ <h1>About</h1>
+
+
+ <p>Hi, I’m Danilo. I write about tech, life, and the things that matter.</p>
+<p>This is your about page. Edit this to tell your story.</p>
+
+
+ </div>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+// filters.js
+(function() {
+ const filterBtns = document.querySelectorAll('.filter-btn');
+ const feedList = document.getElementById('articles-feed');
+ const cards = feedList ? feedList.querySelectorAll('.post-card') : [];
+
+ if (!filterBtns.length || !cards.length) return;
+
+ filterBtns.forEach(btn => {
+ btn.addEventListener('click', function() {
+ const filter = this.dataset.filter;
+
+ // Update active button
+ filterBtns.forEach(b => b.classList.remove('active'));
+ this.classList.add('active');
+
+ // Filter cards
+ cards.forEach(card => {
+ const cardType = card.querySelector('.post-type-badge')?.classList[1];
+ const matches = filter === 'all' || cardType === filter;
+ card.style.display = matches ? '' : 'none';
+ });
+
+ // Scroll to top
+ window.scrollTo({ top: 0, behavior: 'smooth' });
+ });
+ });
+})();
--- /dev/null
+(()=>{console.log("This site was generated by Hugo.");})();
--- /dev/null
+(()=>{(function(){let e="danix-theme",o="theme-dark",t="theme-light";function r(){let c=localStorage.getItem(e),n=window.matchMedia("(prefers-color-scheme: dark)").matches;a((c===null?n:c==="dark")?"dark":"light")}function a(c){let n=document.documentElement;n.classList.remove(o,t),c==="dark"?(n.classList.remove(t),localStorage.setItem(e,"dark")):(n.classList.add(t),localStorage.setItem(e,"light"))}function i(){return document.documentElement.classList.contains(t)?"light":"dark"}function d(){let n=i()==="dark"?"light":"dark";a(n),window.dispatchEvent(new CustomEvent("theme-changed",{detail:{theme:n}}))}function l(){let c=document.getElementById("theme-toggle-btn");c&&(c.addEventListener("click",d),s(),window.addEventListener("theme-changed",s))}function s(){let c=document.getElementById("theme-toggle-btn");if(c){let n=i();c.textContent=n==="dark"?"\u2600\uFE0F light":"\u{1F319} dark"}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){r(),l()}):(r(),l()),window.ThemeToggle={toggle:d,set:a,get:i}})();(function(){let e=document.getElementById("matrix-canvas");if(!e||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let o=e.getContext("2d"),t="\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F2\u30F30123456789ABCDEF<>/\\|{}[]$#@!",r=14,a,i,d;function l(){e.width=e.offsetWidth,e.height=e.offsetHeight,a=Math.floor(e.width/r)+1,i=Array.from({length:a},()=>Math.random()*-(e.height/r))}function s(){let c=document.documentElement.classList.contains("theme-light");o.fillStyle=c?"rgba(240,244,248,0.07)":"rgba(6,11,16,0.055)",o.fillRect(0,0,e.width,e.height),o.font=`${r}px "JetBrains Mono", monospace`;for(let n=0;n<a;n++){let m=t[Math.floor(Math.random()*t.length)];o.fillStyle=Math.random()>.96?c?"#008f5a":"#00ff88":c?"#7c3aed":"#a855f7",o.fillText(m,n*r,i[n]*r),i[n]*r>e.height&&Math.random()>.975&&(i[n]=Math.random()*-20),i[n]+=.5}d=requestAnimationFrame(s)}window.addEventListener("theme-changed",function(){},{passive:!0}),l(),window.addEventListener("resize",()=>{cancelAnimationFrame(d),l(),s()},{passive:!0}),document.addEventListener("visibilitychange",()=>{document.hidden?cancelAnimationFrame(d):s()}),s(),window.MatrixRain={init:l,tick:s}})();(function(){let e=document.querySelector(".reading-progress");if(!e)return;let o=document.querySelector("main");if(!o)return;function t(){let i=window.innerHeight,d=document.documentElement.scrollHeight-i,l=window.scrollY,s=d>0?l/d*100:0;e.style.width=s+"%"}o.offsetHeight>window.innerHeight*1.5&&document.body.classList.add("scrollable");let a=!1;window.addEventListener("scroll",function(){a||(requestAnimationFrame(t),a=!0,setTimeout(()=>{a=!1},100))},{passive:!0}),t()})();(function(){document.querySelectorAll("pre, .highlight").forEach(o=>{let t=document.createElement("button");t.className="code-copy-btn",t.textContent="copy",t.type="button",t.setAttribute("aria-label","Copy code");let r=o.querySelector("code"),a=r?r.textContent:o.textContent;t.addEventListener("click",async function(){try{await navigator.clipboard.writeText(a);let i=t.textContent;t.textContent="copied!",t.classList.add("copied"),setTimeout(()=>{t.textContent=i,t.classList.remove("copied")},2e3)}catch(i){console.error("Failed to copy:",i),t.textContent="error"}}),o.style.position="relative",o.appendChild(t)})})();})();
--- /dev/null
+(() => {
+ // ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/js/theme-toggle.js
+ (function() {
+ const STORAGE_KEY = "danix-theme";
+ const DARK_CLASS = "theme-dark";
+ const LIGHT_CLASS = "theme-light";
+ function init() {
+ const saved = localStorage.getItem(STORAGE_KEY);
+ const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
+ const isDark = saved === null ? prefersDark : saved === "dark";
+ applyTheme(isDark ? "dark" : "light");
+ }
+ function applyTheme(theme) {
+ const html = document.documentElement;
+ html.classList.remove(DARK_CLASS, LIGHT_CLASS);
+ if (theme === "dark") {
+ html.classList.remove(LIGHT_CLASS);
+ localStorage.setItem(STORAGE_KEY, "dark");
+ } else {
+ html.classList.add(LIGHT_CLASS);
+ localStorage.setItem(STORAGE_KEY, "light");
+ }
+ }
+ function getCurrentTheme() {
+ return document.documentElement.classList.contains(LIGHT_CLASS) ? "light" : "dark";
+ }
+ function toggleTheme() {
+ const current = getCurrentTheme();
+ const next = current === "dark" ? "light" : "dark";
+ applyTheme(next);
+ window.dispatchEvent(new CustomEvent("theme-changed", { detail: { theme: next } }));
+ }
+ function setupToggleButton() {
+ const btn = document.getElementById("theme-toggle-btn");
+ if (btn) {
+ btn.addEventListener("click", toggleTheme);
+ updateToggleButtonLabel();
+ window.addEventListener("theme-changed", updateToggleButtonLabel);
+ }
+ }
+ function updateToggleButtonLabel() {
+ const btn = document.getElementById("theme-toggle-btn");
+ if (btn) {
+ const current = getCurrentTheme();
+ btn.textContent = current === "dark" ? "\u2600\uFE0F light" : "\u{1F319} dark";
+ }
+ }
+ if (document.readyState === "loading") {
+ document.addEventListener("DOMContentLoaded", function() {
+ init();
+ setupToggleButton();
+ });
+ } else {
+ init();
+ setupToggleButton();
+ }
+ window.ThemeToggle = {
+ toggle: toggleTheme,
+ set: applyTheme,
+ get: getCurrentTheme
+ };
+ })();
+
+ // ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/js/matrix-rain.js
+ (function() {
+ const canvas = document.getElementById("matrix-canvas");
+ if (!canvas) return;
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
+ const ctx = canvas.getContext("2d");
+ const CHARS = "\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F2\u30F30123456789ABCDEF<>/\\|{}[]$#@!";
+ const FS = 14;
+ let cols, drops, raf;
+ function init() {
+ canvas.width = canvas.offsetWidth;
+ canvas.height = canvas.offsetHeight;
+ cols = Math.floor(canvas.width / FS) + 1;
+ drops = Array.from({ length: cols }, () => Math.random() * -(canvas.height / FS));
+ }
+ function tick() {
+ const light = document.documentElement.classList.contains("theme-light");
+ ctx.fillStyle = light ? "rgba(240,244,248,0.07)" : "rgba(6,11,16,0.055)";
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
+ ctx.font = `${FS}px "JetBrains Mono", monospace`;
+ for (let i = 0; i < cols; i++) {
+ const char = CHARS[Math.floor(Math.random() * CHARS.length)];
+ ctx.fillStyle = Math.random() > 0.96 ? light ? "#008f5a" : "#00ff88" : light ? "#7c3aed" : "#a855f7";
+ ctx.fillText(char, i * FS, drops[i] * FS);
+ if (drops[i] * FS > canvas.height && Math.random() > 0.975) {
+ drops[i] = Math.random() * -20;
+ }
+ drops[i] += 0.5;
+ }
+ raf = requestAnimationFrame(tick);
+ }
+ window.addEventListener("theme-changed", function() {
+ }, { passive: true });
+ init();
+ window.addEventListener("resize", () => {
+ cancelAnimationFrame(raf);
+ init();
+ tick();
+ }, { passive: true });
+ document.addEventListener("visibilitychange", () => {
+ if (document.hidden) {
+ cancelAnimationFrame(raf);
+ } else {
+ tick();
+ }
+ });
+ tick();
+ window.MatrixRain = { init, tick };
+ })();
+
+ // ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/js/progress-bar.js
+ (function() {
+ const progressBar = document.querySelector(".reading-progress");
+ if (!progressBar) return;
+ const mainContent = document.querySelector("main");
+ if (!mainContent) return;
+ function updateProgress() {
+ const windowHeight = window.innerHeight;
+ const docHeight = document.documentElement.scrollHeight - windowHeight;
+ const scrolled = window.scrollY;
+ const percent = docHeight > 0 ? scrolled / docHeight * 100 : 0;
+ progressBar.style.width = percent + "%";
+ }
+ const contentHeight = mainContent.offsetHeight;
+ if (contentHeight > window.innerHeight * 1.5) {
+ document.body.classList.add("scrollable");
+ }
+ let ticking = false;
+ window.addEventListener("scroll", function() {
+ if (!ticking) {
+ requestAnimationFrame(updateProgress);
+ ticking = true;
+ setTimeout(() => {
+ ticking = false;
+ }, 100);
+ }
+ }, { passive: true });
+ updateProgress();
+ })();
+
+ // ns-hugo-imp:/home/danix/Programming/GIT/danix2-hugo-theme/assets/js/copy-code.js
+ (function() {
+ const codeBlocks = document.querySelectorAll("pre, .highlight");
+ codeBlocks.forEach((block) => {
+ const btn = document.createElement("button");
+ btn.className = "code-copy-btn";
+ btn.textContent = "copy";
+ btn.type = "button";
+ btn.setAttribute("aria-label", "Copy code");
+ const code = block.querySelector("code");
+ const text = code ? code.textContent : block.textContent;
+ btn.addEventListener("click", async function() {
+ try {
+ await navigator.clipboard.writeText(text);
+ const originalText = btn.textContent;
+ btn.textContent = "copied!";
+ btn.classList.add("copied");
+ setTimeout(() => {
+ btn.textContent = originalText;
+ btn.classList.remove("copied");
+ }, 2e3);
+ } catch (err) {
+ console.error("Failed to copy:", err);
+ btn.textContent = "error";
+ }
+ });
+ block.style.position = "relative";
+ block.appendChild(btn);
+ });
+ })();
+})();
+//# sourceMappingURL=main.js.map
--- /dev/null
+{"version":3,"sources":["file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/js/theme-toggle.js","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/js/matrix-rain.js","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/js/progress-bar.js","file:///home/danix/Programming/GIT/danix2-hugo-theme/assets/js/copy-code.js"],"sourcesContent":["// theme-toggle.js\n(function() {\n const STORAGE_KEY = 'danix-theme';\n const DARK_CLASS = 'theme-dark';\n const LIGHT_CLASS = 'theme-light';\n\n // Initialize theme on page load\n function init() {\n const saved = localStorage.getItem(STORAGE_KEY);\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const isDark = saved === null ? prefersDark : saved === 'dark';\n\n applyTheme(isDark ? 'dark' : 'light');\n }\n\n // Apply theme to document\n function applyTheme(theme) {\n const html = document.documentElement;\n\n html.classList.remove(DARK_CLASS, LIGHT_CLASS);\n\n if (theme === 'dark') {\n html.classList.remove(LIGHT_CLASS);\n localStorage.setItem(STORAGE_KEY, 'dark');\n } else {\n html.classList.add(LIGHT_CLASS);\n localStorage.setItem(STORAGE_KEY, 'light');\n }\n }\n\n // Get current theme\n function getCurrentTheme() {\n return document.documentElement.classList.contains(LIGHT_CLASS) ? 'light' : 'dark';\n }\n\n // Toggle theme\n function toggleTheme() {\n const current = getCurrentTheme();\n const next = current === 'dark' ? 'light' : 'dark';\n applyTheme(next);\n\n // Dispatch custom event for other scripts to listen\n window.dispatchEvent(new CustomEvent('theme-changed', { detail: { theme: next } }));\n }\n\n // Setup toggle button\n function setupToggleButton() {\n const btn = document.getElementById('theme-toggle-btn');\n if (btn) {\n btn.addEventListener('click', toggleTheme);\n updateToggleButtonLabel();\n\n // Listen for theme changes to update button label\n window.addEventListener('theme-changed', updateToggleButtonLabel);\n }\n }\n\n function updateToggleButtonLabel() {\n const btn = document.getElementById('theme-toggle-btn');\n if (btn) {\n const current = getCurrentTheme();\n btn.textContent = current === 'dark' ? '☀️ light' : '🌙 dark';\n }\n }\n\n // Initialize on DOMContentLoaded\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function() {\n init();\n setupToggleButton();\n });\n } else {\n init();\n setupToggleButton();\n }\n\n // Expose to global scope for testing\n window.ThemeToggle = {\n toggle: toggleTheme,\n set: applyTheme,\n get: getCurrentTheme,\n };\n})();\n","// matrix-rain.js\n(function () {\n const canvas = document.getElementById('matrix-canvas');\n if (!canvas) return;\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n\n const ctx = canvas.getContext('2d');\n const CHARS = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン0123456789ABCDEF\u003c\u003e/\\\\|{}[]$#@!';\n const FS = 14; // font size / column width in px\n let cols, drops, raf;\n\n function init() {\n canvas.width = canvas.offsetWidth;\n canvas.height = canvas.offsetHeight;\n cols = Math.floor(canvas.width / FS) + 1;\n drops = Array.from({ length: cols }, () =\u003e Math.random() * -(canvas.height / FS));\n }\n\n function tick() {\n const light = document.documentElement.classList.contains('theme-light');\n // Fade trail: near-transparent fill each frame\n ctx.fillStyle = light ? 'rgba(240,244,248,0.07)' : 'rgba(6,11,16,0.055)';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.font = `${FS}px \"JetBrains Mono\", monospace`;\n\n for (let i = 0; i \u003c cols; i++) {\n const char = CHARS[Math.floor(Math.random() * CHARS.length)];\n // 4% chance of bright \"head\" char, otherwise use accent color\n ctx.fillStyle = Math.random() \u003e 0.96\n ? (light ? '#008f5a' : '#00ff88') // bright green head\n : (light ? '#7c3aed' : '#a855f7'); // purple trail\n ctx.fillText(char, i * FS, drops[i] * FS);\n\n if (drops[i] * FS \u003e canvas.height \u0026\u0026 Math.random() \u003e 0.975) {\n drops[i] = Math.random() * -20; // reset column randomly\n }\n drops[i] += 0.5; // slow fall speed\n }\n raf = requestAnimationFrame(tick);\n }\n\n // Listen for theme changes and reinit\n window.addEventListener('theme-changed', function() {\n // Matrix rain auto-colors based on theme-light class\n }, { passive: true });\n\n init();\n window.addEventListener('resize', () =\u003e {\n cancelAnimationFrame(raf);\n init();\n tick();\n }, { passive: true });\n\n document.addEventListener('visibilitychange', () =\u003e {\n if (document.hidden) {\n cancelAnimationFrame(raf);\n } else {\n tick();\n }\n });\n\n tick();\n\n window.MatrixRain = { init, tick };\n})();\n","// progress-bar.js\n(function() {\n const progressBar = document.querySelector('.reading-progress');\n if (!progressBar) return;\n\n // Only enable on pages with substantial content\n const mainContent = document.querySelector('main');\n if (!mainContent) return;\n\n function updateProgress() {\n // Calculate scroll percentage\n const windowHeight = window.innerHeight;\n const docHeight = document.documentElement.scrollHeight - windowHeight;\n const scrolled = window.scrollY;\n const percent = docHeight \u003e 0 ? (scrolled / docHeight) * 100 : 0;\n\n progressBar.style.width = percent + '%';\n }\n\n // Mark body as scrollable if there's significant content\n const contentHeight = mainContent.offsetHeight;\n if (contentHeight \u003e window.innerHeight * 1.5) {\n document.body.classList.add('scrollable');\n }\n\n // Use requestAnimationFrame for smooth updates\n let ticking = false;\n window.addEventListener('scroll', function() {\n if (!ticking) {\n requestAnimationFrame(updateProgress);\n ticking = true;\n setTimeout(() =\u003e { ticking = false; }, 100);\n }\n }, { passive: true });\n\n // Initial update\n updateProgress();\n})();\n","// copy-code.js\n(function() {\n // Add copy button to all code blocks\n const codeBlocks = document.querySelectorAll('pre, .highlight');\n\n codeBlocks.forEach(block =\u003e {\n // Create copy button\n const btn = document.createElement('button');\n btn.className = 'code-copy-btn';\n btn.textContent = 'copy';\n btn.type = 'button';\n btn.setAttribute('aria-label', 'Copy code');\n\n // Get code text\n const code = block.querySelector('code');\n const text = code ? code.textContent : block.textContent;\n\n // Copy on click\n btn.addEventListener('click', async function() {\n try {\n await navigator.clipboard.writeText(text);\n\n // Show feedback\n const originalText = btn.textContent;\n btn.textContent = 'copied!';\n btn.classList.add('copied');\n\n setTimeout(() =\u003e {\n btn.textContent = originalText;\n btn.classList.remove('copied');\n }, 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n btn.textContent = 'error';\n }\n });\n\n // Add button to block\n block.style.position = 'relative';\n block.appendChild(btn);\n });\n})();\n"],"mappings":"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","names":[]}
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Posts | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <div class="container">
+ <h1>Posts</h1>
+
+
+ <p>Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat.</p>
+
+
+ </div>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Post 1 | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <article class="page-page">
+ <div class="container-narrow">
+ <h1>Post 1</h1>
+ <div class="post-card-meta" style="margin-bottom: 2rem;">
+ <span>Jan 15, 2023</span>
+
+ </div>
+
+ <div class="post-content">
+ <p>Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.</p>
+<p>Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.</p>
+
+ </div>
+ </div>
+ </article>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Post 2 | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <article class="page-page">
+ <div class="container-narrow">
+ <h1>Post 2</h1>
+ <div class="post-card-meta" style="margin-bottom: 2rem;">
+ <span>Feb 15, 2023</span>
+
+ </div>
+
+ <div class="post-content">
+ <p>Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.</p>
+<p>Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.</p>
+
+ </div>
+ </div>
+ </article>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Post 3 | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <article class="page-page">
+ <div class="container-narrow">
+ <h1>Post 3</h1>
+ <div class="post-card-meta" style="margin-bottom: 2rem;">
+ <span>Mar 15, 2023</span>
+
+ </div>
+
+ <div class="post-content">
+ <p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.</p>
+<p><img src="bryce-canyon.jpg" alt="Bryce Canyon National Park"></p>
+<p>Sit excepteur do velit veniam mollit in nostrud laboris incididunt ea. Amet eu cillum ut reprehenderit culpa aliquip labore laborum amet sit sit duis. Laborum id proident nostrud dolore laborum reprehenderit quis mollit nulla amet veniam officia id id. Aliquip in deserunt qui magna duis qui pariatur officia sunt deserunt.</p>
+
+ </div>
+ </div>
+ </article>
+
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <url>
+ <loc>http://localhost:1313/is/</loc>
+ <lastmod>2026-01-01T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/articles/</loc>
+ <lastmod>2026-01-01T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/is/here/</loc>
+ <lastmod>2026-01-01T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/</loc>
+ <lastmod>2026-01-01T00:00:00+00:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/tags/blue/</loc>
+ <lastmod>2023-03-15T11:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/tags/green/</loc>
+ <lastmod>2023-03-15T11:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/posts/post-3/</loc>
+ <lastmod>2023-03-15T11:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/tags/red/</loc>
+ <lastmod>2023-03-15T11:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/tags/</loc>
+ <lastmod>2023-03-15T11:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/posts/post-2/</loc>
+ <lastmod>2023-02-15T10:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/posts/post-1/</loc>
+ <lastmod>2023-01-15T09:00:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/posts/</loc>
+ <lastmod>2023-01-01T08:30:00-07:00</lastmod>
+ </url><url>
+ <loc>http://localhost:1313/categories/</loc>
+ </url>
+</urlset>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Blue | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <h1>Blue</h1>
+
+
+ <h2><a href="/posts/post-3/">Post 3</a></h2>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Blue on danilo m.</title>
+ <link>http://localhost:1313/tags/blue/</link>
+ <description>Recent content in Blue on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <lastBuildDate>Wed, 15 Mar 2023 11:00:00 -0700</lastBuildDate>
+ <atom:link href="http://localhost:1313/tags/blue/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Post 3</title>
+ <link>http://localhost:1313/posts/post-3/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-3/</guid>
+ <description><p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.</p></description>
+ </item>
+ </channel>
+</rss>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Green | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <h1>Green</h1>
+
+
+ <h2><a href="/posts/post-3/">Post 3</a></h2>
+
+ <h2><a href="/posts/post-2/">Post 2</a></h2>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Green on danilo m.</title>
+ <link>http://localhost:1313/tags/green/</link>
+ <description>Recent content in Green on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <lastBuildDate>Wed, 15 Mar 2023 11:00:00 -0700</lastBuildDate>
+ <atom:link href="http://localhost:1313/tags/green/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Post 3</title>
+ <link>http://localhost:1313/posts/post-3/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-3/</guid>
+ <description><p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.</p></description>
+ </item>
+ <item>
+ <title>Post 2</title>
+ <link>http://localhost:1313/posts/post-2/</link>
+ <pubDate>Wed, 15 Feb 2023 10:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-2/</guid>
+ <description><p>Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.</p>
<p>Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.</p></description>
+ </item>
+ </channel>
+</rss>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Tags | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <h1>Tags</h1>
+
+
+ <h2><a href="/tags/blue/">Blue</a></h2>
+
+ <h2><a href="/tags/green/">Green</a></h2>
+
+ <h2><a href="/tags/red/">Red</a></h2>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Tags on danilo m.</title>
+ <link>http://localhost:1313/tags/</link>
+ <description>Recent content in Tags on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <lastBuildDate>Wed, 15 Mar 2023 11:00:00 -0700</lastBuildDate>
+ <atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Blue</title>
+ <link>http://localhost:1313/tags/blue/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/tags/blue/</guid>
+ <description></description>
+ </item>
+ <item>
+ <title>Green</title>
+ <link>http://localhost:1313/tags/green/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/tags/green/</guid>
+ <description></description>
+ </item>
+ <item>
+ <title>Red</title>
+ <link>http://localhost:1313/tags/red/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/tags/red/</guid>
+ <description></description>
+ </item>
+ </channel>
+</rss>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
+ <meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="Writing about IT, life, and the things that matter.">
+<meta name="theme-color" content="#060b10">
+<title>Red | danilo m.</title>
+
+
+ <link rel="stylesheet" href="/css/main.css">
+
+
+ <script src="/js/main.js"></script>
+
+
+</head>
+<body>
+ <div class="reading-progress"></div>
+ <header><div class="header-container">
+ <a href="/" class="site-title">Danilo M.</a>
+ <div class="header-controls">
+ <nav>
+ <ul>
+
+ <li>
+ <a href="/articles/" >
+ articles
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/" >
+ about
+ </a>
+ </li>
+
+ <li>
+ <a href="/is/here/" >
+ contact
+ </a>
+ </li>
+
+ </ul>
+ </nav>
+ <button id="theme-toggle-btn" class="theme-toggle" aria-label="Toggle theme">🌙 dark</button>
+ </div>
+</div>
+</header>
+ <main>
+ <h1>Red</h1>
+
+
+ <h2><a href="/posts/post-3/">Post 3</a></h2>
+
+ <h2><a href="/posts/post-2/">Post 2</a></h2>
+
+ <h2><a href="/posts/post-1/">Post 1</a></h2>
+
+</main>
+ <footer><div class="footer-container">
+ <div class="footer-content">
+ <div class="footer-copyright">
+ © 2026 Danilo M.. All rights reserved.
+ </div>
+ <nav>
+ <ul class="footer-nav">
+
+ <li><a href="/articles/">articles</a></li>
+
+ <li><a href="/is/">about</a></li>
+
+ <li><a href="/is/here/">contact</a></li>
+
+ </ul>
+ </nav>
+ </div>
+</div>
+</footer>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Red on danilo m.</title>
+ <link>http://localhost:1313/tags/red/</link>
+ <description>Recent content in Red on danilo m.</description>
+ <generator>Hugo</generator>
+ <language>en-US</language>
+ <lastBuildDate>Wed, 15 Mar 2023 11:00:00 -0700</lastBuildDate>
+ <atom:link href="http://localhost:1313/tags/red/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Post 3</title>
+ <link>http://localhost:1313/posts/post-3/</link>
+ <pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-3/</guid>
+ <description><p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.</p></description>
+ </item>
+ <item>
+ <title>Post 2</title>
+ <link>http://localhost:1313/posts/post-2/</link>
+ <pubDate>Wed, 15 Feb 2023 10:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-2/</guid>
+ <description><p>Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.</p>
<p>Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.</p></description>
+ </item>
+ <item>
+ <title>Post 1</title>
+ <link>http://localhost:1313/posts/post-1/</link>
+ <pubDate>Sun, 15 Jan 2023 09:00:00 -0700</pubDate>
+ <guid>http://localhost:1313/posts/post-1/</guid>
+ <description><p>Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.</p>
<p>Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.</p></description>
+ </item>
+ </channel>
+</rss>