// 404 Terminal Page // Scoped custom properties switch with html.dark .term-window { // Dark mode values (default — site defaults to dark) --tw-bg: #0d0d0d; --tw-bar: #1c1c1c; --tw-border: #2a2a2a; --tw-text: #cdd6f4; --tw-prompt: #10b981; --tw-error: #f38ba8; --tw-muted: #6c7086; --tw-link: #89b4fa; --tw-cursor: #10b981; } html:not(.dark) .term-window { // Light mode: Catppuccin Latte palette --tw-bg: #eff1f5; --tw-bar: #e6e9ef; --tw-border: #ccd0da; --tw-text: #4c4f69; --tw-prompt: #40a02b; --tw-error: #d20f39; --tw-muted: #7c7f93; --tw-link: #1e66f5; --tw-cursor: #40a02b; } .notfound-wrap { min-height: 70dvh; display: flex; align-items: center; justify-content: center; padding: 3rem 0; } .term-window { width: 100%; max-width: 680px; background: var(--tw-bg); border-radius: 10px; border: 1px solid var(--tw-border); box-shadow: 0 24px 80px rgba(0, 0, 0, 0.4); overflow: hidden; font-family: var(--font-mono); font-size: clamp(0.78rem, 1.5vw, 0.9rem); transition: background-color 0.3s ease, border-color 0.3s ease; } .term-titlebar { background: var(--tw-bar); padding: 0.7rem 1rem; display: flex; align-items: center; gap: 0.75rem; border-bottom: 1px solid var(--tw-border); user-select: none; } .term-dots { display: flex; gap: 0.45rem; span { display: block; width: 12px; height: 12px; border-radius: 50%; } .dot-red { background: #ff5f57; } .dot-yellow { background: #febc2e; } .dot-green { background: #28c840; } } .term-titlebar-label { flex: 1; text-align: center; font-size: 0.72rem; color: var(--tw-muted); letter-spacing: 0.03em; } .term-body { padding: 1.5rem; line-height: 1.65; color: var(--tw-text); min-height: 260px; } .term-row { display: flex; align-items: baseline; gap: 0; white-space: nowrap; overflow: hidden; } .term-ps1 { color: var(--tw-prompt); flex-shrink: 0; white-space: nowrap; pointer-events: none; } .term-input { color: var(--tw-text); overflow: hidden; } .term-out { margin-bottom: 0.9rem; } .term-out-error { color: var(--tw-error); } .term-out-muted { color: var(--tw-muted); margin-bottom: 0.9rem; } .term-out-ls { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; margin-bottom: 0.9rem; a { color: var(--tw-link); text-decoration: none; font-weight: 500; &::before { content: '→ '; color: var(--tw-prompt); } &:hover { color: var(--tw-prompt); text-decoration: underline; } } } .term-cursor { display: inline-block; width: 0.55em; height: 1.1em; background: var(--tw-cursor); vertical-align: text-bottom; animation: blink-cursor 1s step-end infinite; margin-left: 0.15ch; } @keyframes blink-cursor { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }