@font-face { font-family: 'fantasque'; src: url('/fonts/fantasque.woff'); } :root { --content-padding: 2rem; --border-radius: 10px; --font: 'fantasque'; --font-fallback: monospace; } /* */ * { color: var(--foreground); font-family: var(--font), var(--font-fallback); box-sizing: border-box; margin: 0; padding: 0; } /* */ /* */ html { display: flex; justify-content: center; min-height: 100vh; padding: var(--content-padding); background-image: url('/img/background.jpg'); background-repeat: repeat; } body { display: grid; grid-template-rows: auto 1fr auto; padding: var(--content-padding); padding-left: auto; border-radius: var(--border-radius); min-height: calc(100vh - 2 * var(--content-padding)); width: 100%; max-width: 1200px; background-color: var(--background-body); backdrop-filter: blur(16px); } main { height: 100%; overflow-y: scroll; } /* */ /* */ h1 { font-size: 3rem; } h2 { font-size: 2rem; } h3 { font-size: 1.45rem; } hr { margin: 1rem; border: 0; height: 1px; background-image: linear-gradient( to right, rgba(0, 0, 0, 0.1), var(--foreground), rgba(0, 0, 0, 0.1) ); } a { color: var(--regular6); } /* */ /* */ /*
*/ textarea { height: 30rem; border: 3px solid var(--regular3); padding: 1rem; border-radius: 4px; background: none; resize: vertical; font-family: var(--font), var(--font-fallback); font-size: 1.5rem; line-height: 1; white-space: pre; font-feature-settings: 'tnum', 'kern' 0; font-variant-numeric: tabular-nums; } *:focus { border-color: var(--regular6); outline: none; transition: border-color 0.5s; } /*
*/ /* */ .maybe-visible { transition: opacity 0.5s; } .visible { opacity: 1; } .invisible { opacity: 0; } /* */ /* */ button { background: none; display: block; border: 3px solid var(--regular3); border-radius: 4px; width: 100%; padding: 8px; } button:hover { border: 3px solid var(--regular6); transition: border-color 0.2s ease-in-out; } button:disabled, button[disabled] { } /* */ /* */ .grid { border: 3px solid var(--regular4); padding: 1rem; background-color: var(--background); font-size: 1.5rem; cursor: pointer; display: flex; flex-direction: column; align-items: center; line-height: 1; white-space: pre; border-radius: 4px; overflow-x: auto; font-feature-settings: 'tnum', 'kern' 0; font-variant-numeric: tabular-nums; } .grid-row { display: flex; } .grid-cell { display: inline-block; min-width: 1ch; width: 1ch; max-width: 1ch; text-align: center; overflow: hidden; vertical-align: top; transition: background-color 0.1s ease-in-out; box-sizing: border-box; white-space: nowrap; } .highlightable:hover { background-color: var(--background-body); } /* */ /* */ .toolbar { display: flex; gap: 0.5rem; padding: 0.75rem; background-color: var(--background); border: 3px solid var(--regular4); border-radius: 4px; align-items: center; justify-content: center; margin: 0 auto; width: fit-content; } .toolbar-item { position: relative; display: flex; align-items: center; justify-content: center; padding: 0.5rem; border: 2px solid var(--regular3); border-radius: 4px; background: none; cursor: pointer; transition: border-color 0.2s ease-in-out; min-width: 2.5rem; min-height: 2.5rem; } .toolbar-item:hover:not(.disabled) { border-color: var(--regular6); } .toolbar-item.disabled { opacity: 0.4; cursor: not-allowed; border-color: var(--bright0); } .toolbar-item-content { display: flex; align-items: center; justify-content: center; } .toolbar-item-content-panel { position: absolute; top: calc(100% + 0.5rem); left: 50%; transform: translateX(-50%); padding: 0.5rem 0.75rem; background-color: var(--background); border: 2px solid var(--regular6); border-radius: 4px; z-index: 1000; animation: fadeIn 0.2s ease-in-out; } .toolbar-item-content-panel.fading { animation: fadeOut 0.2s ease-in-out; } .toolbar-item-content-panel::after { content: ''; position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); border: 0.375rem solid transparent; border-bottom-color: var(--regular6); } @keyframes fadeIn { from { opacity: 0; transform: translateX(-50%) translateY(-0.25rem); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } @keyframes fadeOut { from { opacity: 1; transform: translateX(-50%) translateY(0); } to { opacity: 0; transform: translateX(-50%) translateY(-0.25rem); } } /* */