From: Danilo M. Date: Sun, 5 Apr 2026 07:52:36 +0000 (+0200) Subject: fix: resolve matrix rain opacity, menu styling, and featured articles X-Git-Url: https://git.danix.xyz/?a=commitdiff_plain;h=25b879bd290528adfb47b0042749305a6a408800;p=danix2-hugo-theme.git fix: resolve matrix rain opacity, menu styling, and featured articles Issues fixed: 1. Added missing header.css and footer.css imports to main.css (fixes unstyled menu) 2. Increased matrix rain canvas opacity (0.13→0.25, 0.18→0.35) for better visibility 3. Updated home.html to display featured articles first, then latest 3 4. Removed invalid pseudo-element CSS rule on canvas element The form on /is/here should now be visible, menu properly styled, and matrix rain more prominent. Co-Authored-By: Claude Haiku 4.5 --- diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..9abed36 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,17 @@ +{ + "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/**)" + ] + } +} diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/.superpowers/brainstorm/15080-1775367116/content/theme-approaches.html b/.superpowers/brainstorm/15080-1775367116/content/theme-approaches.html new file mode 100644 index 0000000..fdb04cb --- /dev/null +++ b/.superpowers/brainstorm/15080-1775367116/content/theme-approaches.html @@ -0,0 +1,358 @@ + + +

Three theme directions for danix.xyz

+

Each preserves the fonts and colors from danixme — the difference is in personality and layout approach. Click to select.

+ +
+ + +
+
A — Hacker Terminal
+
+
A
+ +
+
アイウ01カキABC
エオ234クケBCD
カキ567コサCDE
クケ890シスDEF
+
danilo m.
+
// engineer · writer · human
+
writing about the things I learn, the things I think, and the things that move me.
+
+
+
+
+
tech
+
Understanding Kubernetes networking from scratch
+
After years of cargo-culting configs...
+
+
+
+
+
+
life
+
On slowing down in a world that won't
+
There's a particular kind of exhaustion...
+
+
+
+
Sharp edges · terminal soul · max hacker
+
+ + +
+
B — Editorial Dark
+
+
B
+ +
+
アイウ01カキABC
エオ234クケBCD
カキ567コサCDE
+
// engineer · writer · human
+
danilo m.
+
Writing about IT, life, and the things that matter. Honest takes, real learning.
+
+ +
+ +
+
+
+
life
+
On slowing down
+
+
+
+
+
+
quote
+
"The obstacle is the way"
+
+
+
+
+
Magazine grid · featured post · editorial rhythm
+
+ + +
+
C — Warm Personal
+
+
C
+ +
+
アイウ01
エオ234
カキ567
+
DM
+
+
danilo m.
+
// engineer · writer · human
+
Writing about the things I learn, think about, and find worth sharing.
+
+
+
+ all + tech + life + quotes + links + photos +
+
+
+
+
+
tech
+
Understanding Kubernetes networking from scratch
+
+
+
+
quote
+
"The obstacle is the way"
+
— Marcus Aurelius
+
+ +
+
+
Feed-first · type-colored cards · human warmth
+
+ +
diff --git a/.superpowers/brainstorm/15080-1775367116/content/waiting.html b/.superpowers/brainstorm/15080-1775367116/content/waiting.html new file mode 100644 index 0000000..f92c257 --- /dev/null +++ b/.superpowers/brainstorm/15080-1775367116/content/waiting.html @@ -0,0 +1,3 @@ +
+

Continuing in terminal...

