diff --git a/cmd/chvt/main.c b/cmd/chvt/main.c
index aa78fc6..08a9b99 100644
--- a/cmd/chvt/main.c
+++ b/cmd/chvt/main.c
@@ -19,13 +19,14 @@
// guest cannot detect this: a key the host swallowed is indistinguishable from
// a key nobody pressed. So it is a setting.
//
-// chvt -c altgr+F AltGr+F1..F6 (the default)
-// chvt -c ctrl+shift+F Ctrl+Shift+F1..F6
-// chvt -c alt+1 Alt+1..6
+// chvt -c ctrl+alt+F Ctrl+Alt+F1..F12 (the default)
+// chvt -c altgr+F AltGr+F1..F12
+// chvt -c ctrl+shift+F Ctrl+Shift+F1..F12
+// chvt -c alt+1 Alt+1..9
// chvt -c off no chord at all
//
// Whatever the modifiers are, they also bind minus and equals to the previous
-// and next terminal in use -- AltGr+- and AltGr+= by default.
+// and next terminal in use -- Ctrl+Alt+- and Ctrl+Alt+= by default.
#include "core/types.h"
#include "uapi/user.h"
diff --git a/docs/Website/download.html b/docs/Website/download.html
index 784f639..54efd76 100644
--- a/docs/Website/download.html
+++ b/docs/Website/download.html
@@ -243,9 +243,9 @@
4
Step four
-
Six terminals
+
Twelve terminals
- AltGr+F1…F6
+ Ctrl+Alt+F1…F12
switches between them — the one chord a Linux host does not take for
itself — or chvt N from a shell.
diff --git a/docs/Website/index.html b/docs/Website/index.html
index 09feebf..31fecef 100644
--- a/docs/Website/index.html
+++ b/docs/Website/index.html
@@ -347,7 +347,7 @@
Six of them, each with its own cell grid, scrollback and foreground
- job — switched with AltGr+F1…F6,
+ job — switched with Ctrl+Alt+F1…F12,
which is the one chord a Linux host does not take for itself. The console
draws to whichever framebuffer is present, from the kernel's first line.
diff --git a/docs/Website/releases/schos.iso b/docs/Website/releases/schos.iso
new file mode 100644
index 0000000..16f9c0e
Binary files /dev/null and b/docs/Website/releases/schos.iso differ
diff --git a/docs/architecture/README.md b/docs/architecture/README.md
index 7e46a09..8f1687c 100644
--- a/docs/architecture/README.md
+++ b/docs/architecture/README.md
@@ -18,7 +18,7 @@ its distribution.
| API | **SchAPI** | The native programming interface — *designed, not built* |
| Compositor | **Schcom** | Owns the display; v0 runs |
-Six virtual terminals sit under all of it -- `/dev/tty1`..`tty6`, AltGr+F1..F6
+Twelve virtual terminals sit under all of it -- `/dev/tty1`..`tty12`, Ctrl+Alt+F1..F12
or `chvt N` --
each with its own screen, line discipline and foreground process group. See
[terminals.md](terminals.md).
diff --git a/docs/architecture/terminals.md b/docs/architecture/terminals.md
index 1df3878..5beb717 100644
--- a/docs/architecture/terminals.md
+++ b/docs/architecture/terminals.md
@@ -1,12 +1,13 @@
# Virtual terminals
-Six of them, `/dev/tty1` through `/dev/tty6`.
+Twelve of them, `/dev/tty1` through `/dev/tty12`, one per function key.
| | |
|---|---|
-| **AltGr+F1 .. F6** | go to that terminal |
-| **AltGr+-** / **AltGr+=** | previous / next terminal *in use* |
+| **Ctrl+Alt+F1 .. F12** | go to that terminal — on the console and under X alike |
+| **Alt+F1 .. F12** | the same, on the text console only (X keeps plain Alt) |
+| **Ctrl+Alt+-** / **Ctrl+Alt+=** | previous / next terminal *in use* |
| `chvt N` | the same, from a script or a serial console |
The chord is settable — `chvt -c` — for the reasons below. Each one is an independent terminal: its own screen, its own
@@ -14,8 +15,9 @@ cursor, its own line discipline, its own foreground process group and its own
session. Two shells on two terminals are two unrelated processes that happen to
share a keyboard and a screen.
-A seventh is deliberately not bound. That is where a display server goes,
-and it will claim switching with `VT_SETMODE` rather than a chord.
+A display server takes one of them with `VT_SETMODE` and does its own
+switching; X switches with Ctrl+Alt+F-key, which is why that is the default
+here too.
---
@@ -202,8 +204,9 @@ So the kernel ships a default and lets it be moved:
```sh
chvt # report the active terminal and the current chord
-chvt -c altgr+F # AltGr+F1..F6 (the default)
-chvt -c ctrl+shift+F # Ctrl+Shift+F1..F6
+chvt -c ctrl+alt+F # Ctrl+Alt+F1..F12 (the default)
+chvt -c altgr+F # AltGr+F1..F12 (the default until 2026-10)
+chvt -c ctrl+shift+F # Ctrl+Shift+F1..F12
chvt -c alt+1 # Alt+1..6
chvt -c off # no chord; chvt N is then the only way
```
@@ -211,23 +214,23 @@ chvt -c off # no chord; chvt N is then the only way
`off` is a legitimate setting, not a failure mode. On a machine whose host
grabs everything worth binding, `chvt N` from a shell is the honest answer.
-The default is **AltGr+F1..F6**, and the `AltGr+`letter row above needs reading
-carefully: what a Polish layout wants is AltGr with a **letter**. AltGr with a
-**function key** produces nothing on any layout, no window manager binds it,
-and no application asks for it. It is the one combination all three parties
-leave alone.
+The default is **Ctrl+Alt+F1..F12**. It was AltGr+F-key for a long time —
+AltGr with a **function key** produces nothing on any layout, no window manager
+binds it, and no application asks for it — but X owns the keyboard while it
+runs and switches only with Ctrl+Alt+F-key, so the console and the desktop
+answered different keys for the same thing. One chord everywhere wins. Inside
+a VM whose host grabs Ctrl+Alt+F-key, `chvt -c altgr+F` brings the old one
+back.
That distinction is only expressible because Right Alt is tracked as its own
modifier bit. It used to share `ALT`, which is harmless for typing — neither is
used to look up a character — and made this impossible to say.
-Verified rather than argued: with the default set, `AltGr+F2` switches,
-`AltGr+F1` returns to a pixel-identical tty1, and `AltGr+a` still reaches the
-shell, so ą is untouched.
+AltGr+letter still reaches the shell untouched, so ą is unaffected either way.
Whatever the modifiers are, they also bind **minus** and **equals** to the
previous and next terminal. Those step only through terminals that are *in
-use* — the same `opened` count `VT_GETSTATE` reports — because six terminals
+use* — the same `opened` count `VT_GETSTATE` reports — because twelve terminals
with two shells on them means four blank screens in between, and cycling past
them is worse than not having the key.
diff --git a/docs/niveus/dist/niveus.css b/docs/niveus/dist/niveus.css
new file mode 100644
index 0000000..c446fee
--- /dev/null
+++ b/docs/niveus/dist/niveus.css
@@ -0,0 +1,3705 @@
+/* Niveus — generated bundle. Do not edit.
+ Source: niveus/niveus.css and the files it imports.
+ Rebuild: python3 tools/build.py
+*/
+
+/* ==========================================================================
+ Niveus — a calm, adaptive interface language.
+ Made by Nexoniarz.
+ --------------------------------------------------------------------------
+ The single entry point. An application links this file and nothing else:
+
+