diff --git a/assets/style.css b/assets/style.css
index c29601b..63e0ff9 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -1,182 +1,346 @@
-:root {
- --bg: #1e1e2e;
- --surface: #313244;
- --border: #45475a;
- --text: #cdd6f4;
- --muted: #6c7086;
- --accent: #89b4fa;
- --accent-dim: #1d2a3f;
- --green: #a6e3a1;
- --red: #f38ba8;
- --font-mono: 'JetBrains Mono', 'Fira Code', monospace;
- --font-sans: system-ui, -apple-system, sans-serif;
-}
-
-* { box-sizing: border-box; margin: 0; padding: 0; }
-
+/* === CRT Base === */
body {
- background: var(--bg);
- color: var(--text);
- font-family: var(--font-sans);
- font-size: 16px;
- line-height: 1.6;
- min-height: 100vh;
+ background-color: black;
+ background-image: radial-gradient(rgba(0, 150, 0, 0.75), black 120%);
+ background-attachment: fixed;
+ background-size: cover;
+ background-repeat: no-repeat;
+ min-height: 100vh;
+ margin: 0;
+ overflow: auto;
+ padding: 0;
+ color: white;
+ font:
+ 1rem Inconsolata,
+ monospace;
+ text-shadow: 0 0 5px #c8c8c8;
}
-a { color: var(--accent); text-decoration: none; }
-a:hover { text-decoration: underline; }
+body::after {
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100vh;
+ 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;
+ z-index: 9999;
+}
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+::selection {
+ background: #0080ff;
+ text-shadow: none;
+}
+
+/* === Links === */
+a {
+ color: white;
+ text-decoration: none;
+}
+a:hover {
+ color: #0f0;
+ text-shadow: 0 0 8px #0f0;
+}
+
+/* === Header === */
header {
- background: var(--surface);
- border-bottom: 1px solid var(--border);
- padding: 0.75rem 1rem;
- display: flex;
- align-items: center;
- gap: 0.5rem;
- flex-wrap: wrap;
+ padding: 0.75rem 1rem;
+ border-bottom: 1px dashed #0a0;
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ flex-wrap: wrap;
}
-header a { color: var(--text); font-weight: 600; }
-header .sep { color: var(--muted); }
+.breadcrumb {
+ display: flex;
+ align-items: center;
+ gap: 0.25rem;
+ flex-wrap: wrap;
+ flex: 1;
+}
-.breadcrumb { display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; flex: 1; }
-.breadcrumb a { color: var(--accent); }
+.sep {
+ color: #060;
+}
.edit-btn {
- background: var(--accent-dim);
- border: 1px solid var(--accent);
- color: var(--accent);
- padding: 0.25rem 0.75rem;
- border-radius: 4px;
- font-size: 0.875rem;
- cursor: pointer;
- text-decoration: none;
- white-space: nowrap;
+ background: none;
+ border: none;
+ color: white;
+ font: inherit;
+ cursor: pointer;
+ padding: 0;
+ text-decoration: none;
+ white-space: nowrap;
}
-.edit-btn:hover { background: var(--accent); color: var(--bg); text-decoration: none; }
-
-main { max-width: 860px; margin: 0 auto; padding: 1.5rem 1rem; }
-
-.content { margin-bottom: 2rem; }
-
-/* Markdown rendered content */
-.content h1, .content h2, .content h3,
-.content h4, .content h5, .content h6 {
- margin: 1.25rem 0 0.5rem;
- line-height: 1.3;
+.edit-btn::before {
+ content: "[";
+}
+.edit-btn::after {
+ content: "]";
+}
+.edit-btn:hover {
+ color: #0f0;
+ text-shadow: 0 0 8px #0f0;
+}
+
+/* === Main === */
+main {
+ max-width: 860px;
+ margin: 0 auto;
+ padding: 1.5rem 1rem;
+}
+
+/* === Markdown content === */
+.content {
+ margin-bottom: 2rem;
+}
+
+.content h1,
+.content h2,
+.content h3,
+.content h4,
+.content h5,
+.content h6 {
+ color: white;
+ margin: 1.25rem 0 0.5rem;
+ line-height: 1.3;
+}
+.content h1 {
+ font-size: 1.75rem;
+ border-bottom: 1px dashed #0a0;
+ padding-bottom: 0.25rem;
+}
+.content h2 {
+ font-size: 1.4rem;
+}
+.content h3 {
+ font-size: 1.15rem;
+}
+.content p {
+ margin: 0.75rem 0;
+}
+.content ul,
+.content ol {
+ margin: 0.75rem 0 0.75rem 1.5rem;
+}
+.content li {
+ margin: 0.25rem 0;
}
-.content h1 { font-size: 1.75rem; border-bottom: 1px solid var(--border); padding-bottom: 0.25rem; }
-.content h2 { font-size: 1.4rem; }
-.content h3 { font-size: 1.15rem; }
-.content p { margin: 0.75rem 0; }
-.content ul, .content ol { margin: 0.75rem 0 0.75rem 1.5rem; }
-.content li { margin: 0.25rem 0; }
.content blockquote {
- border-left: 3px solid var(--accent);
- padding: 0.25rem 1rem;
- color: var(--muted);
- margin: 0.75rem 0;
+ border-left: 3px solid #0a0;
+ padding: 0.25rem 1rem;
+ color: #888;
+ margin: 0.75rem 0;
}
.content code {
- font-family: var(--font-mono);
- font-size: 0.875em;
- background: var(--surface);
- padding: 0.1em 0.35em;
- border-radius: 3px;
+ font-family: Inconsolata, monospace;
+ font-size: 0.875em;
+ background: #001a00;
+ padding: 0.1em 0.35em;
}
.content pre {
- background: var(--surface);
- border: 1px solid var(--border);
- border-radius: 6px;
- padding: 1rem;
- overflow-x: auto;
- margin: 0.75rem 0;
+ background: #001a00;
+ border: 1px solid #0a0;
+ padding: 1rem;
+ overflow-x: auto;
+ margin: 0.75rem 0;
+}
+.content pre code {
+ background: none;
+ padding: 0;
}
-.content pre code { background: none; padding: 0; }
.content table {
- width: 100%;
- border-collapse: collapse;
- margin: 0.75rem 0;
- font-size: 0.9rem;
+ width: 100%;
+ border-collapse: collapse;
+ margin: 0.75rem 0;
+ font-size: 0.9rem;
}
-.content th, .content td {
- border: 1px solid var(--border);
- padding: 0.4rem 0.75rem;
- text-align: left;
+.content th,
+.content td {
+ border: 1px solid #0a0;
+ padding: 0.4rem 0.75rem;
+ text-align: left;
+}
+.content th {
+ background: #001a00;
+ color: white;
+}
+.content hr {
+ border: none;
+ border-top: 1px dashed #0a0;
+ margin: 1.5rem 0;
+}
+.content img {
+ max-width: 100%;
}
-.content th { background: var(--surface); }
-.content hr { border: none; border-top: 1px solid var(--border); margin: 1.5rem 0; }
-.content img { max-width: 100%; border-radius: 4px; }
-/* File/folder listing */
-.listing { border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
+/* === File listing === */
+.listing {
+ border: 1px solid #0a0;
+}
.listing-header {
- background: var(--surface);
- padding: 0.5rem 1rem;
- font-size: 0.8rem;
- text-transform: uppercase;
- letter-spacing: 0.05em;
- color: var(--muted);
+ padding: 0.5rem 1rem;
+ font-size: 0.8rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: white;
+ border-bottom: 1px solid #0a0;
}
.listing-item {
- display: flex;
- align-items: center;
- gap: 0.75rem;
- padding: 0.6rem 1rem;
- border-top: 1px solid var(--border);
- font-size: 0.95rem;
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ padding: 0.6rem 1rem;
+ border-top: 1px solid #060;
+ font-size: 0.95rem;
+}
+.listing-item:hover {
+ background: #001a00;
+}
+.listing-item .icon {
+ width: 1.25rem;
+ text-align: center;
+ flex-shrink: 0;
+ text-shadow: none;
+}
+.listing-item a {
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: white;
+}
+.listing-item .meta {
+ color: #888;
+ font-size: 0.8rem;
+ white-space: nowrap;
+ text-shadow: none;
}
-.listing-item:hover { background: var(--surface); }
-.listing-item .icon { font-size: 1rem; width: 1.25rem; text-align: center; flex-shrink: 0; }
-.listing-item a { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
-.listing-item .meta { color: var(--muted); font-size: 0.8rem; white-space: nowrap; }
-/* Edit form */
-.edit-form { display: flex; flex-direction: column; gap: 1rem; }
-.edit-form textarea {
- width: 100%;
- min-height: 60vh;
- background: var(--surface);
- border: 1px solid var(--border);
- border-radius: 6px;
- color: var(--text);
- font-family: var(--font-mono);
- font-size: 0.9rem;
- line-height: 1.6;
- padding: 1rem;
- resize: vertical;
- outline: none;
+/* === Edit form === */
+.edit-form {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
}
-.edit-form textarea:focus { border-color: var(--accent); }
-.form-actions { display: flex; gap: 0.75rem; }
+
+textarea {
+ width: 100%;
+ min-height: 60vh;
+ background: #000;
+ border: 1px solid #0a0;
+ color: white;
+ font: inherit;
+ font-size: 0.9rem;
+ line-height: 1.6;
+ padding: 1rem;
+ resize: vertical;
+ outline: none;
+ box-sizing: border-box;
+}
+textarea:focus {
+ border-color: #0f0;
+ box-shadow: 0 0 5px #0a0;
+}
+
+.form-actions {
+ display: flex;
+ gap: 0.75rem;
+}
+
.btn-save {
- background: var(--accent);
- color: var(--bg);
- border: none;
- padding: 0.6rem 1.5rem;
- border-radius: 4px;
- font-size: 1rem;
- font-weight: 600;
- cursor: pointer;
+ background: none;
+ border: none;
+ color: white;
+ font: inherit;
+ cursor: pointer;
+ padding: 0;
}
-.btn-save:hover { opacity: 0.9; }
+.btn-save::before {
+ content: "[";
+}
+.btn-save::after {
+ content: "]";
+}
+.btn-save:hover {
+ color: #0f0;
+ text-shadow: 0 0 8px #0f0;
+}
+
.btn-cancel {
- background: transparent;
- border: 1px solid var(--border);
- color: var(--muted);
- padding: 0.6rem 1.25rem;
- border-radius: 4px;
- font-size: 1rem;
- cursor: pointer;
- text-decoration: none;
- display: inline-block;
+ background: none;
+ border: none;
+ color: #888;
+ font: inherit;
+ cursor: pointer;
+ padding: 0;
+ text-decoration: none;
+ display: inline-block;
+}
+.btn-cancel::before {
+ content: "[";
+}
+.btn-cancel::after {
+ content: "]";
+}
+.btn-cancel:hover {
+ color: white;
+ text-shadow: none;
}
-.btn-cancel:hover { border-color: var(--text); color: var(--text); text-decoration: none; }
-.empty { color: var(--muted); font-style: italic; padding: 1rem; text-align: center; }
+/* === Empty state === */
+.empty {
+ color: #666;
+ font-style: italic;
+ padding: 1rem;
+ text-align: center;
+}
+/* === hr === */
+hr {
+ border: none;
+ border-top: 1px dashed #0a0;
+ margin: 1rem 0;
+}
+
+/* === Scrollbars === */
+::-webkit-scrollbar {
+ width: 6px;
+}
+::-webkit-scrollbar-track {
+ background: #111;
+}
+::-webkit-scrollbar-thumb {
+ background: #0a0;
+}
+::-webkit-scrollbar-thumb:hover {
+ background: #0f0;
+}
+
+/* === Responsive === */
@media (max-width: 600px) {
- header { padding: 0.5rem 0.75rem; }
- main { padding: 1rem 0.75rem; }
- .edit-form textarea { min-height: 50vh; }
+ header {
+ padding: 0.5rem 0.75rem;
+ }
+ main {
+ padding: 1rem 0.75rem;
+ }
+ textarea {
+ min-height: 50vh;
+ }
}
diff --git a/main.go b/main.go
index c30ec6e..4dc8cd5 100644
--- a/main.go
+++ b/main.go
@@ -44,7 +44,7 @@ var tmpl = template.Must(template.New("").Parse(`
~
{{range .Crumbs}}/{{.Name}}{{end}}
- {{if .CanEdit}}Edit{{end}}
+ {{if .CanEdit}}EDIT{{end}}
{{if .EditMode}}
@@ -306,4 +306,3 @@ func pageTitle(urlPath string) string {
parts := strings.Split(strings.Trim(urlPath, "/"), "/")
return parts[len(parts)-1]
}
-