
@font-face{font-family:'Inter Fallback';src:local('Arial');ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}
:root{--bg:#fff;--fg:#0a0a0a;--muted:#737373;--border:#e5e5e5;--card:#fff;--soft:#fafafa;--primary:#171717;--primary-fg:#fff;--ok-bg:#ecfdf5;--ok:#047857;--bad-bg:#fef2f2;--bad:#b91c1c;--accent:#2563eb;--mod:#b45309;--radius:10px}
@media(prefers-color-scheme:dark){:root{--bg:#0a0a0a;--fg:#fafafa;--muted:#a3a3a3;--border:#262626;--card:#0f0f0f;--soft:#171717;--primary:#fafafa;--primary-fg:#0a0a0a;--ok-bg:#052e16;--ok:#4ade80;--bad-bg:#450a0a;--bad:#fca5a5;--accent:#60a5fa;--mod:#fbbf24}}
*{box-sizing:border-box}
html,body{overflow-x:hidden;max-width:100%}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.scroll table{min-width:640px}
@media(max-width:640px){.wrap{padding:1.5rem .9rem 3rem}h1{font-size:1.7rem}.lede{font-size:.95rem}.feat{min-width:560px}.bases{grid-template-columns:1fr}pre#log{font-size:.7rem}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 Inter,'Inter Fallback',system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
.wrap{max-width:1080px;margin:0 auto;padding:3rem 1.25rem 5rem}
/* Fixed build bar: the Build button, summary and any validation error stay in view no matter how
   far down the form you are, so an invalid option (e.g. version 999) is reported without scrolling. */
#buildbar{position:fixed;left:0;right:0;bottom:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--border);box-shadow:0 -4px 18px rgba(0,0,0,.10)}
#buildbar .inner{max-width:1080px;margin:0 auto;padding:.7rem 1.25rem;display:flex;flex-direction:column;gap:.45rem;max-height:min(60vh,520px);overflow:auto}
#buildbar .row{align-items:center}
#buildbar #status{margin:0;max-height:32vh;overflow:auto}
body{padding-bottom:5.5rem}
h1{font-size:2.1rem;letter-spacing:-.03em;margin:0 0 .5rem;font-weight:700}
.lede{color:var(--muted);font-size:1.05rem;max-width:64ch;margin:0 0 .8rem}
.lede+.lede{margin-bottom:2.5rem}
.lede a{color:var(--muted);text-decoration:underline}
h2{font-size:1.15rem;letter-spacing:-.01em;margin:2.75rem 0 .9rem;font-weight:600;display:flex;align-items:center;gap:.6rem}
h2 .n{display:inline-grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:999px;background:var(--primary);color:var(--primary-fg);font-size:.8rem;font-weight:600}
h3{font-size:.95rem;margin:0 0 .6rem;font-weight:600}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;margin:.6rem 0}
.muted{color:var(--muted)} .small{font-size:.85rem} .nowrap{white-space:nowrap}
code,.mono{font-family:"JetBrains Mono",ui-monospace,Menlo,monospace;font-size:.82em}
.tag{font-size:.72rem;padding:.12rem .5rem;border-radius:999px;background:var(--soft);border:1px solid var(--border);color:var(--muted);white-space:nowrap}
.tag.ok{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.tag.run{background:var(--accent);color:#fff;border-color:transparent;animation:pulse 1.2s ease-in-out infinite} .tag.bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}
tr.live td{background:color-mix(in srgb,var(--accent) 6%,var(--card))}
table.pick{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;border-collapse:separate;border-spacing:0}
table.pick td,table.pick th{padding:.55rem .7rem} table.pick tr:last-child td{border-bottom:0}
table.pick tr:has(input:checked) td{background:color-mix(in srgb,var(--accent) 9%,var(--card))}
table.pick tbody tr{cursor:pointer} table.pick tbody tr:hover td{background:color-mix(in srgb,var(--accent) 5%,var(--card))}
table.pick .ver{font-weight:600;font-variant-numeric:tabular-nums}
input[type=radio]{accent-color:var(--accent);width:1rem;height:1rem;vertical-align:middle}
.opt{display:flex;gap:.6rem;align-items:center;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:var(--card)}
.opt:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}
input[type=text],textarea,select{font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem}
input[type=text]:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
textarea{width:100%;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.8rem;min-height:80px}
.bases{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.5rem}
.bases .opt{align-items:flex-start;flex-direction:column;gap:.15rem}
.bases .opt b{display:flex;gap:.5rem;align-items:center}
table.feat{font-size:.86rem} table.feat td{padding:.3rem .55rem} table.feat th{padding:.25rem .55rem}
table.feat td:first-child{width:7.5rem} table.feat td:nth-child(2){white-space:nowrap} table.feat td:nth-child(5){white-space:nowrap;width:5rem}
.card:has(table.feat){padding:.8rem 1.1rem 0}
.frow .def{font-size:.78rem}
select.tri{font-size:.78rem;padding:.25rem .35rem}
select.tri.v-y{background:var(--ok-bg);color:var(--ok);border-color:transparent}
select.tri.v-n{background:var(--bad-bg);color:var(--bad);border-color:transparent}
.def.y{color:var(--ok)} .def.n{color:var(--muted)} .def.m{color:var(--mod)}
button{font:inherit;font-weight:600;padding:.6rem 1.2rem;border-radius:8px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-fg);cursor:pointer}
button:disabled{opacity:.5;cursor:default}
#progress{margin:0}
.steps{display:flex;flex-wrap:wrap;gap:.3rem;list-style:none;padding:0;margin:0 0 .7rem;font-size:.78rem}
.steps li{padding:.2rem .6rem;border-radius:999px;background:var(--soft);border:1px solid var(--border);color:var(--muted);white-space:nowrap}
.steps li.done{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.steps li.active{background:var(--accent);color:#fff;border-color:transparent;animation:pulse 1.2s ease-in-out infinite}
.steps li.fail{background:var(--bad-bg);color:var(--bad);border-color:transparent}
.steps li small{opacity:.8;margin-left:.3rem}
@keyframes pulse{50%{opacity:.65}}
.pbar{height:8px;background:var(--soft);border:1px solid var(--border);border-radius:4px;overflow:hidden;margin:.4rem 0}
#pfill{height:100%;width:0;background:var(--accent);transition:width .4s}
#pfill.indet{width:30%;animation:slide 1.4s linear infinite}
@keyframes slide{from{margin-left:-30%}to{margin-left:100%}}
#status{margin:.75rem 0;padding:.75rem 1rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--soft)}
#status.done{background:var(--ok-bg);border-color:transparent} #status.failed{background:var(--bad-bg);border-color:transparent}
#status ul{margin:.4rem 0 0;padding-left:1.2rem} #status pre{margin:.5rem 0 0;white-space:pre-wrap;font-size:.8rem}
pre#log{background:#0a0a0a;color:#d4d4d4;padding:1rem;border-radius:var(--radius);max-height:440px;overflow:auto;font-size:.78rem;white-space:pre-wrap;border:1px solid var(--border)}
.dl{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}
.dl a{padding:.45rem .9rem;border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--fg);font-weight:600;background:var(--card)}
.dl .notes{flex-basis:100%;margin:.4rem 0 0;padding-left:1.2rem;font-size:.85rem;color:var(--muted)} .dl .notes li{margin:.1rem 0} .dl .notes summary{cursor:pointer} .dl .notes code{display:block;margin:.3rem 0;font-size:.75rem;line-height:1.5}
.pill{display:inline-flex;gap:.4rem;align-items:center;padding:.4rem .7rem;border:1px solid var(--border);border-radius:8px;cursor:pointer} .pill:has(input:checked){border-color:var(--accent)}
table{border-collapse:collapse;width:100%;font-size:.85rem} td,th{padding:.45rem .55rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
th{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
/* Builds table: keep id/kernel/base/time on one line so "6 min" can't split; the two symbol-list
   columns (on/off) and the download column wrap, and each download link stays whole. */
#builds td,#builds th{white-space:nowrap}
#builds td:nth-child(4),#builds td:nth-child(5){white-space:normal;overflow-wrap:anywhere}
#builds td.dls{white-space:normal} #builds td.dls a{white-space:nowrap}
a{color:var(--accent)}
a.sym{color:inherit;text-decoration:none;border-bottom:1px dotted var(--muted)} a.sym:hover{color:var(--accent);border-bottom-color:var(--accent)}
#resolve{font-size:.85rem}
.ac{position:relative;max-width:560px} #symsearch{width:100%}
.aclist{position:absolute;left:0;right:0;top:100%;z-index:6;background:var(--card);border:1px solid var(--border);border-radius:8px;max-height:320px;overflow:auto;box-shadow:0 8px 24px rgba(0,0,0,.15)}
.aclist div{padding:.4rem .6rem;cursor:pointer;font-size:.85rem;display:flex;gap:.6rem;align-items:baseline} .aclist div:hover,.aclist div.sel{background:color-mix(in srgb,var(--accent) 12%,var(--card))}
.aclist code{min-width:14rem} .aclist span{color:var(--muted)}
#addtable tbody:empty+tfoot{display:none}
#bar{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--accent) 10%,var(--bg));backdrop-filter:blur(6px);border-bottom:1px solid var(--border);padding:.5rem 1rem;font-size:.85rem;display:flex;gap:1rem;align-items:center;justify-content:space-between}
#bar a{font-weight:600} #bar[hidden]{display:none}
#filter{width:100%;max-width:420px;margin:.3rem 0 .6rem}
tr.hide{display:none}
.summary{font-size:.85rem;color:var(--muted)} .summary b{color:var(--fg)}
button.secondary{background:var(--card);color:var(--fg);border-color:var(--border);font-weight:500}