+
\ No newline at end of file diff --git a/.superpowers/brainstorm/15080-1775367116/state/server-stopped b/.superpowers/brainstorm/15080-1775367116/state/server-stopped new file mode 100644 index 0000000..8f4a6c1 --- /dev/null +++ b/.superpowers/brainstorm/15080-1775367116/state/server-stopped @@ -0,0 +1 @@ +{"reason":"idle timeout","timestamp":1775369816592} diff --git a/.superpowers/brainstorm/15080-1775367116/state/server.log b/.superpowers/brainstorm/15080-1775367116/state/server.log new file mode 100644 index 0000000..3b34699 --- /dev/null +++ b/.superpowers/brainstorm/15080-1775367116/state/server.log @@ -0,0 +1,5 @@ +{"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"} diff --git a/.superpowers/brainstorm/15080-1775367116/state/server.pid b/.superpowers/brainstorm/15080-1775367116/state/server.pid new file mode 100644 index 0000000..2902cb9 --- /dev/null +++ b/.superpowers/brainstorm/15080-1775367116/state/server.pid @@ -0,0 +1 @@ +15088 diff --git a/assets/css/components/hero.css b/assets/css/components/hero.css index a1f93fc..9672ffd 100644 --- a/assets/css/components/hero.css +++ b/assets/css/components/hero.css @@ -16,12 +16,12 @@ #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 { @@ -77,20 +77,6 @@ html.theme-light #matrix-canvas { 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 { diff --git a/assets/css/main.css b/assets/css/main.css index 3c12d22..518e749 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -1,6 +1,8 @@ @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'; diff --git a/assets/jsconfig.json b/assets/jsconfig.json new file mode 100644 index 0000000..377218c --- /dev/null +++ b/assets/jsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "*": [ + "*" + ] + } + } +} \ No newline at end of file diff --git a/layouts/home.html b/layouts/home.html index 4eed7ad..0beae1f 100644 --- a/layouts/home.html +++ b/layouts/home.html @@ -2,16 +2,28 @@ {{ partial "hero.html" . }}
-
Latest
- {{ $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 }}
- {{ 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 }} +
Featured
+ {{ 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 }}
Latest
{{ else }}
Latest
{{ 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 }}
diff --git a/public/articles/index.html b/public/articles/index.html new file mode 100644 index 0000000..9d424dd --- /dev/null +++ b/public/articles/index.html @@ -0,0 +1,95 @@ + + + + + + + +Articles | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+

Articles

+ + +
+ + + + + + +
+ +
+ +
+ +
+ + + + + +
+
+
+ + diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 0000000..fc9956a --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,75 @@ + + + + + + + +Categories | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+

Categories

+ + +
+
+
+ + diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..f36f245 --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,11 @@ + + + + Categories on danilo m. + http://localhost:1313/categories/ + Recent content in Categories on danilo m. + Hugo + en-US + + + diff --git a/public/css/main.30bbabcf0c588c3c13cbe24430d7aa6226315a94faf09d877dd441b3ebf03774.css b/public/css/main.30bbabcf0c588c3c13cbe24430d7aa6226315a94faf09d877dd441b3ebf03774.css new file mode 100644 index 0000000..4d80946 --- /dev/null +++ b/public/css/main.30bbabcf0c588c3c13cbe24430d7aa6226315a94faf09d877dd441b3ebf03774.css @@ -0,0 +1 @@ +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} diff --git a/public/css/main.3abe95debec71c071dca144ff88e0ce1f7c17e0c6cc9f1a0138ae45683de8c86.css b/public/css/main.3abe95debec71c071dca144ff88e0ce1f7c17e0c6cc9f1a0138ae45683de8c86.css new file mode 100644 index 0000000..14496ee --- /dev/null +++ b/public/css/main.3abe95debec71c071dca144ff88e0ce1f7c17e0c6cc9f1a0138ae45683de8c86.css @@ -0,0 +1 @@ +@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}} diff --git a/public/css/main.5c9869e05d53e10d15258a314b452f5a95242f4e39dd052c90b7d7b5619c40c4.css b/public/css/main.5c9869e05d53e10d15258a314b452f5a95242f4e39dd052c90b7d7b5619c40c4.css new file mode 100644 index 0000000..47a344e --- /dev/null +++ b/public/css/main.5c9869e05d53e10d15258a314b452f5a95242f4e39dd052c90b7d7b5619c40c4.css @@ -0,0 +1 @@ +@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}} diff --git a/public/css/main.8337d7f7e0fbf6083195dbb6bd8ad102187face3b194ff449dc78376ca12e014.css b/public/css/main.8337d7f7e0fbf6083195dbb6bd8ad102187face3b194ff449dc78376ca12e014.css new file mode 100644 index 0000000..055b01b --- /dev/null +++ b/public/css/main.8337d7f7e0fbf6083195dbb6bd8ad102187face3b194ff449dc78376ca12e014.css @@ -0,0 +1 @@ +@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}} diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..62ed94d --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,763 @@ +@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; +} + +/* */ +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 */ diff --git a/public/css/main.css.map b/public/css/main.css.map new file mode 100644 index 0000000..3009431 --- /dev/null +++ b/public/css/main.css.map @@ -0,0 +1 @@ +{"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 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..67f8b77 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..3a4a913 --- /dev/null +++ b/public/index.html @@ -0,0 +1,100 @@ + + + + + + + + +danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+ + +
+
DM
+
+

