/* 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); } #formulas, #views { width: 18rem; flex: none; overflow: auto; padding: 0.5rem; border-right: 1px solid var(--line); } #categories ul, #formulas ul, #views ul { margin: 0; padding: 0; list-style: none; } #views .axes { margin-left: 0.5rem; opacity: 0.6; font-size: 0.85em; } #views .active .name { color: var(--accent); } /* The tile bar. One line above the grid, as the TUI draws it. */ #tiles { display: flex; gap: 0.25rem; padding: 0.25rem 0.5rem; border-bottom: 1px solid var(--line); overflow-x: auto; white-space: nowrap; } #tiles .tile { padding: 0 0.4rem; border: 1px solid var(--line); border-radius: 3px; font-size: 0.85em; } #categories .item { padding-left: 1.5rem; opacity: 0.85; } #categories .selected, #formulas .selected, #views .selected, #tiles .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; } /* The help overlay. Content is improvise_protocol::help's; this is paint. */ #help { position: fixed; inset: 2rem; overflow: auto; padding: 1rem; border: 1px solid var(--accent); background: var(--bg); font-size: 0.9rem; } .help-tabs { display: flex; gap: 0.75rem; border-bottom: 1px solid var(--line); padding-bottom: 0.5rem; margin-bottom: 0.75rem; } .help-tab.active { color: var(--accent); font-weight: 600; } .help-body { display: grid; grid-template-columns: 16rem 1fr; gap: 0 1rem; margin: 0; } .help-body dt, .help-body dd { margin: 0; min-height: 1.2em; } .help-heading { grid-column: 1 / -1; font-weight: 600; color: var(--accent); } .help-banner { grid-column: 1 / -1; font-weight: 700; } .help-text, .help-accent, .help-blank { grid-column: 1 / -1; white-space: pre; } .help-dim { opacity: 0.7; }