aboutsummaryrefslogtreecommitdiffstats
path: root/assets/css/pages
diff options
context:
space:
mode:
authorsillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
committersillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
commit898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch)
tree85c6ee5ad58b860144551184d4cf86b560c62b91 /assets/css/pages
downloadwww-main.tar.gz
www-main.zip
import live www.sillylaird.ca webrootHEADmain
Diffstat (limited to '')
-rw-r--r--assets/css/pages/404.css12
-rw-r--r--assets/css/pages/50x.css9
-rw-r--r--assets/css/pages/admin.css392
-rw-r--r--assets/css/pages/articles-2023-04-10.css1
-rw-r--r--assets/css/pages/articles-2023-04-10_jp.css1
-rw-r--r--assets/css/pages/articles-2023-04-10_zh.css1
-rw-r--r--assets/css/pages/articles-runescape.css1
-rw-r--r--assets/css/pages/articles-runescape_jp.css1
-rw-r--r--assets/css/pages/articles-runescape_zh.css1
-rw-r--r--assets/css/pages/bookmarks.css85
-rw-r--r--assets/css/pages/changelog.css25
-rw-r--r--assets/css/pages/collection.css290
-rw-r--r--assets/css/pages/computers.css102
-rw-r--r--assets/css/pages/guestbook-form.css58
-rw-r--r--assets/css/pages/guestbook_jp.css79
-rw-r--r--assets/css/pages/guestbook_zh.css79
-rw-r--r--assets/css/pages/hitcounter.css7
-rw-r--r--assets/css/pages/journal-index.css3
-rw-r--r--assets/css/pages/journal-index_jp.css3
-rw-r--r--assets/css/pages/journal-index_zh.css3
-rw-r--r--assets/css/pages/links.css22
-rw-r--r--assets/css/pages/links_jp.css22
-rw-r--r--assets/css/pages/links_zh.css22
-rw-r--r--assets/css/pages/motd.css51
-rw-r--r--assets/css/pages/mstartpage-index.css341
-rw-r--r--assets/css/pages/vinyls.css14
26 files changed, 1625 insertions, 0 deletions
diff --git a/assets/css/pages/404.css b/assets/css/pages/404.css
new file mode 100644
index 0000000..7939cc1
--- /dev/null
+++ b/assets/css/pages/404.css
@@ -0,0 +1,12 @@
+/* Minimal fallback if CSS fails to load */
+ body{margin:0;background:#ffd;color:#000;font-family:system-ui,Segoe UI,Arial,sans-serif;line-height:1.6;}
+ .wrap{max-width:960px;margin:0 auto;padding:1.35rem 1rem 2.5rem;}
+ .card{border:1px solid #caa;border-radius:6px;padding:1rem;background:#ffd;}
+ .top{display:flex;gap:12px;align-items:center;margin-bottom:1rem;}
+ .top img{width:48px;height:48px;border:2px solid #000;border-radius:6px;}
+ .top a:hover img{border-color:#d22;}
+ a{color:#d22;text-decoration:none;transition:0.1s;}
+ a:hover{background:#d22;color:#000 !important;}
+ .muted{color:#333;font-size:.9rem;}
+ .links{margin:1rem 0 0 0;}
+ .links a{display:inline-block;margin:0 .25rem .5rem 0;padding:2px 4px;border-radius:4px;}
diff --git a/assets/css/pages/50x.css b/assets/css/pages/50x.css
new file mode 100644
index 0000000..cc573de
--- /dev/null
+++ b/assets/css/pages/50x.css
@@ -0,0 +1,9 @@
+body{margin:0;background:#ffd;color:#000;font-family:system-ui,Segoe UI,Arial,sans-serif;line-height:1.6;}
+ .wrap{max-width:960px;margin:0 auto;padding:1.35rem 1rem 2.5rem;}
+ .card{border:1px solid #caa;border-radius:6px;padding:1rem;background:#ffd;}
+ .top{display:flex;gap:12px;align-items:center;margin-bottom:1rem;}
+ .top img{width:48px;height:48px;border:2px solid #000;border-radius:6px;}
+ .top a:hover img{border-color:#d22;}
+ a{color:#d22;text-decoration:none;transition:0.1s;}
+ a:hover{background:#d22;color:#000 !important;}
+ .muted{color:#333;font-size:.9rem;}
diff --git a/assets/css/pages/admin.css b/assets/css/pages/admin.css
new file mode 100644
index 0000000..6262433
--- /dev/null
+++ b/assets/css/pages/admin.css
@@ -0,0 +1,392 @@
+/* Unified admin panel — terminal theme helpers */
+
+.admin-tabs {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--space-xs);
+ margin: 0 0 var(--space-lg);
+ border-bottom: 1px solid var(--border);
+}
+
+.admin-tabs a {
+ padding: var(--space-sm) var(--space-md);
+ border: 1px solid var(--border);
+ border-bottom: none;
+ border-radius: var(--r) var(--r) 0 0;
+ color: var(--muted);
+ font-weight: 700;
+}
+
+.admin-tabs a.active {
+ color: var(--ink);
+ border-color: var(--accent);
+ background: #0a0000;
+}
+
+.admin-flash {
+ padding: var(--space-sm) var(--space-md);
+ border-radius: var(--r);
+ margin-bottom: var(--space-md);
+ border: 1px solid var(--border);
+}
+
+.admin-flash.ok { border-color: #2e7d32; }
+.admin-flash.err { border-color: var(--accent); }
+
+.admin-cols {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: var(--space-lg);
+ align-items: start;
+}
+
+@media (max-width: 800px) {
+ .admin-cols { grid-template-columns: 1fr; }
+}
+
+.panel {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ margin-bottom: var(--space-md);
+}
+
+.panel-head {
+ padding: var(--space-sm) var(--space-md);
+ border-bottom: 1px solid var(--border);
+ font-size: var(--fs-xs);
+ text-transform: uppercase;
+ letter-spacing: .07em;
+ color: var(--muted);
+}
+
+.panel-body { padding: var(--space-md); }
+
+.admin-field { margin-bottom: var(--space-md); }
+
+.admin-field label {
+ display: block;
+ margin-bottom: 4px;
+ font-size: var(--fs-sm);
+}
+
+.admin-field input,
+.admin-field textarea,
+.admin-field select {
+ width: 100%;
+ box-sizing: border-box;
+ background: #050000;
+ border: 1px solid var(--border);
+ color: #d00000;
+ padding: 10px;
+ border-radius: var(--r);
+ font: inherit;
+}
+
+.md-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 4px;
+ margin-bottom: 6px;
+}
+
+.md-toolbar button {
+ padding: 6px 10px;
+ font-size: var(--fs-xs);
+}
+
+#md-preview {
+ background: #050000;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ padding: 12px;
+ min-height: 200px;
+ overflow: auto;
+ line-height: 1.6;
+}
+
+.admin-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.admin-item {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ padding: var(--space-sm) var(--space-md);
+ margin-bottom: var(--space-sm);
+}
+
+.admin-item small {
+ color: var(--muted);
+ font-family: monospace;
+}
+
+.inline-form { display: inline; }
+
+.admin-checks {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+ margin: 0 0 var(--space-md);
+}
+
+.admin-checks label {
+ font-size: var(--fs-sm);
+}
+
+.admin-motd-actions {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--space-sm);
+ margin: 0 0 var(--space-md);
+}
+
+.motd-xmpp-preview {
+ margin: 0;
+ white-space: pre-wrap;
+ overflow-wrap: anywhere;
+ font-family: var(--font-mono, ui-monospace, monospace);
+ font-size: var(--fs-sm);
+ line-height: 1.55;
+ color: var(--ink);
+}
+
+.type-badge {
+ font-family: monospace;
+ padding: 1px 7px;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ color: var(--muted);
+}
+
+table.admin-table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+table.admin-table th,
+table.admin-table td {
+ border: 1px solid var(--border);
+ padding: 6px 8px;
+ text-align: left;
+ vertical-align: top;
+ font-size: var(--fs-sm);
+}
+
+.ratio-wrap {
+ position: relative;
+ padding-top: 56.25%;
+}
+
+.ratio-wrap iframe {
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+ border-radius: var(--r);
+}
+
+.preview-panel img,
+.preview-panel video,
+.preview-panel audio {
+ max-width: 100%;
+ border-radius: var(--r);
+ display: block;
+}
+
+/* Utility replacements for residual inline styles */
+.admin-section-title {
+ font-size: var(--fs-lg);
+ margin: var(--space-2xl) 0 var(--space-md);
+}
+
+.admin-section-label {
+ font-size: var(--fs-sm);
+ text-transform: uppercase;
+ letter-spacing: .07em;
+ color: var(--muted);
+ margin: var(--space-xl) 0 var(--space-sm);
+}
+
+.admin-stack-gap {
+ margin-bottom: var(--space-2xl);
+}
+
+.admin-inline-note {
+ font-size: var(--fs-sm);
+ color: var(--accent);
+}
+
+.admin-search-input {
+ padding: 8px;
+ background: #050000;
+ border: 1px solid var(--border);
+ color: #d00000;
+ border-radius: var(--r);
+}
+
+body.light-mode .admin-tabs a.active {
+ background: #fff4f4;
+}
+
+body.light-mode .admin-field input,
+body.light-mode .admin-field textarea,
+body.light-mode .admin-field select,
+body.light-mode #md-preview,
+body.light-mode .admin-search-input {
+ background: #fff;
+ color: #2a1212;
+}
+
+/* ---- Traffic analytics ---- */
+.traffic-live-bar {
+ display: flex;
+ align-items: center;
+ gap: 0.4rem;
+ margin: 0 0 var(--space-md);
+ font-family: var(--font-mono, ui-monospace, monospace);
+ font-size: var(--fs-xs);
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+ color: var(--muted);
+}
+.traffic-live-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: #39ff14;
+ box-shadow: 0 0 8px rgba(57, 255, 20, 0.7);
+ animation: traffic-live-pulse 1.6s ease-in-out infinite;
+}
+.traffic-live-bar--ok .traffic-live-dot {
+ background: #39ff14;
+}
+.traffic-live-bar--err .traffic-live-dot {
+ background: #ff4d4d;
+ box-shadow: 0 0 8px rgba(255, 77, 77, 0.55);
+ animation: none;
+}
+.traffic-live-bar--err #traffic-live-status {
+ color: #ff6b6b;
+}
+@keyframes traffic-live-pulse {
+ 0%, 100% { opacity: 1; transform: scale(1); }
+ 50% { opacity: 0.45; transform: scale(0.85); }
+}
+body.light-mode .traffic-live-dot {
+ background: #1a7a12;
+ box-shadow: none;
+}
+body.light-mode .traffic-live-bar--err .traffic-live-dot {
+ background: #c0392b;
+}
+
+.traffic-kpi-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
+ gap: var(--space-sm);
+ margin: 0 0 var(--space-lg);
+}
+.traffic-kpi-val.traffic-kpi-flash {
+ animation: traffic-kpi-pop 0.55s ease;
+}
+@keyframes traffic-kpi-pop {
+ 0% { transform: scale(1); }
+ 35% { transform: scale(1.12); filter: brightness(1.35); }
+ 100% { transform: scale(1); }
+}
+.traffic-kpi {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ padding: var(--space-md);
+ background: #0a0000;
+ text-align: center;
+}
+.traffic-kpi-val {
+ display: block;
+ font-family: var(--font-mono, ui-monospace, monospace);
+ font-size: 1.6rem;
+ font-weight: 700;
+ color: #39ff14;
+ text-shadow: 0 0 8px rgba(57, 255, 20, .25);
+ line-height: 1.2;
+}
+.traffic-kpi-label {
+ display: block;
+ margin-top: 4px;
+ font-size: var(--fs-xs);
+ text-transform: uppercase;
+ letter-spacing: .06em;
+ color: var(--muted);
+}
+.traffic-kpi--bots {
+ border-color: rgba(255, 159, 26, 0.45);
+}
+.traffic-kpi--bots .traffic-kpi-val {
+ color: #ff9f1a;
+ text-shadow: 0 0 8px rgba(255, 159, 26, .3);
+}
+.traffic-row--bot {
+ opacity: 0.78;
+}
+.traffic-badge--bot {
+ background: rgba(255, 159, 26, 0.18);
+ color: #ff9f1a;
+ border: 1px solid rgba(255, 159, 26, 0.4);
+}
+body.light-mode .traffic-kpi--bots .traffic-kpi-val {
+ color: #a65c00;
+ text-shadow: none;
+}
+body.light-mode .traffic-badge--bot {
+ background: rgba(166, 92, 0, 0.1);
+ color: #a65c00;
+ border-color: rgba(166, 92, 0, 0.35);
+}
+.traffic-chart-panel .panel-body {
+ padding-bottom: var(--space-sm);
+}
+.traffic-chart {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ height: auto;
+ background: #050000;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+}
+.traffic-chart-legend {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+ margin-top: var(--space-sm);
+ font-size: var(--fs-xs);
+ color: var(--muted);
+ font-family: var(--font-mono, ui-monospace, monospace);
+}
+.traffic-swatch {
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ border-radius: 2px;
+ margin-right: 4px;
+ vertical-align: -1px;
+}
+.traffic-swatch--hits { background: #39ff14; box-shadow: 0 0 6px rgba(57,255,20,.4); }
+.traffic-swatch--uniq { background: #5b9dff; box-shadow: 0 0 6px rgba(91,157,255,.35); }
+.traffic-swatch--bots { background: #ff9f1a; box-shadow: 0 0 6px rgba(255,159,26,.4); }
+.traffic-chart-row { margin-bottom: var(--space-md); }
+body.light-mode .traffic-swatch--bots { background: #a65c00; box-shadow: none; }
+
+body.light-mode .traffic-kpi {
+ background: #f8fbfd;
+}
+body.light-mode .traffic-kpi-val {
+ color: #1a7a12;
+ text-shadow: none;
+}
+body.light-mode .traffic-chart {
+ background: #f4f7fa;
+}
diff --git a/assets/css/pages/articles-2023-04-10.css b/assets/css/pages/articles-2023-04-10.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-2023-04-10.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/articles-2023-04-10_jp.css b/assets/css/pages/articles-2023-04-10_jp.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-2023-04-10_jp.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/articles-2023-04-10_zh.css b/assets/css/pages/articles-2023-04-10_zh.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-2023-04-10_zh.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/articles-runescape.css b/assets/css/pages/articles-runescape.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-runescape.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/articles-runescape_jp.css b/assets/css/pages/articles-runescape_jp.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-runescape_jp.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/articles-runescape_zh.css b/assets/css/pages/articles-runescape_zh.css
new file mode 100644
index 0000000..1818de4
--- /dev/null
+++ b/assets/css/pages/articles-runescape_zh.css
@@ -0,0 +1 @@
+kbd{ border:1px solid var(--border); border-radius:4px; padding:0 6px; background: #fff; }
diff --git a/assets/css/pages/bookmarks.css b/assets/css/pages/bookmarks.css
new file mode 100644
index 0000000..7cb6ccf
--- /dev/null
+++ b/assets/css/pages/bookmarks.css
@@ -0,0 +1,85 @@
+.bookmarks-title {
+ margin-bottom: var(--space-md);
+}
+
+.tree {
+ list-style-type: none;
+ padding-left: 0;
+ margin: 0;
+}
+
+.tree ul {
+ list-style-type: none;
+ padding-left: 28px;
+ margin: 5px 0;
+}
+
+.tree li {
+ margin: 4px 0;
+ position: relative;
+}
+
+.tree summary {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+ padding: 8px 12px;
+ transition: background-color 0.2s ease;
+ font-weight: 600;
+ outline: none;
+ user-select: none;
+ background: var(--bg);
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+}
+
+.tree summary:hover {
+ background-color: #2a1010;
+ border-color: var(--accent);
+}
+
+.tree summary::-webkit-details-marker {
+ display: none;
+}
+
+.tree summary::before {
+ content: ">";
+ color: var(--ink);
+ margin-right: 10px;
+ font-size: 1rem;
+ transition: all 0.2s ease;
+ width: 20px;
+ text-align: left;
+ font-weight: 700;
+}
+
+.tree details[open]>summary::before {
+ content: ">";
+ transform: rotate(90deg);
+}
+
+.tree a {
+ color: var(--ink);
+ text-decoration: none;
+ display: inline-flex;
+ align-items: center;
+ padding: 6px 6px;
+ border-radius: 4px;
+}
+
+.tree a:hover {
+ background: var(--accent);
+ color: #000 !important;
+}
+
+
+.tree .navbar-file a {
+ color: var(--muted);
+}
+
+.tree .navbar-file a::before {
+ content: "->";
+ color: var(--muted);
+ margin-right: 10px;
+ font-size: 0.9rem;
+} \ No newline at end of file
diff --git a/assets/css/pages/changelog.css b/assets/css/pages/changelog.css
new file mode 100644
index 0000000..18633fd
--- /dev/null
+++ b/assets/css/pages/changelog.css
@@ -0,0 +1,25 @@
+.changelog-list{ list-style: none; padding: 0; margin: 0; }
+
+.changelog-entry{
+ padding: var(--space-md) 0;
+ border-bottom: 1px dotted rgba(0,0,0,.25);
+}
+
+.changelog-entry:last-child{ border-bottom: none; }
+
+.changelog-entry time{ font-weight: 700; color: var(--ink); white-space: nowrap; display: block; margin-bottom: var(--space-xs); }
+
+.changelog-entry .text{ color: var(--muted); }
+
+.changelog-more{
+ display: inline-block;
+ margin-top: var(--space-xs);
+ font-size: 13px;
+ white-space: nowrap;
+}
+
+hr {
+ border: none;
+ border-top: 1px dotted var(--border);
+ margin: var(--space-lg) 0;
+}
diff --git a/assets/css/pages/collection.css b/assets/css/pages/collection.css
new file mode 100644
index 0000000..8f3c81a
--- /dev/null
+++ b/assets/css/pages/collection.css
@@ -0,0 +1,290 @@
+/* ==========================================================================
+ Game collection catalog
+ Layout pattern: personal small-web inventory (photo | name :: model | specs)
+ Visual system: SillyLaird crimson / mono — not a third-party theme clone.
+ ========================================================================== */
+
+body.gc-page {
+ font-family: var(--font-mono);
+}
+
+.gc-wrap {
+ max-width: 52rem;
+}
+
+/* Big centered page title (catalog feel, site colors) */
+.gc-title {
+ font-family: var(--font-mono);
+ font-size: clamp(1.75rem, 1.2rem + 3vw, 2.75rem);
+ font-weight: 700;
+ text-align: center;
+ color: var(--ink);
+ letter-spacing: 0.02em;
+ margin: var(--space-md) 0 var(--space-sm);
+ line-height: 1.15;
+}
+
+/* COMPUTERS / PHONES ⁜ WISHLIST style menu */
+.gc-menu {
+ text-align: center;
+ margin: 0 0 var(--space-2xl);
+ font-size: var(--fs-sm);
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--muted);
+ line-height: 1.8;
+}
+
+.gc-menu a {
+ color: var(--muted);
+ text-decoration: none;
+ padding: 0 2px;
+}
+
+.gc-menu a:hover,
+.gc-menu a:focus-visible {
+ color: var(--accent-bright);
+}
+
+.gc-menu a.gc-menu-active,
+.gc-menu a#gc-main {
+ color: var(--ink);
+ font-style: italic;
+}
+
+.gc-menu-sep {
+ margin: 0 1px;
+ color: var(--muted);
+}
+
+.gc-menu-diamond {
+ margin: 0 0.45rem;
+ color: var(--border);
+ font-style: normal;
+}
+
+.gc-page-blurb {
+ text-align: center;
+ color: var(--muted);
+ font-size: var(--fs-sm);
+ margin: 0 auto var(--space-xl);
+ max-width: 34rem;
+}
+
+.gc-count {
+ text-align: center;
+ color: var(--muted);
+ font-size: var(--fs-xs);
+ margin: 0 0 var(--space-lg);
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+}
+
+/* Table-like catalog stack (centered inventory) */
+.gc-catalog {
+ display: table;
+ width: 100%;
+ margin: 0 auto;
+ border-collapse: separate;
+ border-spacing: 0 var(--space-md);
+}
+
+.gc-row {
+ display: table-row;
+}
+
+.gc-pic,
+.gc-body {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.gc-pic {
+ width: 1%;
+ padding-right: var(--space-lg);
+ white-space: nowrap;
+}
+
+.gc-pic a {
+ display: inline-block;
+ line-height: 0;
+}
+
+.gc-pic img {
+ display: block;
+ width: auto;
+ max-width: 13rem;
+ max-height: 10rem;
+ height: auto;
+ border: 1px solid var(--border);
+ background: var(--surface-deep);
+}
+
+.gc-pic-empty {
+ width: 10rem;
+ height: 7rem;
+ border: 1px dashed var(--border);
+ background:
+ radial-gradient(ellipse at 30% 20%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 55%),
+ var(--surface-deep);
+ color: var(--muted);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--fs-sm);
+ letter-spacing: 0.18em;
+ text-transform: uppercase;
+ opacity: 0.85;
+}
+
+.gc-body {
+ width: 99%;
+ padding: 2px 0;
+}
+
+/* Large display name: left :: right */
+.gc-name {
+ font-family: var(--font-mono);
+ font-size: clamp(1.15rem, 1rem + 0.9vw, 1.65rem);
+ font-weight: 700;
+ color: var(--gold);
+ margin: 0 0 var(--space-xs);
+ line-height: 1.2;
+ word-break: break-word;
+}
+
+.gc-name a {
+ color: inherit;
+ text-decoration: none;
+}
+
+.gc-name a:hover,
+.gc-name a:focus-visible {
+ color: var(--accent-bright);
+ text-decoration: underline;
+}
+
+.gc-colon {
+ color: var(--muted);
+ font-weight: 400;
+ margin: 0 0.28em;
+}
+
+.gc-note {
+ margin: 0 0 var(--space-xs);
+ font-size: var(--fs-sm);
+ color: var(--muted);
+ font-style: italic;
+}
+
+.gc-note em {
+ font-style: italic;
+}
+
+/* Inline “icon + value” specs (like arch / cpu / ram lines) */
+.gc-specs {
+ margin: 0;
+ font-size: var(--fs-sm);
+ color: var(--ink);
+ line-height: 1.7;
+}
+
+.gc-spec {
+ display: inline;
+ white-space: nowrap;
+ margin-right: 0.65rem;
+}
+
+.gc-spec-ico {
+ display: inline-block;
+ min-width: 1.1em;
+ text-align: center;
+ font-size: 0.75em;
+ font-weight: 700;
+ color: var(--bg);
+ background: var(--ink);
+ border-radius: 2px;
+ padding: 0 0.28em;
+ margin-right: 0.25em;
+ vertical-align: 0.05em;
+ line-height: 1.35;
+}
+
+.gc-spec-val {
+ color: var(--ink);
+}
+
+a.gc-spec-val {
+ color: var(--accent-bright);
+ text-decoration: none;
+}
+
+a.gc-spec-val:hover,
+a.gc-spec-val:focus-visible {
+ text-decoration: underline;
+}
+
+.gc-empty {
+ text-align: center;
+ color: var(--muted);
+ font-size: var(--fs-sm);
+ border: 1px dashed var(--border);
+ padding: var(--space-xl);
+ margin: var(--space-lg) auto;
+ max-width: 28rem;
+}
+
+.gc-footer-hint {
+ text-align: center;
+ margin: var(--space-2xl) 0 var(--space-md);
+ font-size: var(--fs-xs);
+ color: var(--muted);
+}
+
+.gc-footer-hint a {
+ color: var(--muted);
+}
+
+/* Mobile: stack photo above body (table → block) */
+@media (max-width: 640px) {
+ .gc-catalog,
+ .gc-row,
+ .gc-pic,
+ .gc-body {
+ display: block;
+ width: 100%;
+ }
+
+ .gc-row {
+ margin-bottom: var(--space-xl);
+ padding-bottom: var(--space-lg);
+ border-bottom: 1px solid var(--border);
+ }
+
+ .gc-pic {
+ padding-right: 0;
+ margin-bottom: var(--space-sm);
+ }
+
+ .gc-pic img,
+ .gc-pic-empty {
+ max-width: 100%;
+ width: min(100%, 16rem);
+ }
+
+ .gc-spec {
+ display: inline-block;
+ margin-bottom: 0.15rem;
+ }
+}
+
+/* Light mode: keep readable contrast */
+body.light-mode .gc-spec-ico {
+ color: #fff;
+ background: var(--ink);
+}
+
+body.light-mode .gc-pic img,
+body.light-mode .gc-pic-empty {
+ background: #f6f0f0;
+}
diff --git a/assets/css/pages/computers.css b/assets/css/pages/computers.css
new file mode 100644
index 0000000..2b0ff38
--- /dev/null
+++ b/assets/css/pages/computers.css
@@ -0,0 +1,102 @@
+.machine{
+ border: 1px solid var(--ink);
+ padding: var(--space-md);
+ margin-top: var(--space-md);
+ background: var(--bg);
+}
+
+.machine-info{ font-size: var(--fs-base); }
+
+.machine-title{
+ color: var(--gold);
+ font-weight: 700;
+ font-size: var(--fs-lg);
+ margin-bottom: var(--space-xs);
+}
+
+.machine--notes {
+ border-color: color-mix(in srgb, var(--accent-cyan) 42%, var(--border));
+ background: linear-gradient(90deg, color-mix(in srgb, var(--accent-cyan) 7%, var(--bg)), var(--bg) 45%);
+}
+
+.colon-nav {
+ font-size: var(--fs-base);
+ margin-top: var(--space-sm);
+}
+
+.colon-nav strong {
+ color: var(--gold);
+}
+
+.machine-row {
+ display: flex;
+ gap: var(--space-md);
+ align-items: flex-start;
+ flex-wrap: wrap;
+}
+
+.machine-row .machine-thumb {
+ flex: 0 0 auto;
+ width: 96px;
+ height: 96px;
+ object-fit: contain;
+ border: 1px solid var(--border);
+ background: var(--bg);
+ padding: var(--space-xs);
+}
+
+.machine-row .machine-facts {
+ flex: 1 1 240px;
+}
+
+.machine-title--sub {
+ margin-top: var(--space-sm);
+}
+
+.placeholder-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
+ gap: var(--space-md);
+}
+
+.placeholder-box {
+ border: 1px dashed var(--border);
+ border-radius: var(--r);
+ padding: var(--space-md);
+ text-align: center;
+ color: var(--muted);
+ font-size: var(--fs-sm);
+ min-height: 120px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.rs-shot {
+ margin: 0;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ overflow: hidden;
+ background: var(--bg);
+}
+
+.rs-shot img {
+ display: block;
+ width: 100%;
+ height: auto;
+}
+
+.rs-shot figcaption {
+ padding: var(--space-xs) var(--space-sm);
+ font-size: var(--fs-sm);
+}
+
+.rs-era-banner {
+ display: block;
+ width: 100%;
+ max-height: 220px;
+ object-fit: cover;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ margin: var(--space-sm) 0 var(--space-md);
+}
diff --git a/assets/css/pages/guestbook-form.css b/assets/css/pages/guestbook-form.css
new file mode 100644
index 0000000..8ff7d9f
--- /dev/null
+++ b/assets/css/pages/guestbook-form.css
@@ -0,0 +1,58 @@
+body {
+ background: #0a0a0a !important;
+ margin: 0;
+ padding: 10px;
+ font-family: "JetBrains Mono", "IBM Plex Mono", "Fira Code", "Source Code Pro", monospace;
+ color: #e0e0e0 !important;
+ overflow-y: auto;
+ overflow-x: hidden;
+ -ms-overflow-style: none;
+ scrollbar-width: none;
+}
+body::-webkit-scrollbar {
+ width: 0;
+ height: 0;
+}
+
+form {
+ max-width: 900px;
+ margin: 0 auto 20px;
+ background: #0a0a0a !important;
+}
+
+form input,
+form textarea {
+ background: #111 !important;
+ border: 1px solid #333 !important;
+ color: #e0e0e0 !important;
+ font: inherit;
+ box-sizing: border-box;
+ margin-bottom: 10px;
+ width: 100%;
+ padding: 8px;
+}
+
+form input::placeholder,
+form textarea::placeholder {
+ color: #666 !important;
+}
+
+form input:focus,
+form textarea:focus {
+ outline: none;
+ border-color: #ff4444 !important;
+}
+
+form button {
+ background: #ff4444 !important;
+ border: none !important;
+ padding: 12px 18px;
+ border-radius: 4px;
+ cursor: pointer;
+ font: inherit;
+ color: #fff !important;
+ font-weight: bold;
+}
+form button:hover {
+ background: #cc0000 !important;
+}
diff --git a/assets/css/pages/guestbook_jp.css b/assets/css/pages/guestbook_jp.css
new file mode 100644
index 0000000..c4da6e4
--- /dev/null
+++ b/assets/css/pages/guestbook_jp.css
@@ -0,0 +1,79 @@
+.anonymous {
+ color: var(--accent) !important;
+}
+
+.error {
+ color: var(--accent);
+}
+
+.captcha {
+ font-weight: 700;
+ font-size: 20px;
+}
+
+form {
+ display: grid;
+ gap: var(--space-sm);
+ max-width: 640px;
+}
+
+label {
+ font-weight: 600;
+}
+
+input[type="text"],
+textarea {
+ width: 100%;
+ padding: 10px;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: var(--bg);
+ color: var(--accent) !important;
+ font: inherit;
+}
+
+textarea {
+ min-height: 120px;
+ resize: vertical;
+}
+
+.btn-row {
+ display: flex;
+ gap: var(--space-sm);
+ flex-wrap: wrap;
+}
+
+button {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: var(--bg);
+ padding: 8px 12px;
+ cursor: pointer;
+ font: inherit;
+}
+
+button:hover {
+ background: #fdd;
+ border-color: var(--accent);
+}
+
+.entry {
+ border-top: 1px dotted rgba(0, 0, 0, .25);
+ padding-top: var(--space-md);
+ margin-top: var(--space-md);
+}
+
+.entry h4 {
+ margin: 0 0 var(--space-xs) 0;
+}
+
+.entry p {
+ margin: 0;
+ color: var(--muted);
+}
+
+#captcha-canvas {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: #fff;
+} \ No newline at end of file
diff --git a/assets/css/pages/guestbook_zh.css b/assets/css/pages/guestbook_zh.css
new file mode 100644
index 0000000..c4da6e4
--- /dev/null
+++ b/assets/css/pages/guestbook_zh.css
@@ -0,0 +1,79 @@
+.anonymous {
+ color: var(--accent) !important;
+}
+
+.error {
+ color: var(--accent);
+}
+
+.captcha {
+ font-weight: 700;
+ font-size: 20px;
+}
+
+form {
+ display: grid;
+ gap: var(--space-sm);
+ max-width: 640px;
+}
+
+label {
+ font-weight: 600;
+}
+
+input[type="text"],
+textarea {
+ width: 100%;
+ padding: 10px;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: var(--bg);
+ color: var(--accent) !important;
+ font: inherit;
+}
+
+textarea {
+ min-height: 120px;
+ resize: vertical;
+}
+
+.btn-row {
+ display: flex;
+ gap: var(--space-sm);
+ flex-wrap: wrap;
+}
+
+button {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: var(--bg);
+ padding: 8px 12px;
+ cursor: pointer;
+ font: inherit;
+}
+
+button:hover {
+ background: #fdd;
+ border-color: var(--accent);
+}
+
+.entry {
+ border-top: 1px dotted rgba(0, 0, 0, .25);
+ padding-top: var(--space-md);
+ margin-top: var(--space-md);
+}
+
+.entry h4 {
+ margin: 0 0 var(--space-xs) 0;
+}
+
+.entry p {
+ margin: 0;
+ color: var(--muted);
+}
+
+#captcha-canvas {
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: #fff;
+} \ No newline at end of file
diff --git a/assets/css/pages/hitcounter.css b/assets/css/pages/hitcounter.css
new file mode 100644
index 0000000..1c52da1
--- /dev/null
+++ b/assets/css/pages/hitcounter.css
@@ -0,0 +1,7 @@
+.counter {
+ display: grid;
+ gap: var(--space-sm);
+ justify-items: center;
+ text-align: center;
+ }
+ .big { font-size: 3rem; font-weight: 800; color: var(--gold); }
diff --git a/assets/css/pages/journal-index.css b/assets/css/pages/journal-index.css
new file mode 100644
index 0000000..02e8c42
--- /dev/null
+++ b/assets/css/pages/journal-index.css
@@ -0,0 +1,3 @@
+.entry { margin: var(--space-md) 0; }
+ .entry time { font-weight: 700; color: var(--ink); }
+ .entry p { margin: var(--space-xs) 0 0 0; color: var(--muted); }
diff --git a/assets/css/pages/journal-index_jp.css b/assets/css/pages/journal-index_jp.css
new file mode 100644
index 0000000..02e8c42
--- /dev/null
+++ b/assets/css/pages/journal-index_jp.css
@@ -0,0 +1,3 @@
+.entry { margin: var(--space-md) 0; }
+ .entry time { font-weight: 700; color: var(--ink); }
+ .entry p { margin: var(--space-xs) 0 0 0; color: var(--muted); }
diff --git a/assets/css/pages/journal-index_zh.css b/assets/css/pages/journal-index_zh.css
new file mode 100644
index 0000000..02e8c42
--- /dev/null
+++ b/assets/css/pages/journal-index_zh.css
@@ -0,0 +1,3 @@
+.entry { margin: var(--space-md) 0; }
+ .entry time { font-weight: 700; color: var(--ink); }
+ .entry p { margin: var(--space-xs) 0 0 0; color: var(--muted); }
diff --git a/assets/css/pages/links.css b/assets/css/pages/links.css
new file mode 100644
index 0000000..d0a6c8b
--- /dev/null
+++ b/assets/css/pages/links.css
@@ -0,0 +1,22 @@
+.buttons img { image-rendering: auto; }
+ .buttons a { padding: 0; background: transparent; }
+ .buttons a:hover { background: transparent; }
+/* Link hub: card-based grouping. Mirrors .start-here inset card. */
+.link-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
+ gap: var(--space-md);
+ margin: var(--space-md) 0 var(--space-lg);
+}
+.link-card {
+ border: 1px solid var(--border);
+ border-left: 3px solid var(--accent);
+ border-radius: var(--r);
+ padding: var(--space-md) var(--space-lg);
+ background: linear-gradient(180deg, rgba(var(--glow-color), .04), transparent 70%);
+}
+.link-card-title { margin: 0 0 var(--space-sm) !important; font-size: var(--fs-lg); }
+.link-card-list {
+ list-style: none; padding: 0; margin: 0;
+ display: grid; gap: var(--space-xs); line-height: 1.5;
+}
diff --git a/assets/css/pages/links_jp.css b/assets/css/pages/links_jp.css
new file mode 100644
index 0000000..d0a6c8b
--- /dev/null
+++ b/assets/css/pages/links_jp.css
@@ -0,0 +1,22 @@
+.buttons img { image-rendering: auto; }
+ .buttons a { padding: 0; background: transparent; }
+ .buttons a:hover { background: transparent; }
+/* Link hub: card-based grouping. Mirrors .start-here inset card. */
+.link-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
+ gap: var(--space-md);
+ margin: var(--space-md) 0 var(--space-lg);
+}
+.link-card {
+ border: 1px solid var(--border);
+ border-left: 3px solid var(--accent);
+ border-radius: var(--r);
+ padding: var(--space-md) var(--space-lg);
+ background: linear-gradient(180deg, rgba(var(--glow-color), .04), transparent 70%);
+}
+.link-card-title { margin: 0 0 var(--space-sm) !important; font-size: var(--fs-lg); }
+.link-card-list {
+ list-style: none; padding: 0; margin: 0;
+ display: grid; gap: var(--space-xs); line-height: 1.5;
+}
diff --git a/assets/css/pages/links_zh.css b/assets/css/pages/links_zh.css
new file mode 100644
index 0000000..d0a6c8b
--- /dev/null
+++ b/assets/css/pages/links_zh.css
@@ -0,0 +1,22 @@
+.buttons img { image-rendering: auto; }
+ .buttons a { padding: 0; background: transparent; }
+ .buttons a:hover { background: transparent; }
+/* Link hub: card-based grouping. Mirrors .start-here inset card. */
+.link-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
+ gap: var(--space-md);
+ margin: var(--space-md) 0 var(--space-lg);
+}
+.link-card {
+ border: 1px solid var(--border);
+ border-left: 3px solid var(--accent);
+ border-radius: var(--r);
+ padding: var(--space-md) var(--space-lg);
+ background: linear-gradient(180deg, rgba(var(--glow-color), .04), transparent 70%);
+}
+.link-card-title { margin: 0 0 var(--space-sm) !important; font-size: var(--fs-lg); }
+.link-card-list {
+ list-style: none; padding: 0; margin: 0;
+ display: grid; gap: var(--space-xs); line-height: 1.5;
+}
diff --git a/assets/css/pages/motd.css b/assets/css/pages/motd.css
new file mode 100644
index 0000000..8a30bad
--- /dev/null
+++ b/assets/css/pages/motd.css
@@ -0,0 +1,51 @@
+/* MOTD — same inner-page language as Computers / Journal / ChangeLog. */
+
+.motd-current {
+ border: 1px solid var(--ink);
+ padding: var(--space-md);
+ margin-top: var(--space-md);
+ background: var(--bg);
+}
+
+.motd-heading {
+ color: var(--gold);
+ font-weight: 700;
+ font-size: var(--fs-lg);
+ margin: 0 0 var(--space-xs);
+}
+
+.motd-current .muted {
+ margin: 0;
+}
+
+.motd-body {
+ margin: var(--space-sm) 0 0;
+ white-space: pre-wrap;
+ overflow-wrap: anywhere;
+ max-width: 68ch;
+ line-height: 1.65;
+}
+
+.entry {
+ margin: var(--space-md) 0;
+}
+
+.entry time {
+ font-weight: 700;
+ color: var(--ink);
+ display: block;
+ margin-bottom: var(--space-xs);
+}
+
+.entry p {
+ margin: 0;
+ color: var(--muted);
+ white-space: pre-wrap;
+ overflow-wrap: anywhere;
+ max-width: 68ch;
+}
+
+.entry p strong {
+ color: var(--ink);
+ margin-right: 0.35em;
+}
diff --git a/assets/css/pages/mstartpage-index.css b/assets/css/pages/mstartpage-index.css
new file mode 100644
index 0000000..02f0e9b
--- /dev/null
+++ b/assets/css/pages/mstartpage-index.css
@@ -0,0 +1,341 @@
+:root {
+ --main-text-color: #ddd;
+ --border-color: var(--border, #2a1010);
+ --search-input-color: black;
+ --link-color: #FF0000;
+ --background-color: #000;
+ --menu-background: #111;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html,
+body {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ background-color: var(--background-color);
+ font-family: 'Source Code Pro', "MS Gothic", IPAMonaGothic, IPAGothic, "BIZ UDGothic", HGGothicM, "Noto Sans Mono CJK JP", "Noto Sans Mono", monospace;
+ font-size: 14px;
+ color: var(--main-text-color);
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.7);
+ overflow-x: hidden;
+}
+
+a {
+ color: var(--link-color);
+ background-color: transparent;
+ text-decoration: none;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+/* Layout Overrides for Unified Header */
+.header-inner {
+ margin: 0 !important;
+ /* Left aligned */
+ padding-left: 10px !important;
+}
+
+/* Main menu fallback (if any) */
+.main-menu {}
+
+.main-menu.show {
+ display: flex;
+}
+
+.main-menu a {
+ padding: 10px;
+ border-bottom: 1px solid #333;
+}
+
+.main-menu a:last-child {
+ border-bottom: none;
+}
+
+/* Search box */
+.search-container {
+ width: 100%;
+ padding: 10px;
+ background-color: var(--background-color);
+ margin-bottom: 15px;
+}
+
+.search-form {
+ display: flex;
+ flex-direction: column;
+}
+
+.search-input {
+ color: var(--link-color);
+ background-color: #3A3A3A;
+ border: 1px solid var(--link-color);
+ padding: 12px;
+ margin-bottom: 10px;
+ text-align: center;
+ border-radius: 4px;
+ font-size: 16px;
+ /* Larger for touch */
+}
+
+input[type="submit"] {
+ color: var(--link-color);
+ background-color: black;
+ padding: 12px;
+ border: 1px solid var(--link-color);
+ cursor: pointer;
+ border-radius: 4px;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+/* Content sections */
+.content-section {
+ margin-bottom: 20px;
+ padding: 0 10px;
+}
+
+.section-title {
+ color: var(--link-color);
+ font-size: 1.2em;
+ border-bottom: 1px solid var(--border-color);
+ padding-bottom: 5px;
+ margin-bottom: 10px;
+}
+
+.link-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
+ gap: 10px;
+}
+
+.link-item {
+ padding: 10px;
+ background-color: #1a1a1a;
+ border: 1px solid #333;
+ border-radius: 4px;
+ text-align: center;
+}
+
+/* Gallery items for mobile */
+.gallery-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
+ gap: 15px;
+ padding: 10px;
+}
+
+.gallery-item {
+ border: 2px ridge var(--border-color);
+ border-radius: 4px;
+ overflow: hidden;
+}
+
+.gallery-item:hover {
+ border: 2px ridge var(--link-color);
+}
+
+.gallery-item img {
+ width: 100%;
+ height: auto;
+ display: block;
+}
+
+.gallery-desc {
+ padding: 8px;
+ text-align: center;
+ font-size: 0.9em;
+ color: var(--link-color);
+ background-color: #1a1a1a;
+}
+
+/* Date and time */
+.datetime {
+ padding: 10px;
+ text-align: center;
+ margin: 15px 0;
+}
+
+#realtime-date,
+#realtime-clock {
+ color: var(--link-color);
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
+ margin: 5px 0;
+}
+
+/* Footer */
+.footer {
+ padding: 15px;
+ text-align: center;
+ border-top: 1px solid #333;
+ margin-top: 20px;
+}
+
+.footer-links {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ gap: 10px;
+}
+
+.footer-links a {
+ padding: 5px;
+}
+
+/* Collapsible sections */
+.collapsible {
+ background-color: #1a1a1a;
+ color: var(--link-color);
+ cursor: pointer;
+ padding: 12px;
+ width: 100%;
+ border: 1px solid var(--border-color);
+ text-align: left;
+ outline: none;
+ font-size: 1em;
+ font-weight: bold;
+ margin-bottom: 5px;
+ border-radius: 4px;
+}
+
+.active,
+.collapsible:hover {
+ background-color: #222;
+}
+
+.collapsible-content {
+ padding: 0 10px;
+ display: none;
+ overflow: hidden;
+ background-color: #1a1a1a;
+ margin-bottom: 10px;
+ border-radius: 0 0 4px 4px;
+}
+
+/* XXX Verification Modal */
+.xxx-modal {
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.9);
+ z-index: 1000;
+ justify-content: center;
+ align-items: center;
+}
+
+.xxx-modal-content {
+ background-color: var(--menu-background);
+ padding: 20px;
+ border-radius: 8px;
+ border: 2px solid var(--link-color);
+ text-align: center;
+ max-width: 90%;
+ width: 350px;
+}
+
+.xxx-logo {
+ width: 80px;
+ height: 80px;
+ margin: 0 auto 15px;
+ background-color: #333;
+ border-radius: 50%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 24px;
+ color: var(--link-color);
+ border: 2px solid var(--link-color);
+}
+
+.xxx-buttons {
+ display: flex;
+ justify-content: space-between;
+ margin-top: 20px;
+}
+
+.xxx-button {
+ padding: 10px 20px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ font-weight: bold;
+}
+
+.xxx-confirm {
+ background-color: var(--link-color);
+ color: white;
+}
+
+.xxx-deny {
+ background-color: #f44336;
+ color: white;
+}
+
+/* XXX Section */
+.xxx-section {
+ margin: 20px 0;
+ text-align: center;
+}
+
+.xxx-toggle {
+ padding: 12px 20px;
+ background-color: #333;
+ color: var(--link-color);
+ border: 1px solid var(--link-color);
+ border-radius: 4px;
+ cursor: pointer;
+ font-weight: bold;
+ margin-bottom: 15px;
+}
+
+.xxx-list {
+ position: fixed;
+ bottom: 20px;
+ right: 20px;
+ background-color: var(--menu-background);
+ border: 1px solid var(--link-color);
+ border-radius: 8px;
+ padding: 10px;
+ max-width: 200px;
+ display: none;
+ z-index: 999;
+}
+
+.xxx-list-title {
+ color: var(--link-color);
+ font-weight: bold;
+ margin-bottom: 8px;
+ text-align: center;
+ border-bottom: 1px solid #444;
+ padding-bottom: 5px;
+}
+
+.xxx-list-item {
+ margin: 5px 0;
+ text-align: center;
+}
+
+/* Responsive adjustments */
+@media (min-width: 768px) {
+ body {
+ font-size: 16px;
+ max-width: 800px;
+ margin: 0 auto;
+ }
+
+ .link-grid {
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
+ }
+
+ .gallery-container {
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
+ }
+} \ No newline at end of file
diff --git a/assets/css/pages/vinyls.css b/assets/css/pages/vinyls.css
new file mode 100644
index 0000000..ecf8b4b
--- /dev/null
+++ b/assets/css/pages/vinyls.css
@@ -0,0 +1,14 @@
+.vinyl-grid{
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
+ gap: var(--space-md);
+ margin-top: var(--space-md);
+}
+
+.vinyl-grid img{
+ width: 100%;
+ height: auto;
+ border: 1px solid var(--border);
+ border-radius: var(--r);
+ background: var(--bg);
+}