Danilo M.

+
// engineer • writer • human
+

Writing about IT, life, and the things that matter.

+
+
+
+ + +
+
Latest
+ + + + + +
+ +
+ + View all articles +
+
+
+
+ + diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..0eb3cb4 --- /dev/null +++ b/public/index.xml @@ -0,0 +1,40 @@ + + + + Home on danilo m. + http://localhost:1313/ + Recent content in Home on danilo m. + Hugo + en-US + Thu, 01 Jan 2026 00:00:00 +0000 + + + Contact + http://localhost:1313/is/here/ + Thu, 01 Jan 2026 00:00:00 +0000 + http://localhost:1313/is/here/ + <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 --> + + + Post 3 + http://localhost:1313/posts/post-3/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/posts/post-3/ + <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> + + + Post 2 + http://localhost:1313/posts/post-2/ + Wed, 15 Feb 2023 10:00:00 -0700 + http://localhost:1313/posts/post-2/ + <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> + + + Post 1 + http://localhost:1313/posts/post-1/ + Sun, 15 Jan 2023 09:00:00 -0700 + http://localhost:1313/posts/post-1/ + <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> + + + diff --git a/public/is/here/index.html b/public/is/here/index.html new file mode 100644 index 0000000..ca584a5 --- /dev/null +++ b/public/is/here/index.html @@ -0,0 +1,114 @@ + + + + + + + +Contact | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+
+

Contact

+
+ Jan 1, 2026 + +
+ +
+

Get in touch — send me a message and I’ll get back to you soon.

+ + + + +

Send

+ + + + +
+
+
+ + +
+ +
+ +
+
+
+ + diff --git a/public/is/index.html b/public/is/index.html new file mode 100644 index 0000000..00b5b13 --- /dev/null +++ b/public/is/index.html @@ -0,0 +1,83 @@ + + + + + + + +About | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+

About

+ + +

Hi, I’m Danilo. I write about tech, life, and the things that matter.

+

This is your about page. Edit this to tell your story.

