/* * Terminal Theme * Born-digital. CRT phosphor. The hum of the machine. * Inspired by green-screen terminals, REZ, and the beauty of text on glass. * Content-first -- the digital medium is the accent, not the show. */ /* ---- Color System ---- */ /* Light mode: bright terminal on a pale steel background */ :root { --bg-color: #f0f2f0; --text-color: #1e2d1e; --sidebar-bg: #e4e8e4; --link-color: #1a7a2e; --border-color: #c4cec4; --accent-color: #1a7a2e; --terminal-accent: #1a7a2e; --terminal-glow: rgba(26, 122, 46, 0.08); --terminal-dim: rgba(26, 122, 46, 0.03); --terminal-amber: #a66800; --terminal-red: #c62828; color-scheme: light dark; } /* Dark mode: phosphor green on black */ .theme-dark { --bg-color: #0a0e0a; --text-color: #b0bfb0; --sidebar-bg: #0d110d; --link-color: #4ae54a; --border-color: #1e2a1e; --accent-color: #4ae54a; --terminal-accent: #4ae54a; --terminal-glow: rgba(74, 229, 74, 0.08); --terminal-dim: rgba(74, 229, 74, 0.03); --terminal-amber: #ffab00; --terminal-red: #ff5252; } /* ---- Typography ---- */ body { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'JetBrains Mono', 'Courier New', monospace; font-size: 15px; line-height: 1.65; letter-spacing: 0.02em; background-color: var(--bg-color); color: var(--text-color); -webkit-font-smoothing: antialiased; } /* Subtle scanline overlay -- only in dark mode */ .theme-dark body::after { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999; background: repeating-linear-gradient( to bottom, transparent, transparent 2px, rgba(0, 0, 0, 0.03) 2px, rgba(0, 0, 0, 0.03) 4px ); } /* ---- Sidebar ---- */ .sidebar { background: var(--sidebar-bg); backdrop-filter: none; -webkit-backdrop-filter: none; border-right: 1px solid var(--border-color); font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Courier New', monospace; } .theme-dark .sidebar { background: var(--sidebar-bg); border-right-color: var(--border-color); } .sidebar-section h3 { font-family: inherit; color: var(--terminal-accent); opacity: 0.6; font-size: 0.65rem; letter-spacing: 0.2em; } .theme-dark .sidebar-section h3 { color: var(--terminal-accent); } .sidebar-section li a { font-family: inherit; color: var(--text-color); border-radius: 2px; font-size: 0.8rem; } .theme-dark .sidebar-section li a { color: var(--text-color); } .sidebar-section li a:hover { background: var(--terminal-glow); color: var(--terminal-accent); transform: none; } .theme-dark .sidebar-section li a:hover { background: var(--terminal-glow); color: var(--terminal-accent); } .sidebar-section li.active a { background: var(--terminal-glow); color: var(--terminal-accent); box-shadow: inset 2px 0 0 var(--terminal-accent); border: none; border-radius: 0; font-weight: 500; } .theme-dark .sidebar-section li.active a { background: var(--terminal-glow); color: var(--terminal-accent); } .sidebar-footer { border-top-color: var(--border-color); } .sidebar-footer a { font-family: inherit; color: var(--text-color); opacity: 0.5; font-size: 0.8rem; } .theme-dark .sidebar-footer a { color: var(--text-color); } .sidebar-footer a:hover { color: var(--terminal-accent); background: var(--terminal-dim); opacity: 1; } /* Search */ .sidebar-search input { background: var(--terminal-dim); border: 1px solid var(--border-color); border-radius: 2px; color: var(--text-color); font-family: inherit; } .theme-dark .sidebar-search input { background: var(--terminal-dim); color: var(--text-color); border-color: var(--border-color); } .sidebar-search input:focus { border-color: var(--terminal-accent); box-shadow: 0 0 8px rgba(74, 229, 74, 0.15); } .sidebar-search input::placeholder { color: rgba(0, 0, 0, 0.25); } .theme-dark .sidebar-search input::placeholder { color: rgba(176, 191, 176, 0.3); } /* ---- Toggle ---- */ .sidebar-toggle { opacity: 0.6; } .theme-dark .sidebar-toggle { background: none; } .sidebar-toggle:hover { opacity: 1; } /* ---- Main Content ---- */ .main-content { background-color: var(--bg-color); } /* ---- Feed Items ---- */ .feed-item { border-radius: 0; padding: 1.25rem 0.5rem; margin-top: 1.5rem; border-bottom: 1px solid var(--border-color); } .feed-item.selected { background-color: var(--terminal-dim); box-shadow: inset 3px 0 0 var(--terminal-accent); border-radius: 0; } .theme-dark .feed-item.selected { background-color: var(--terminal-dim); } .item-title { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Courier New', monospace; font-size: 1.4rem; line-height: 1.35; color: var(--terminal-accent); font-weight: 600; letter-spacing: -0.01em; } .item-title:hover { text-decoration: none; } .theme-dark .item-title:hover { color: #ffffff; text-shadow: 0 0 12px rgba(74, 229, 74, 0.3); } .dateline { color: var(--text-color); opacity: 0.35; font-family: inherit; font-size: 0.75em; letter-spacing: 0.04em; } .dateline a { color: inherit; } .dateline a:hover { color: var(--terminal-accent); opacity: 1; } .item-description { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Courier New', monospace; font-size: 0.9rem; line-height: 1.7; color: var(--text-color); } .item-description a { color: var(--terminal-accent); } .theme-dark .item-description a:hover { text-shadow: 0 0 8px rgba(74, 229, 74, 0.2); } .item-description pre { background: var(--terminal-dim); border: 1px solid var(--border-color); border-radius: 2px; font-family: inherit; } /* Star */ .star-btn.is-starred { color: var(--terminal-amber); } .star-btn.is-unstarred { color: var(--text-color); opacity: 0.15; } /* Scrape */ .scrape-btn { font-family: inherit; color: var(--terminal-accent); border-color: var(--border-color); background: transparent; border-radius: 2px; } .scrape-btn:hover { border-color: var(--terminal-accent); } .theme-dark .scrape-btn:hover { box-shadow: 0 0 6px rgba(74, 229, 74, 0.15); } /* ---- Buttons ---- */ button, .button { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Courier New', monospace; border-radius: 2px; border-color: var(--border-color); background: transparent; color: var(--text-color); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; } button:hover, .button:hover { border-color: var(--terminal-accent); color: var(--terminal-accent); background: var(--terminal-dim); } .theme-dark button, .theme-dark .button { background: transparent; color: var(--text-color); border-color: var(--border-color); } .theme-dark button:hover, .theme-dark .button:hover { border-color: var(--terminal-accent); color: var(--terminal-accent); background: var(--terminal-dim); } button.active, .theme-dark button.active { background: var(--terminal-accent); color: var(--bg-color); border-color: var(--terminal-accent); } /* ---- Settings ---- */ .settings-view { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Courier New', monospace; } .settings-view h2 { color: var(--terminal-accent); font-weight: 600; letter-spacing: 0.05em; font-size: 1.5rem; } .settings-section h3 { color: var(--text-color); font-family: inherit; font-size: 1rem; letter-spacing: 0.04em; } .settings-group label, .data-group label { color: var(--text-color); font-family: inherit; letter-spacing: 0.12em; } .theme-dark .settings-view, .theme-dark .settings-view h2, .theme-dark .settings-view h3, .theme-dark .settings-group label, .theme-dark .data-group label { color: var(--text-color) !important; } .theme-dark .settings-view h2 { color: var(--terminal-accent) !important; } /* Inputs */ input[type="text"], input[type="url"], input[type="search"], select { font-family: inherit; background: var(--terminal-dim); border: 1px solid var(--border-color); border-radius: 2px; color: var(--text-color); } input:focus, select:focus { border-color: var(--terminal-accent); box-shadow: 0 0 8px rgba(74, 229, 74, 0.15); } /* Feed list in settings */ .manage-feed-list { border-top-color: var(--border-color); } .manage-feed-item { border-bottom-color: var(--border-color); } .feed-title { font-family: inherit; color: var(--text-color); } .feed-url { font-family: inherit; color: var(--text-color); opacity: 0.4; } /* Delete button */ .delete-feed-btn { color: var(--terminal-red) !important; border-color: rgba(198, 40, 40, 0.3) !important; } .delete-feed-btn:hover { border-color: var(--terminal-red) !important; background: rgba(198, 40, 40, 0.06) !important; } .theme-dark .delete-feed-btn:hover { box-shadow: 0 0 6px rgba(255, 82, 82, 0.2) !important; background: rgba(255, 82, 82, 0.08) !important; } /* ---- Scrollbars ---- */ ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(74, 229, 74, 0.15); border-radius: 0; } .theme-dark ::-webkit-scrollbar-thumb { background: rgba(74, 229, 74, 0.15); } ::-webkit-scrollbar-thumb:hover { background: rgba(74, 229, 74, 0.3); } /* ---- Backdrop ---- */ .sidebar-backdrop { background: rgba(240, 242, 240, 0.6); backdrop-filter: blur(2px); } .theme-dark .sidebar-backdrop { background: rgba(0, 0, 0, 0.6); } /* ---- Loading/Empty States ---- */ .loading, .empty { color: var(--text-color); opacity: 0.4; font-family: inherit; }