:root { --bg: #0d1117; --fg: #e6edf3; --muted: #8b949e; --accent: #58a6ff; --edge: #3fb950; --edge-bg: rgba(63, 185, 80, 0.15); --border: #30363d; --card: #161b22; --warn: #f0883e; } * { box-sizing: border-box; margin: 0; padding: 0; } body { background: var(--bg); color: var(--fg); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; line-height: 1.6; max-width: 900px; margin: 0 auto; padding: 2rem 1rem; } header { text-align: center; margin-bottom: 3rem; } h1 { font-size: 2rem; margin-bottom: 0.5rem; } h2 { font-size: 1.4rem; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); } h3 { font-size: 1.1rem; margin: 1.5rem 0 0.5rem; } .subtitle { color: var(--muted); max-width: 600px; margin: 0 auto; } section { margin-bottom: 3rem; } p { margin-bottom: 0.75rem; color: var(--fg); } code { background: var(--card); color: var(--accent); padding: 0.15rem 0.4rem; border-radius: 4px; font-family: 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 0.9em; } pre { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; overflow-x: auto; margin: 0.5rem 0; } pre code { background: none; padding: 0; } a { color: var(--accent); text-decoration: none; } a:hover { text-decoration: underline; } /* === Input === */ .input-row { display: flex; gap: 0.5rem; margin-bottom: 1rem; } input[type="text"] { flex: 1; background: var(--card); border: 1px solid var(--border); color: var(--fg); padding: 0.6rem 0.8rem; border-radius: 8px; font-family: 'SF Mono', Consolas, monospace; font-size: 0.9rem; } input[type="text"]:focus { outline: none; border-color: var(--accent); } button { background: var(--accent); color: var(--bg); border: none; padding: 0.6rem 1rem; border-radius: 8px; cursor: pointer; font-weight: 600; white-space: nowrap; } button:hover { opacity: 0.9; } /* === Npub display === */ .npub-display { font-family: 'SF Mono', Consolas, monospace; font-size: 1rem; background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; word-break: break-all; margin-bottom: 0.5rem; } .edge { color: var(--edge); background: var(--edge-bg); padding: 0.1rem 0.15rem; border-radius: 3px; font-weight: 600; } .stats { color: var(--muted); font-size: 0.95rem; margin-bottom: 1.5rem; } .stats strong { color: var(--fg); } /* === Bar chart === */ .chart { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; overflow-x: auto; } .chart-row { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.25rem; } .chart-label { width: 2rem; text-align: right; color: var(--muted); font-family: monospace; font-size: 0.85rem; flex-shrink: 0; } .chart-bars { flex: 1; display: flex; align-items: center; gap: 2px; } .bar-container { display: flex; align-items: center; width: 50%; min-width: 150px; } .suffix-side { justify-content: flex-end; } .prefix-side { justify-content: flex-start; } .bar { height: 1.1rem; border-radius: 3px; transition: width 0.2s ease; } .bar.prefix { background: var(--accent); opacity: 0.5; } .bar.suffix { background: var(--warn); opacity: 0.5; } .bar.best { opacity: 1; } .bar.prefix.best { background: var(--edge); box-shadow: 0 0 8px rgba(63, 185, 80, 0.4); } .bar.suffix.best { background: var(--edge); box-shadow: 0 0 8px rgba(63, 185, 80, 0.4); } .bar-value { font-family: monospace; font-size: 0.75rem; color: var(--muted); padding: 0 4px; min-width: 2.5rem; } .prefix-side .bar-value { text-align: left; } .suffix-side .bar-value { text-align: right; } .bar-suffix-label, .bar-prefix-label { font-size: 0.8rem; color: var(--muted); width: 50%; min-width: 150px; } .bar-suffix-label { text-align: right; } /* === Gallery === */ .gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); gap: 1rem; } .gallery-card { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; } .gallery-card.mined { border-color: var(--edge); } .gallery-label { font-size: 0.8rem; color: var(--muted); margin-bottom: 0.5rem; text-transform: uppercase; letter-spacing: 0.05em; } .gallery-card.mined .gallery-label { color: var(--edge); } .gallery-npub { font-family: 'SF Mono', Consolas, monospace; font-size: 0.85rem; word-break: break-all; margin-bottom: 0.5rem; line-height: 1.4; } .gallery-stats { font-size: 0.85rem; color: var(--muted); } .gallery-stats strong { color: var(--fg); } /* === Tables === */ .example-table { width: 100%; border-collapse: collapse; margin: 0.5rem 0 1.5rem; } .example-table th, .example-table td { text-align: left; padding: 0.5rem; border-bottom: 1px solid var(--border); } .example-table th { color: var(--muted); font-weight: 600; font-size: 0.85rem; } /* === Footer === */ footer { text-align: center; color: var(--muted); font-size: 0.85rem; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--border); } /* === Alphabet display === */ .alphabet-display { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; text-align: center; margin: 1rem 0; } .charset { font-family: 'SF Mono', Consolas, monospace; font-size: 1.1rem; letter-spacing: 0.15rem; color: var(--accent); word-break: break-all; } /* === Entropy spectrum === */ .entropy-spectrum { margin: 1.5rem 0; } .spectrum-bar { height: 12px; border-radius: 6px; background: linear-gradient(to right, var(--edge), var(--warn), var(--muted)); position: relative; margin-bottom: 0.5rem; } .spectrum-fill { position: absolute; top: 0; left: 0; height: 100%; width: 100%; border-radius: 6px; } .spectrum-labels { display: flex; justify-content: space-between; font-size: 0.8rem; color: var(--muted); text-align: center; } .spectrum-left { color: var(--edge); text-align: left; } .spectrum-mid { color: var(--warn); } .spectrum-right { color: var(--muted); text-align: right; } .spectrum-labels small { color: var(--muted); font-size: 0.7rem; }