+ + +
+ + +
+
+
+ + diff --git a/public/js/filters.38212ecd54ff7f1fdebf2aebe32e8c248382e80f93dae0761ebbbd03ca28dc5b.js b/public/js/filters.38212ecd54ff7f1fdebf2aebe32e8c248382e80f93dae0761ebbbd03ca28dc5b.js new file mode 100644 index 0000000..64d9c57 --- /dev/null +++ b/public/js/filters.38212ecd54ff7f1fdebf2aebe32e8c248382e80f93dae0761ebbbd03ca28dc5b.js @@ -0,0 +1,28 @@ +// 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' }); + }); + }); +})(); diff --git a/public/js/main.23cd0c7d837263b9eaeb96ee2d9ccfa2969daa3fa00fa1c1fe8701a9b87251a1.js b/public/js/main.23cd0c7d837263b9eaeb96ee2d9ccfa2969daa3fa00fa1c1fe8701a9b87251a1.js new file mode 100644 index 0000000..4e24393 --- /dev/null +++ b/public/js/main.23cd0c7d837263b9eaeb96ee2d9ccfa2969daa3fa00fa1c1fe8701a9b87251a1.js @@ -0,0 +1 @@ +(()=>{console.log("This site was generated by Hugo.");})(); diff --git a/public/js/main.55ed9b054bac537d7aab80112d090a8b88bbcaae5dec86c26009f393fd2d213d.js b/public/js/main.55ed9b054bac537d7aab80112d090a8b88bbcaae5dec86c26009f393fd2d213d.js new file mode 100644 index 0000000..0dadf45 --- /dev/null +++ b/public/js/main.55ed9b054bac537d7aab80112d090a8b88bbcaae5dec86c26009f393fd2d213d.js @@ -0,0 +1 @@ +(()=>{(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.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)})})();})(); diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 0000000..c47a5b8 --- /dev/null +++ b/public/js/main.js @@ -0,0 +1,175 @@ +(() => { + // 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 diff --git a/public/js/main.js.map b/public/js/main.js.map new file mode 100644 index 0000000..5e4682a --- /dev/null +++ b/public/js/main.js.map @@ -0,0 +1 @@ +{"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 diff --git a/public/posts/index.html b/public/posts/index.html new file mode 100644 index 0000000..47d0691 --- /dev/null +++ b/public/posts/index.html @@ -0,0 +1,82 @@ + + + + + + + +Posts | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+

Posts

+ + +

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.

+ + +
+ + +
+
+
+ + diff --git a/public/posts/post-1/index.html b/public/posts/post-1/index.html new file mode 100644 index 0000000..129968f --- /dev/null +++ b/public/posts/post-1/index.html @@ -0,0 +1,89 @@ + + + + + + + +Post 1 | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+
+

Post 1

+
+ Jan 15, 2023 + +
+ +
+

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.

+

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.

+ +
+
+
+ + +
+
+
+ + diff --git a/public/posts/post-2/index.html b/public/posts/post-2/index.html new file mode 100644 index 0000000..9a56e90 --- /dev/null +++ b/public/posts/post-2/index.html @@ -0,0 +1,89 @@ + + + + + + + +Post 2 | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+
+

Post 2

+
+ Feb 15, 2023 + +
+ +
+

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.

+

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.

+ +
+
+
+ + +
+
+
+ + diff --git a/public/posts/post-3/bryce-canyon.jpg b/public/posts/post-3/bryce-canyon.jpg new file mode 100644 index 0000000..9a923be Binary files /dev/null and b/public/posts/post-3/bryce-canyon.jpg differ diff --git a/public/posts/post-3/index.html b/public/posts/post-3/index.html new file mode 100644 index 0000000..7322f06 --- /dev/null +++ b/public/posts/post-3/index.html @@ -0,0 +1,90 @@ + + + + + + + +Post 3 | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+
+
+

Post 3

+
+ Mar 15, 2023 + +
+ +
+

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.

+

Bryce Canyon National Park

+

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.

+ +
+
+
+ + +
+
+
+ + diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..a8f827f --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,43 @@ + + + + http://localhost:1313/is/ + 2026-01-01T00:00:00+00:00 + + http://localhost:1313/articles/ + 2026-01-01T00:00:00+00:00 + + http://localhost:1313/is/here/ + 2026-01-01T00:00:00+00:00 + + http://localhost:1313/ + 2026-01-01T00:00:00+00:00 + + http://localhost:1313/tags/blue/ + 2023-03-15T11:00:00-07:00 + + http://localhost:1313/tags/green/ + 2023-03-15T11:00:00-07:00 + + http://localhost:1313/posts/post-3/ + 2023-03-15T11:00:00-07:00 + + http://localhost:1313/tags/red/ + 2023-03-15T11:00:00-07:00 + + http://localhost:1313/tags/ + 2023-03-15T11:00:00-07:00 + + http://localhost:1313/posts/post-2/ + 2023-02-15T10:00:00-07:00 + + http://localhost:1313/posts/post-1/ + 2023-01-15T09:00:00-07:00 + + http://localhost:1313/posts/ + 2023-01-01T08:30:00-07:00 + + http://localhost:1313/categories/ + + diff --git a/public/tags/blue/index.html b/public/tags/blue/index.html new file mode 100644 index 0000000..8ed343b --- /dev/null +++ b/public/tags/blue/index.html @@ -0,0 +1,77 @@ + + + + + + + +Blue | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+

Blue

+ + +

Post 3

+ +
+
+
+ + diff --git a/public/tags/blue/index.xml b/public/tags/blue/index.xml new file mode 100644 index 0000000..aa9747f --- /dev/null +++ b/public/tags/blue/index.xml @@ -0,0 +1,19 @@ + + + + Blue on danilo m. + http://localhost:1313/tags/blue/ + Recent content in Blue on danilo m. + Hugo + en-US + Wed, 15 Mar 2023 11:00:00 -0700 + + + Post 3 + http://localhost:1313/posts/post-3/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/posts/post-3/ + <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> + + + diff --git a/public/tags/green/index.html b/public/tags/green/index.html new file mode 100644 index 0000000..025cdee --- /dev/null +++ b/public/tags/green/index.html @@ -0,0 +1,79 @@ + + + + + + + +Green | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+

Green

+ + +

Post 3

+ +

Post 2

+ +
+
+
+ + diff --git a/public/tags/green/index.xml b/public/tags/green/index.xml new file mode 100644 index 0000000..2f9098a --- /dev/null +++ b/public/tags/green/index.xml @@ -0,0 +1,26 @@ + + + + Green on danilo m. + http://localhost:1313/tags/green/ + Recent content in Green on danilo m. + Hugo + en-US + Wed, 15 Mar 2023 11:00:00 -0700 + + + Post 3 + http://localhost:1313/posts/post-3/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/posts/post-3/ + <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> + + + Post 2 + http://localhost:1313/posts/post-2/ + Wed, 15 Feb 2023 10:00:00 -0700 + http://localhost:1313/posts/post-2/ + <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> + + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..ce1a253 --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,81 @@ + + + + + + + +Tags | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+

Tags

+ + +

Blue

+ +

Green

+ +

Red

+ +
+
+
+ + diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..3a78b22 --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,33 @@ + + + + Tags on danilo m. + http://localhost:1313/tags/ + Recent content in Tags on danilo m. + Hugo + en-US + Wed, 15 Mar 2023 11:00:00 -0700 + + + Blue + http://localhost:1313/tags/blue/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/tags/blue/ + + + + Green + http://localhost:1313/tags/green/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/tags/green/ + + + + Red + http://localhost:1313/tags/red/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/tags/red/ + + + + diff --git a/public/tags/red/index.html b/public/tags/red/index.html new file mode 100644 index 0000000..7617dd6 --- /dev/null +++ b/public/tags/red/index.html @@ -0,0 +1,81 @@ + + + + + + + +Red | danilo m. + + + + + + + + + + +
+
+ Danilo M. +
+ + +
+
+
+
+

Red

+ + +

Post 3

+ +

Post 2

+ +

Post 1

+ +
+
+
+ + diff --git a/public/tags/red/index.xml b/public/tags/red/index.xml new file mode 100644 index 0000000..84e6c56 --- /dev/null +++ b/public/tags/red/index.xml @@ -0,0 +1,33 @@ + + + + Red on danilo m. + http://localhost:1313/tags/red/ + Recent content in Red on danilo m. + Hugo + en-US + Wed, 15 Mar 2023 11:00:00 -0700 + + + Post 3 + http://localhost:1313/posts/post-3/ + Wed, 15 Mar 2023 11:00:00 -0700 + http://localhost:1313/posts/post-3/ + <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> + + + Post 2 + http://localhost:1313/posts/post-2/ + Wed, 15 Feb 2023 10:00:00 -0700 + http://localhost:1313/posts/post-2/ + <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> + + + Post 1 + http://localhost:1313/posts/post-1/ + Sun, 15 Jan 2023 09:00:00 -0700 + http://localhost:1313/posts/post-1/ + <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> + + +