diff options
| author | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
|---|---|---|
| committer | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
| commit | 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch) | |
| tree | 85c6ee5ad58b860144551184d4cf86b560c62b91 /assets/css/pages | |
| download | www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip | |
Diffstat (limited to '')
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); +} |
