The title is cut on a cell boundary and ends in …. Hover it to read the full text.
Every row ends on the same column: each Hangul syllable takes exactly 2 cells.
Terminal-style components in plain HTML, CSS and JS. Every panel is sized in character cells, framed with box-drawing glyphs, and filled by a background layer inset half a cell so nothing outside the line is colored. Korean and other wide text snaps to 2-cell slots. Use the View menu or F2, F3, F4 to swap the border set, theme and language.
The title is cut on a cell boundary and ends in …. Hover it to read the full text.
Every row ends on the same column: each Hangul syllable takes exactly 2 cells.
┌─┐ ├┼┤
╔═╗ ╠╬╣
┏━┓ ┣╋┫
╭─╮ ├┼┤
CSS only
Online
Turn 7
Heat 14
Ammo hit
No fill
The fill is a separate layer, inset by --tui-inset-x/y cells. At 0.5 it ends on the centre of the line, so the page shows outside the border.
x 0.5 · y 0.5
data-inset="ne 12 5": a 12 × 5 compartment that shares the box's corner edges, drawn in the box's own border set. The page styles its inside (.tui-inset) and keeps text out of it.
data-theme on one box themes it and everything inside, whatever the page theme. A select popup copies the theme of its box; a warn tone uses that theme's yellow. ice is one CSS block in this page.
Press shows reverse video. Focus shows ▸ ◂ marks. tight drops the inner spaces; field shows a value that opens an editor.
Click a tab or use ← → on the focused tab.
The Attack menu has data-no-hover: the pointer does not move its cursor, only a click does.
| Class | Unit | Tons | W/R/J |
|---|---|---|---|
| Assault | Atlas AS7-D | 100 | 3/5/0 |
| Heavy | Marauder MAD-3R | 75 | 4/6/0 |
| Warhammer WHM-6R | 70 | 4/6/0 | |
| Medium | Shadow Hawk SHD-2H | 55 | 5/8/3 |
| Griffin GRF-1N | 55 | 5/8/5 | |
| Hunchback HBK-4G | 50 | 4/6/0 | |
| Light | Locust LCT-1V | 20 | 8/12/0 |
| Total | 425 | ||
Click a row or use ↑ ↓.
| Heat | Effect |
|---|---|
| 5 | −1 MP |
| 8 | +1 to-hit |
| 14 | Shutdown, avoid on 4+ |
| 19 | Ammo explodes, avoid on 4+ |
The roster merges cells with rowspan and colspan and puts data-rule rows between classes; the heat table uses data-rules="rows" for a rule between every row.
Contact bearing 040, range 9.
Heavy woods block line of sight.
Esc closes. Tab and ← → move between buttons.
Hover or focus. Tooltips size themselves to the text in cells.
data-tip-at is the point of the element, data-tip-anchor the point of the tip placed on it; data-tip-xy pins the tip to a cell of another element. data-tip-runs colours parts of the text.
Wheel or shift+wheel, drag the █ thumb, or click the ▲ ▼ ◂ ▸ arrows and the ░ ▀ track.
A split from markup, with a prefab placed by data-tui-use. Drag a divider, or Tab to it and use the arrow keys.
data-fixed: dividers are drawn but cannot be dragged or focused. Sizes mix percent, fr and cells.
An hstack with a spacer pushes the last button right; a grid with data-columns="10 1fr 1fr" (cells, then fr) and a data-span="all" row. Every slot is a whole number of cells.
Built from script with TUI.h and two prefabs. The buttons call scene.update(); only the parts that changed are patched.
A one-row bar. The page footer uses the same markup.