/* Legibility only. Styling the browser client properly is not improvise-cr3. */ :root { --bg: #fbfaf7; --fg: #1c1b19; --line: #d8d4cc; --accent: #2f6f4f; --selected: #e8e2d4; --error: #a8322d; color-scheme: light dark; } @media (prefers-color-scheme: dark) { :root { --bg: #17181a; --fg: #e7e4de; --line: #35373b; --accent: #7fc4a0; --selected: #2c2f33; --error: #e2827c; } } * { box-sizing: border-box; } body { margin: 0; height: 100vh; display: flex; flex-direction: column; background: var(--bg); color: var(--fg); font: 14px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; } header { display: flex; gap: 1rem; align-items: baseline; padding: 0.5rem 1rem; border-bottom: 1px solid var(--line); } header h1 { margin: 0; font-size: 1rem; color: var(--accent); } #mode { color: var(--accent); } #status { margin-left: auto; opacity: 0.75; } main { flex: 1; display: flex; min-height: 0; } #categories { width: 15rem; flex: none; overflow: auto; padding: 0.5rem; border-right: 1px solid var(--line); } #categories ul { margin: 0; padding: 0; list-style: none; } #categories .item { padding-left: 1.5rem; opacity: 0.85; } #categories .selected, td.selected { background: var(--selected); outline: 1px solid var(--accent); } #hint { opacity: 0.7; font-size: 0.85em; } /* A keyboard edit in progress. Left-aligned even in a numeric column, because what is drawn is the text being typed rather than a value. */ td.typing { text-align: left; outline: 2px solid var(--accent); } #grid { flex: 1; overflow: auto; padding: 0.5rem; } table { border-collapse: collapse; } th, td { border: 1px solid var(--line); padding: 0.25rem 0.5rem; min-width: 6rem; height: 1.75rem; text-align: left; font-weight: normal; } th { background: color-mix(in srgb, var(--line) 35%, transparent); font-weight: 600; } /* A group header, on either axis. The TUI draws these green and bold; the glyph is already in the text (`indicator` in app.js). */ th.group { color: var(--accent, inherit); font-weight: 700; } td.numeric { text-align: right; } td.error { color: var(--error); } /* The only affordance that matters: a cell the server said is settable. */ td.editable { cursor: text; } td:not(.editable) { opacity: 0.7; } td input { width: 100%; border: none; padding: 0; font: inherit; color: inherit; background: transparent; } /* The page cannot reach a server from a static host, and says so. */ #backend-notice { margin: 0; padding: 0.5rem 1rem; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--accent) 10%, transparent); font-size: 0.85rem; } #backend-notice code { background: color-mix(in srgb, var(--line) 45%, transparent); padding: 0 0.25rem; }