/* Generated by fpl-project-theme; edit its source repository. */
html[data-project="fungos"] {--paper:#e5e8e2;--page:#c9cdca;--ink:#202d26;--muted:#46554b;--line:#a0aaa0;--link:#28543b;--header:#283d31;--header-rule:#7e9273;--header-ink:#e5eadd;--focus:#714b21;--note-rule:#73836a;--button-border:#6b7e6d;--button-bg:#e5e8e2;--button-fill:#355a3d;--button-hover:#d4ddd0;--button-active:#284a31;--surface:#d3dace;--code-bg:#dce0d7;}
.project-fungos { --project-header:#283d31;--project-page:#c9cdca;--project-paper:#e5e8e2;--project-ink:#202d26; }
html[data-project="holodeck"] {--paper:#fafaf7;--page:#e9eceb;--ink:#25313a;--muted:#59666d;--line:#cbd2d4;--link:#245b81;--header:#203440;--header-rule:#6c919e;--header-ink:#f5f6f2;--focus:#ae7222;--note-rule:#7896a2;--button-border:#7a94a1;--button-bg:#edf2f2;--button-fill:#245b81;--button-hover:#e8edef;--button-active:#203440;--surface:#e8edef;--code-bg:#eef1ef;}
.project-holodeck { --project-header:#203440;--project-page:#e9eceb;--project-paper:#fafaf7;--project-ink:#25313a; }
html[data-project="umie"] {--paper:#eeeaf2;--page:#d7d1df;--ink:#302738;--muted:#64596d;--line:#b7adbf;--link:#65487d;--header:#40304e;--header-rule:#9e85b4;--header-ink:#f7f1fc;--focus:#986b2c;--note-rule:#9e85b4;--button-border:#9e85b4;--button-bg:#eeeaf2;--button-fill:#65487d;--button-hover:#e0d7e9;--button-active:#40304e;--surface:#e0d7e9;--code-bg:#e0d7e9;}
.project-umie { --project-header:#40304e;--project-page:#d7d1df;--project-paper:#eeeaf2;--project-ink:#302738; }
html[data-project="dcp"] {--paper:#f2f0e8;--page:#d9ff43;--ink:#10110f;--muted:#595b50;--line:#242520;--link:#0c79d8;--header:#10110f;--header-rule:#d9ff43;--header-ink:#f2f0e8;--focus:#0c79d8;--note-rule:#d9ff43;--button-border:#242520;--button-bg:#f2f0e8;--button-fill:#10110f;--button-hover:#d9ff43;--button-active:#242520;--surface:#e6e4db;--code-bg:#e6e4db;}
.project-dcp { --project-header:#10110f;--project-page:#d9ff43;--project-paper:#f2f0e8;--project-ink:#10110f; }
html[data-project="unibus"] {--paper:#e7eef0;--page:#cadadc;--ink:#223b40;--muted:#49666b;--line:#9bb7bc;--link:#216671;--header:#21484f;--header-rule:#76aeb7;--header-ink:#eff8f8;--focus:#986b2c;--note-rule:#76aeb7;--button-border:#76aeb7;--button-bg:#e7eef0;--button-fill:#216671;--button-hover:#d7e6e8;--button-active:#21484f;--surface:#d7e6e8;--code-bg:#d7e6e8;}
.project-unibus { --project-header:#21484f;--project-page:#cadadc;--project-paper:#e7eef0;--project-ink:#223b40; }
@charset "UTF-8";
:root { color-scheme:light; --measure:1080px; }
* { box-sizing:border-box; }
body { margin:0; background:var(--page); color:var(--ink); font:16px/1.55 Arial,Helvetica,sans-serif; }
a { color:var(--link); text-underline-offset:3px; }
a:hover { text-decoration-thickness:2px; }
a:focus-visible,summary:focus-visible,.table-scroll:focus-visible { outline:3px solid var(--focus); outline-offset:4px; }
.wrap { width:min(var(--measure),calc(100% - 32px)); margin-inline:auto; }
.skip,.skip-link { position:absolute; top:-80px; left:20px; padding:8px 14px; background:var(--paper); z-index:2; }
.skip:focus,.skip-link:focus { top:10px; }
.masthead,.manual-page>header { background:var(--header); color:var(--header-ink); border-bottom:4px solid var(--header-rule); }
.masthead .wrap,.manual-page>header .wrap { display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:72px; padding-block:13px; flex-wrap:wrap; }
.brand { display:inline-flex; gap:10px; align-items:center; color:inherit; font-weight:650; font-size:23px; text-decoration:none; }
.masthead nav,.manual-page>header nav { display:flex; gap:24px; flex-wrap:wrap; font-size:14px; }
.masthead nav a,.manual-page>header nav a { color:var(--header-ink); }
.site-grid,.page-layout { display:grid; grid-template-columns:190px minmax(0,1fr); gap:29px; margin-block:24px; align-items:start; }
.resources { font-size:15px; padding-top:8px; }
.resources h2 { font-size:16px; margin:0 0 8px; }
.resources ul { list-style:none; margin:0 0 25px; padding:0; }
.resources li { margin-block:6px; }
.resources p { font-size:13px; color:var(--muted); }
main { min-width:0; background:var(--paper); border:1px solid var(--line); padding:26px 29px; }
h1,h2,h3 { line-height:1.25; font-weight:650; letter-spacing:normal; }
h1 { font-size:32px; margin:0 0 16px; }
h2 { font-size:22px; margin:0 0 13px; }
h3 { font-size:17px; margin:20px 0 8px; }
p { margin:0 0 16px; }
section { border-top:1px solid var(--line); padding-block:22px; }
section:first-child { padding-top:0; border-top:0; }
section:last-child { padding-bottom:0; }
.lead { font-size:19px; max-width:40em; }
.note { color:var(--muted); font-size:14px; }
.status,.preview-note { border-left:3px solid var(--note-rule); padding-left:14px; font-size:14px; }
.actions { display:flex; gap:12px; flex-wrap:wrap; margin-block:22px; }
.button { display:inline-block; padding:7px 14px; border:1px solid var(--button-border); background:var(--button-bg); color:var(--ink); text-decoration:none; font-size:14px; font-weight:600; }
.button.primary { background:var(--button-fill); color:white; border-color:var(--button-fill); }
figure { margin:0; }
figure img { display:block; width:100%; height:auto; border:1px solid var(--line); }
figcaption { padding-block:8px; color:var(--muted); font-size:13px; line-height:1.5; }
.gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-block:18px; }
.gallery .square { object-fit:contain; aspect-ratio:4/3; background:#0b1519; }
.capabilities { display:grid; grid-template-columns:100px minmax(0,1fr); gap:10px 16px; margin:0; }
.capabilities dt { font-weight:600; }
.capabilities dd { margin:0; }
.table-scroll { overflow-x:auto; margin-block:18px; }
table { border-collapse:collapse; width:100%; font-size:14px; }
th,td { text-align:left; vertical-align:top; border-bottom:1px solid var(--line); padding:10px 12px; }
thead th { background:var(--surface); }
pre { background:var(--code-bg); border:1px solid var(--line); padding:18px; overflow:auto; font-size:13px; line-height:1.65; }
code { font-family:ui-monospace,"SFMono-Regular",Consolas,monospace; font-size:.9em; }
pre code { font-size:inherit; }
ul { padding-left:22px; }
li { margin-block:5px; }
summary { cursor:pointer; font-weight:600; color:var(--link); }
details { margin-top:20px; }
details>p { margin-top:14px; }
.tech-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; background:var(--header); color:#e7eff1; padding:20px; margin-block:20px; }
.tech-strip a { color:inherit; text-decoration:none; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:5px; font-size:14px; }
.tech-strip img { object-fit:contain; }
.tech-strip small { color:#c1d3db; font-size:11px; }
.luajit-wordmark { font-size:24px; line-height:40px; }.luajit-wordmark b { color:#71c7e6; font-weight:500; }
footer { display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; padding:4px 0 30px; font-size:12px; color:var(--muted); }
@media(max-width:800px) { .site-grid,.page-layout { grid-template-columns:1fr; gap:18px; }.resources { display:flex; gap:30px; flex-wrap:wrap; padding-top:0; }.resources ul { margin-bottom:0; }.resources p { margin:0; }main { padding:19px; }h1 { font-size:30px; }.masthead nav,.manual-page>header nav { gap:16px; }.gallery { gap:16px; }.tech-strip { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:480px) { .wrap { width:calc(100% - 24px); }main { padding:16px; }.gallery { grid-template-columns:1fr; }.capabilities { grid-template-columns:1fr; gap:4px; }.capabilities dd { margin-bottom:12px; }th,td { padding:8px; }.masthead .wrap,.manual-page>header .wrap { gap:12px; } }
@media(min-width:801px) and (max-width:1000px) { .tech-strip { grid-template-columns:repeat(2,minmax(0,1fr)); } }
/* The brand doubles as the shared FPL project switcher. */
.project-switcher { position:relative; margin:0; }
.project-trigger { background:none; border:0; padding:0; font-family:inherit; cursor:pointer; color:inherit; list-style:none; }
.project-chevron { font-size:15px; color:var(--header-ink); margin-left:2px; }
.project-menu { display:none; position:absolute; inset:calc(100% + 10px) auto auto 0; margin:0; width:190px; padding:6px; background:var(--paper); color:var(--ink); border:1px solid var(--line); box-shadow:0 6px 18px #20344020; z-index:3; }
.project-switcher[open] .project-menu { display:block; }
.project-menu::before { content:""; position:absolute; top:-12px; left:0; right:0; height:12px; }
.project-trigger::-webkit-details-marker { display:none; }
.masthead .project-menu a { color:var(--ink); display:flex; justify-content:space-between; align-items:center; padding:7px 10px; font-size:14px; text-decoration:none; }
.masthead .project-menu a:hover,.masthead .project-menu a:focus-visible { background:var(--surface); }
.project-menu a[aria-current] { font-weight:600; }
.project-trigger:focus-visible { outline:3px solid var(--header-ink); outline-offset:5px; }
.project-menu { width:270px; }
.masthead .project-menu a.project-option { display:grid; grid-template-columns:30px minmax(0,1fr); gap:12px; padding:10px; }
.project-option img { display:block; border-radius:4px; background:var(--project-header); }
.project-selected { font-size:12px; color:var(--link); margin-left:4px; }

.navlinks { display:flex; flex-wrap:wrap; gap:24px; font-size:14px; }
.manual-page>header nav { justify-content:space-between; }
.manual { margin-top:24px; padding:24px; }
.manual-source { white-space:pre-wrap; overflow-wrap:anywhere; }
.manual .eyebrow,.secondary,.sidebar-note { color:var(--muted); font-size:14px; }

.manual-page>header .project-menu a { color:var(--ink); display:grid; grid-template-columns:30px minmax(0,1fr); gap:12px; padding:10px; font-size:14px; text-decoration:none; }
.manual-page>header .project-menu a:hover { background:var(--surface); }

.button:hover { background:var(--button-hover); }
.button.primary:hover { background:var(--button-active); color:white; }
html[data-project="fungos"] tbody th { width:22%; }
.project-group { margin:5px 4px 0; padding:9px 6px 4px; border-top:1px solid var(--line); font-size:11px; font-weight:600; color:var(--muted); letter-spacing:.04em; }
.project-kind { display:block; font-size:10px; font-weight:400; color:var(--muted); line-height:1.4; }
.project-dcp { border-left:2px solid var(--project-page); }
.project-dcp>span:first-of-type { font-family:ui-monospace,Consolas,monospace; }

:is(.masthead,.manual-page>header) .project-menu a.project-option { background:var(--project-paper); color:var(--project-ink); border-radius:4px; margin-block:3px; border-left:3px solid var(--project-header); }
:is(.masthead,.manual-page>header) .project-menu a.project-option:hover { box-shadow:inset 0 0 0 1px var(--project-header); }
.project-kind { color:inherit; opacity:.75; }

.docs-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-bottom:22px; }
.docs-actions [data-copy-status] { font-size:14px; }
.docs-provenance { border-top:1px solid var(--line); margin-top:32px; padding-top:16px; font-size:14px; }
.manual article { overflow-x:auto; }
.manual article table { min-width:580px; }
.manual article pre { overflow-x:auto; }
.docs-layout .manual { margin-top:0; }
.docs-sidebar { position:sticky; top:24px; max-height:calc(100vh - 48px); overflow-y:auto; }
.docs-sidebar a[aria-current="page"] { font-weight:650; }
@media(max-width:800px) { .docs-sidebar { position:static; max-height:none; } }
