:root{--g-repeat:#94600a;--g-structure:#8b3d8f;--g-tools:#7a3e14;--g-engine:#a61e4d;--hit:#ffe58a;--hit-2:#c9e3ff;--g1:#2f4fb5;--g2:#b4237a;--g3:#0b7285;--g4:#94600a}:root[data-theme=dark]{--g-repeat:#e3a94b;--g-structure:#d391d6;--g-tools:#e0a07a;--g-engine:#f783ac;--hit:#6b5713;--hit-2:#1f3d63;--g1:#8ea2ff;--g2:#f783ac;--g3:#4fc3d3;--g4:#e3a94b}[data-group=repeat]{--accent:var(--g-repeat)}[data-group=structure]{--accent:var(--g-structure)}[data-group=tools]{--accent:var(--g-tools)}[data-group=engine]{--accent:var(--g-engine)}.slider{flex-direction:column;gap:4px;display:flex}.slider .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;display:flex}.slider .label strong{font:600 13px var(--mono);color:var(--ink);letter-spacing:0}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:13px var(--sans);color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule);cursor:pointer;padding:5px 10px}.chip:hover{border-color:var(--accent)}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.check{font:12px var(--mono);color:var(--ink-2);cursor:pointer;align-items:center;gap:6px;display:inline-flex}.check input{width:auto;accent-color:var(--accent)}.sub-lead{margin:-4px 0 16px}.section-title:first-child{margin-top:0}.big-input{padding:10px 12px;font-size:17px}.big-pattern{color:var(--accent);word-break:break-all;margin:0;font-size:22px}code.code{font:13px var(--mono);background:var(--paper);border:1px solid var(--rule);word-break:break-all;padding:1px 6px}.re-field{border:1px solid var(--rule-strong);background:var(--sheet);align-items:stretch;display:flex}.re-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.re-field .slash{font:500 20px var(--mono);color:var(--ink-3);background:var(--paper);place-items:center;padding:0 8px;display:grid}.re-field input{background:0 0;border:0;flex:1;min-width:0;padding:10px 6px;font-size:17px}.re-field .flags-in{width:4.6em;color:var(--accent);flex:none}.re-field .flags-show{font:600 16px var(--mono);color:var(--accent);place-items:center;padding:0 10px;display:grid}.re-error{font:13px var(--mono);color:var(--bad);background:var(--bad-tint);border-left:3px solid var(--bad);margin:0;padding:8px 12px}.tester{flex-direction:column;gap:12px;display:flex}.marked{font:15px/1.9 var(--mono);white-space:pre-wrap;word-break:break-word;background:var(--paper);border:1px dashed var(--rule);min-height:2.6em;padding:12px 14px}.marked.big{font-size:15px}.marked.inline{background:0 0;border:0;min-height:0;padding:0;line-height:1.5}.marked.output{color:var(--ink);border-style:solid;border-color:var(--accent)}.marked mark{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent);border-radius:2px;padding:2px 0}.marked mark.m0{background:var(--hit)}.marked mark.m1{background:var(--hit-2)}.marked mark.zero{vertical-align:-.2em;background:var(--accent);width:3px;height:1.2em;box-shadow:none;margin:0 1px;display:inline-block}.challenge{border-top:4px solid var(--accent);margin-top:32px}.challenge.solved{border-color:var(--ok)}.challenge.solved .card-title,.challenge.solved .card-head .stat{color:var(--ok)}.challenge-prompt{font:400 19px/1.4 var(--serif);margin:0}.lines{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.lines .label{font:600 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px;display:block}.lines .label.good{color:var(--ok)}.lines .label.bad{color:var(--bad)}.lines ul,.check-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.lines li,.check-list li{font:14px var(--mono);background:var(--paper);border-left:3px solid var(--rule);align-items:baseline;gap:10px;padding:6px 10px;display:flex}.lines li.ok,.check-list li.ok{border-left-color:var(--ok)}.lines li.bad,.check-list li.bad{border-left-color:var(--bad)}.lines .tick,.check-list .tick{flex:none;width:1em;font-weight:600}.lines li.ok .tick,.check-list li.ok .tick{color:var(--ok)}.lines li.bad .tick,.check-list li.bad .tick{color:var(--bad)}.check-list code{word-break:break-all}.inline-list{flex-flow:wrap}.bad-text{color:var(--bad)}.btn[aria-pressed=true]{background:var(--accent-tint);border-color:var(--accent)}.table.compact td,.table.compact th{padding:8px 12px 8px 0}.table.compact td:first-child,.table.compact td:last-child{white-space:normal;width:auto}.table tr.ok td:last-child{color:var(--ok);font-weight:600}.table.matrix td{text-align:center;font-weight:600}.table.matrix td.yes{color:var(--ok)}.table.matrix td.no{color:var(--bad)}.controls-row{flex-direction:column;gap:10px;margin-bottom:4px;display:flex}.trace{flex-direction:column;gap:12px;display:flex}.trace-row{flex-direction:column;gap:6px;display:flex}.trace-row .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.trace-pattern{font:500 20px/1.4 var(--mono);word-break:break-all}.trace-pattern span{border-radius:2px;padding:1px 0}.trace-pattern span.on{color:var(--on-accent);background:var(--accent)}.trace-pattern span.on.fail{background:var(--bad);color:#fff}.trace-pattern span.on.back{background:var(--g-repeat);color:#fff}.cells{flex-wrap:wrap;gap:3px;display:flex}.cell{min-width:30px;height:40px;font:500 17px var(--mono);background:var(--paper);border:1px solid var(--rule);place-items:center;padding:0 4px 10px;display:grid;position:relative}.cell small{color:var(--ink-3);font-size:9px;position:absolute;bottom:1px}.cell.end{border-style:dashed;min-width:14px}.cell.used{background:var(--accent-tint);border-color:var(--accent)}.cell.won{background:color-mix(in srgb, var(--ok) 22%, var(--paper));border-color:var(--ok)}.cell.failed{background:var(--bad-tint);border-color:var(--bad)}.cell.cursor:before{content:"";background:var(--ink);width:3px;position:absolute;top:-5px;bottom:-5px;left:-3px}.trace-msg{min-height:3em;font:15px/1.4 var(--sans);background:var(--paper);border-left:4px solid var(--rule-strong);margin:0;padding:10px 14px}.trace-msg.ok{border-left-color:var(--ok)}.trace-msg.fail{border-left-color:var(--bad)}.trace-msg.back{border-left-color:var(--g-repeat)}.trace-stats{font:12px var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;gap:24px;display:flex}.trace-stats strong{font:400 26px var(--serif);color:var(--accent);letter-spacing:0;text-transform:none;margin-left:6px}.race .card-head{flex-wrap:wrap}.race .card-head .segmented button{font-size:11px}.scroll-x{max-width:100%;overflow-x:auto}.railroad{font:13px var(--mono);display:block}.railroad .rr-line{fill:none;stroke:var(--ink-3);stroke-width:1.5px}.railroad .rr-end{fill:var(--ink)}.railroad .rr-t rect{fill:var(--sheet);stroke:var(--ink);stroke-width:1.5px}.railroad .rr-t text{fill:var(--ink);text-anchor:middle;font:500 13px var(--mono)}.railroad .rr-t.lit rect{fill:var(--accent-tint);stroke:var(--accent)}.railroad .rr-t.anchor rect{fill:var(--paper);stroke-dasharray:3 2}.railroad .rr-t.anchor text{fill:var(--ink-2);font-style:italic}.railroad .rr-t.ref rect{fill:color-mix(in srgb, var(--g2) 14%, var(--sheet));stroke:var(--g2)}.railroad .rr-t.active rect{fill:var(--accent);stroke:var(--accent)}.railroad .rr-t.active text{fill:var(--on-accent)}.railroad .rr-t.active.fail rect{fill:var(--bad);stroke:var(--bad)}.railroad .rr-t.active.fail text{fill:#fff}.railroad .rr-rep.active .rr-loop{stroke:var(--g-repeat);stroke-width:3px}.railroad .rr-arrow{fill:none;stroke:var(--ink-3);stroke-width:1.5px}.railroad .rr-small{fill:var(--ink-3);font:11px var(--mono);text-anchor:middle}.railroad .rr-box>rect{fill:none;stroke:var(--rule-strong);stroke-dasharray:4 3}.railroad .rr-box.look>rect{stroke:var(--g3)}.meta-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin:0;display:grid}.meta-grid>div{background:var(--paper);border:1px solid var(--rule);align-items:baseline;gap:10px;padding:6px 10px;display:flex}.meta-grid dt{min-width:2.2em;font:600 17px var(--mono);color:var(--accent)}.meta-grid dd{color:var(--ink-2);margin:0;font-size:13px}.char-grid{flex-direction:column;gap:4px;display:flex}.char-row{flex-wrap:wrap;gap:3px;display:flex}.char-row span{width:30px;height:32px;font:500 15px var(--mono);color:var(--ink-3);background:var(--paper);border:1px solid var(--rule);place-items:center;transition:background .15s;display:grid}.char-row span.on{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.gaps{flex-wrap:wrap;align-items:stretch;row-gap:8px;padding:10px 0;display:flex}.gap-cell{align-items:stretch;display:flex}.gap-cell .ch{min-width:22px;height:38px;font:500 18px var(--mono);background:var(--paper);border:1px solid var(--rule);place-items:center;display:grid}.gap{width:8px;margin:-4px 0;display:block}.gap.on{background:linear-gradient(var(--accent), var(--accent)) center / 4px 100% no-repeat}.coloured{word-break:break-all;margin:0;font-size:20px}.coloured .g1,th.g1,td.g1{color:var(--g1)}.coloured .g2,th.g2,td.g2{color:var(--g2)}.coloured .g3,th.g3,td.g3{color:var(--g3)}.coloured .g4,th.g4,td.g4{color:var(--g4)}.coloured span[class]{text-underline-offset:5px;font-weight:600;text-decoration:underline}.rule-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.rule-list li{background:var(--paper);border-left:3px solid var(--rule);grid-template-columns:minmax(0,1fr) auto 1.4em;align-items:center;gap:10px;padding:6px 10px;display:grid}.rule-list li.ok{border-left-color:var(--ok)}.rule-list li.bad{border-left-color:var(--bad)}.rule-list li.off{opacity:.55}.rule-list li.ok .tick{color:var(--ok)}.rule-list li.bad .tick{color:var(--bad)}.rule-list code{color:var(--ink-2);font-size:12px}.rule-list .check{font:14px var(--sans);color:var(--ink)}.number-out{font:400 40px/1.2 var(--mono);word-break:break-all;margin:0}.number-out .sep{color:var(--accent);background:var(--accent-tint)}.status:not(.ok):not(.bad):before{display:none}.flag-chips{flex-wrap:wrap;gap:6px;display:flex}.flag-chips .chip strong{font-size:15px}.flag-list{flex-direction:column;margin:0;display:flex}.flag-list>div{border-left:3px solid var(--rule);opacity:.6;padding:10px 12px}.flag-list>div.on{border-left-color:var(--accent);background:var(--accent-tint);opacity:1}.flag-list dt{font-weight:600}.flag-list dt .mono{color:var(--accent);margin-right:6px}.flag-list dd{color:var(--ink-2);margin:2px 0 0;font-size:14px}.automaton{font:13px var(--mono);display:block}.automaton .edge{fill:none;stroke:var(--ink-3);stroke-width:1.5px}.automaton .eps .edge{stroke-dasharray:4 3}.automaton .arrowhead{fill:var(--ink-3)}.automaton .edge-label{fill:var(--ink);font:600 12px var(--mono);paint-order:stroke;stroke:var(--sheet);stroke-width:4px}.automaton .eps .edge-label{fill:var(--ink-3);font-weight:400}.automaton .state circle{fill:var(--sheet);stroke:var(--ink);stroke-width:1.5px}.automaton .state text{fill:var(--ink);font:600 12px var(--mono)}.automaton .state.active circle{fill:var(--accent);stroke:var(--accent)}.automaton .state.active circle.inner{stroke:var(--on-accent);fill:none}.automaton .state.active text{fill:var(--on-accent)}.automaton .state circle.inner{fill:none}.bars{flex-direction:column;gap:8px;display:flex}.bar-row{grid-template-columns:3.5em minmax(0,1fr) 3.5em;align-items:center;gap:10px;display:grid}.bar-row .bar{width:100%;height:18px;margin:0}.bar-row strong{text-align:right}.bar-row span.bar span{transition:width .3s}.redos-chart{width:100%;height:auto;display:block}.redos-chart polyline{fill:none;stroke-width:2.5px;stroke-linejoin:round}.redos-chart .series-evil polyline{stroke:var(--bad)}.redos-chart .series-evil circle{fill:var(--bad)}.redos-chart .series-safe polyline{stroke:var(--ok);stroke-dasharray:5 4}.redos-chart .series-safe circle{fill:var(--ok)}.redos-chart .cap{fill:none;stroke:var(--bad);stroke-width:2.5px;stroke-dasharray:none}.redos-chart .series-label{font:600 12px var(--mono);fill:var(--ink);paint-order:stroke;stroke:var(--sheet);stroke-width:4px}.redos-chart .grid text{fill:var(--ink-3);font:11px var(--mono)}.anatomy-pattern{font:500 24px var(--mono);flex-wrap:wrap;align-items:flex-end;gap:4px;margin:0 0 12px;display:flex}.anatomy-pattern .part{background:var(--accent-tint);border-bottom:2px solid var(--accent);flex-direction:column;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.anatomy-pattern .part .marker{margin:0}.anatomy-pattern .slash{color:var(--ink-3)}.anatomy{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.wrong-out{color:var(--bad);border-color:var(--bad)}.right-out{color:var(--ok);border-color:var(--ok)}.hash.big{word-break:break-all}@media (width<=960px){.anatomy{grid-template-columns:minmax(0,1fr)}}@media (width<=720px){.lines{grid-template-columns:minmax(0,1fr)}.trace-pattern{font-size:17px}.cell{min-width:24px;height:36px;font-size:15px}.char-row span{width:26px;height:30px;font-size:14px}.number-out{font-size:28px}.challenge-prompt{font-size:17px}}@media (pointer:coarse){.chip,.check{min-height:44px}}.grid-2+.note,.tiles+.note,.card+.note,.grid-2+.tiles{margin-top:20px}.railroad .rr-box .rr-small{paint-order:stroke;stroke:var(--sheet);stroke-width:5px}.table th.mono,.table td.mono{text-transform:none;letter-spacing:0;font-family:var(--mono)}
