Home
#mxh { font-family: ‘Space Mono’, ui-monospace, ‘Courier New’, monospace; }
#mxh-bg { position: fixed; inset: 0; background: #000; z-index: 0; }
#mxh-canvas { position: fixed; inset: 0; z-index: 1; display: block; opacity: 0.6; }
#mxh-veil { position: fixed; inset: 0; z-index: 2; background: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.55) 45%, rgba(0,0,0,0.15) 100%); pointer-events: none; }
#mxh-content { position: relative; z-index: 3; min-height: 100svh; box-sizing: border-box; display: flex; flex-direction: column; padding: clamp(24px, 5vh, 56px) clamp(20px, 8vw, 120px); max-width: 1040px; }
#mxh ::selection { background: #33ff77; color: #000; }
#mxh .mxh-prompt { display: flex; align-items: center; gap: 10px; font-size: 14px; letter-spacing: 0.06em; }
#mxh .mxh-host { color: #5aff8f; }
#mxh .mxh-path { color: rgba(160,255,180,0.5); }
#mxh .mxh-cursor { display: inline-block; width: 9px; height: 17px; background: #33ff77; animation: mxh-blink 1.1s steps(1) infinite; }
@keyframes mxh-blink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }
#mxh .mxh-main { margin: auto 0; padding: 48px 0; }
#mxh .mxh-epigraph { color: #74b183; font-size: 15px; letter-spacing: 0.08em; line-height: 1.7; max-width: 54ch; margin: 0 0 44px; }
#mxh nav { display: flex; flex-direction: column; }
#mxh nav a { display: flex; gap: clamp(14px, 3vw, 28px); align-items: baseline; text-decoration: none; padding: clamp(18px, 3vh, 26px) 0; border-top: 1px solid rgba(51,255,119,0.18); color: #b9f6c8; transition: color 160ms ease, transform 160ms ease, text-shadow 160ms ease; }
#mxh nav a:last-child { border-bottom: 1px solid rgba(51,255,119,0.18); }
#mxh nav a:hover { color: #ecfff1; transform: translateX(8px); text-shadow: 0 0 22px rgba(51,255,119,0.55); }
#mxh nav a:focus-visible { outline: 2px solid #33ff77; outline-offset: 4px; }
#mxh .mxh-idx { color: #3f7a4f; font-size: 13px; min-width: 36px; }
#mxh .mxh-entry { display: flex; flex-direction: column; gap: 8px; }
#mxh .mxh-line { font-size: clamp(19px, 2.3vw, 29px); line-height: 1.4; }
#mxh .mxh-slug { font-size: 13px; letter-spacing: 0.1em; opacity: 0.55; }
#mxh .mxh-foot { font-size: 12.5px; color: rgba(160,255,180,0.4); letter-spacing: 0.1em; }
@media (prefers-reduced-motion: reduce) { #mxh .mxh-cursor { animation: none; } }
(function () {
var canvas = document.getElementById(‘mxh-canvas’);
var ctx = canvas.getContext(‘2d’);
var glyphs = ‘アィウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン0123456789*+=@#’;
var COLOR = ‘#33ff77’, HEAD = ‘#eaffef’, FS = 18, SPEED = 1;
var dpr = Math.min(window.devicePixelRatio || 1, 2);
var w = 0, h = 0, cols = 0, drops = [];
function resize() {
w = window.innerWidth; h = window.innerHeight;
canvas.width = w * dpr; canvas.height = h * dpr;
canvas.style.width = w + ‘px’; canvas.style.height = h + ‘px’;
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
cols = Math.ceil(w / FS);
drops = [];
for (var i = 0; i < cols; i++) drops.push(Math.floor(Math.random() * -h / FS));
ctx.fillStyle = '#000'; ctx.fillRect(0, 0, w, h);
}
resize();
window.addEventListener('resize', resize);
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
ctx.font = FS + 'px monospace';
for (var i = 0; i < cols; i++) {
var len = 6 + Math.random() * 18, start = Math.random() * h / FS;
for (var j = 0; j < len; j++) {
ctx.globalAlpha = Math.max(0, 1 – j / len) * 0.8;
ctx.fillStyle = j === 0 ? HEAD : COLOR;
ctx.fillText(glyphs.charAt(Math.floor(Math.random() * glyphs.length)), i * FS, (start – j) * FS);
}
}
ctx.globalAlpha = 1;
return;
}
var last = 0;
function tick(now) {
requestAnimationFrame(tick);
if (now – last < 66 / SPEED) return;
last = now;
ctx.fillStyle = 'rgba(0,0,0,0.10)';
ctx.fillRect(0, 0, w, h);
ctx.font = FS + 'px monospace';
for (var i = 0; i < cols; i++) {
var y = drops[i] * FS;
ctx.fillStyle = Math.random() h && Math.random() > 0.975) drops[i] = Math.floor(Math.random() * -20);
else drops[i]++;
}
}
requestAnimationFrame(tick);
})();