html { height: 100%; } body { font-size: 24px; min-height: 100%; margin: 0; display: flex; justify-content: center; align-items: center; background: #404040; } main { display: grid; grid: "level meta" min-content "level nav" min-content "level chips" min-content "level time" min-content "level hint" 1fr "level inventory" min-content "controls controls" "demo demo" / min-content 12em ; gap: 1em; image-rendering: optimizeSpeed; --tile-width: 32px; --tile-height: 32px; --scale: 2; } button { font-size: inherit; } .level { grid-area: level; position: relative; } .level canvas { display: block; width: calc(9 * var(--tile-width) * var(--scale)); } .bummer { grid-area: level; display: flex; justify-content: center; align-items: center; z-index: 99; font-size: 48px; padding: 25%; background: #0009; color: white; text-align: center; font-weight: bold; text-shadow: 0 2px 1px black; } .bummer:empty { display: none; } .meta { grid-area: meta; color: yellow; background: black; text-align: center; } .nav { grid-area: nav; display: flex; gap: 1em; } .nav .nav-browse { flex: 1; } .chips { grid-area: chips; padding: 0 0.5em; color: yellow; background: black; } .chips::before { content: "chips left: "; } .time { grid-area: time; } .hint { grid-area: hint; } .inventory { grid-area: inventory; display: flex; flex-wrap: wrap; align-items: start; background-size: calc(2 * var(--tile-width)) calc(2 * var(--tile-height)); width: calc(4 * var(--tile-width) * 2); min-height: calc(2 * var(--tile-height) * 2); } .inventory img { width: calc(2 * var(--tile-width)); } .controls { grid-area: controls; } .demo { grid-area: demo; } .demo-scrubber { position: relative; overflow-x: auto; padding: 0; margin: 1em 0; list-style: none; } .demo-scrubber li { position: relative; height: 1em; margin: 2px 0; background: #303030; } .demo-scrubber li .demo-scrubber-bar { position: absolute; height: 1em; left: calc(var(--start-time) * 3px); width: calc((var(--end-time) - var(--start-time)) * 3px); background: #606060; } .demo-scrubber .demo-scrubber-marker { position: absolute; top: 0; bottom: 0; left: calc(var(--time) * 3px); width: 2px; margin-left: -1px; background: darkred; --time: 0; } /* Debug stuff */ .input { display: grid; grid: "drop up cycle" 1.5em "left swap right" 1.5em ". down . " 1.5em / 1.5em 1.5em 1.5em ; gap: 0.5em; } .input-action { padding: 0.25em; line-height: 1; color: #fff4; background: #202020; } .input-action[data-action=up] { grid-area: up; } .input-action[data-action=down] { grid-area: down; } .input-action[data-action=left] { grid-area: left; } .input-action[data-action=right] { grid-area: right; } .input-action[data-action=swap] { grid-area: swap; } .input-action[data-action=cycle] { grid-area: cycle; } .input-action[data-action=drop] { grid-area: drop; } .input-action.--pressed { color: white; background: hsl(215, 75%, 25%); }