/* The parity law on a network. Every rule is scoped under the doubled root class .rbv2.rbv2.
   One meaning per colour (cyan is kept for the one-cell four motions, so none here): thick solid ink a posting that met a mixed
   pair and a condition that holds, red dashed a posting that branches, solid red with a cross a condition that fails, a faint
   outline a site with no contacts, magenta the posting being shown or the site chosen for a contact. Tokens fall back to the page's --rbt-* tokens. */
.rbv2.rbv2 {
  --rbv-paper: var(--rbt-paper, #faf8f3); --rbv-ink: var(--rbt-ink, #1d1d1b); --rbv-body: var(--rbt-body, #2a2926);
  --rbv-soft: var(--rbt-soft, #3c3a36); --rbv-hair: var(--rbt-hair, #8a8a8a);
  --rbv-rule: color-mix(in srgb, var(--rbv-ink) 16%, var(--rbv-paper));
  --rbv-faint: color-mix(in srgb, var(--rbv-ink) 26%, var(--rbv-paper));
  --rbv-grey: color-mix(in srgb, var(--rbv-ink) 10%, var(--rbv-paper));
  --rbv-cyan: var(--rbt-kept, #009fe3); --rbv-cyan-text: var(--rbt-kept-text, #00739f);
  --rbv-red: var(--rbt-leak, #c8401f); --rbv-red-text: var(--rbt-leak-text, #ad371a);
  --rbv-magenta: var(--rbt-rec, #e6007e); --rbv-magenta-text: var(--rbt-rec-text, #c0006a);
  --rbv-text: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
  --rbv-display: "Inter Display", "InterVariable", "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
  --rbv-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
  margin: 0; padding: 0; color: var(--rbv-body); font: 420 16px/1.42 var(--rbv-text); font-optical-sizing: auto;
  border: 1px solid var(--rbv-rule); background: transparent; box-sizing: border-box; min-width: 0;
}
@media (prefers-color-scheme: dark) {
  .rbv2.rbv2 {
    --rbv-paper: var(--rbt-paper, #141413); --rbv-ink: var(--rbt-ink, #faf8f3); --rbv-body: var(--rbt-body, #e9e6df); --rbv-soft: var(--rbt-soft, #c9c5bc);
    --rbv-grey: color-mix(in srgb, var(--rbv-ink) 14%, var(--rbv-paper)); --rbv-faint: color-mix(in srgb, var(--rbv-ink) 30%, var(--rbv-paper));
    --rbv-cyan: var(--rbt-kept, #2bb3f0); --rbv-cyan-text: var(--rbt-kept-text, #2bb3f0); --rbv-red: var(--rbt-leak, #ff6a3d); --rbv-red-text: var(--rbt-leak-text, #ff8a63);
    --rbv-magenta: var(--rbt-rec, #ff3d9e); --rbv-magenta-text: var(--rbt-rec-text, #ff6fb6);
  }
}
.rbv2.rbv2 *, .rbv2.rbv2 *::before, .rbv2.rbv2 *::after { box-sizing: border-box; }
.rbv2.rbv2 :is(p, span, b, i, ol, li, button) { margin: 0; }
.rbv2.rbv2 i { font-style: normal; }
.rbv2.rbv2 .rbv2-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.rbv2.rbv2 .rbv2-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; padding: .75rem 1.1rem;
  border-bottom: 1px solid var(--rbv-rule); font: 700 .7rem/1.5 var(--rbv-mono); letter-spacing: .13em; text-transform: uppercase; color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-sub { color: var(--rbv-soft); }
.rbv2.rbv2 .rbv2-lede { padding: 1rem 1.1rem 0; max-width: 40rem; }
.rbv2.rbv2 .rbv2-caption p { max-width: 40rem; }
.rbv2.rbv2 .rbv2-glabel { font: 700 .66rem/1.4 var(--rbv-mono); letter-spacing: .13em; text-transform: uppercase; color: var(--rbv-soft); }
.rbv2.rbv2 :is(button):focus-visible { outline: 3px solid var(--rbv-ink); outline-offset: 2px; }
.rbv2.rbv2 .rbv2-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 1.2rem 2rem; padding: 1rem 1.1rem 1.1rem; align-items: start; }
.rbv2.rbv2.rbv2-stack .rbv2-body { grid-template-columns: minmax(0, 1fr); }
.rbv2.rbv2 .rbv2-lp, .rbv2.rbv2 .rbv2-rp { display: flex; flex-direction: column; gap: .7rem; min-width: 0; }
.rbv2.rbv2 .rbv2-row { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .4rem; }
.rbv2.rbv2 .rbv2-row > .rbv2-glabel { flex: 0 0 100%; }
.rbv2.rbv2 .rbv2-btn { font: 600 .82rem/1.2 var(--rbv-text); color: var(--rbv-ink); background: transparent; border: 1px solid var(--rbv-ink);
  border-radius: 0; padding: .45rem .65rem; min-height: 40px; cursor: pointer; touch-action: manipulation; }
@media (hover: hover) { .rbv2.rbv2 .rbv2-btn:hover:not(:disabled):not([aria-disabled="true"]) { background: color-mix(in srgb, var(--rbv-ink) 7%, transparent); } }
.rbv2.rbv2 .rbv2-btn[aria-pressed="true"] { background: var(--rbv-ink); color: var(--rbv-paper); }
.rbv2.rbv2 :is(.rbv2-btn:disabled, .rbv2-btn[aria-disabled="true"]) { color: var(--rbv-hair); border-color: var(--rbv-faint); cursor: default; }
.rbv2.rbv2 .rbv2-go:not(:disabled):not([aria-disabled="true"]) { border-width: 2px; font-weight: 750; padding: calc(.45rem - 1px) calc(.65rem - 1px); }
.rbv2.rbv2 .rbv2-mode { font-weight: 500; }

/* the network */
.rbv2.rbv2 .rbv2-stage { position: relative; width: 100%; max-width: 380px; aspect-ratio: 1 / 1; align-self: center; }
.rbv2.rbv2 .rbv2-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.rbv2.rbv2 .rbv2-edge { stroke: var(--rbv-ink); stroke-width: 2; }
.rbv2.rbv2 .rbv2-edge.rbv2-aw { stroke: var(--rbv-ink); stroke-width: 5; }
.rbv2.rbv2 .rbv2-edge.rbv2-br { stroke: var(--rbv-red); stroke-width: 4; stroke-dasharray: 6 4; }
.rbv2.rbv2 .rbv2-edge.rbv2-cur { stroke: var(--rbv-magenta); stroke-width: 6; }
.rbv2.rbv2 .rbv2-chip { fill: var(--rbv-paper); stroke: var(--rbv-ink); stroke-width: 1.2; }
.rbv2.rbv2 .rbv2-chip.rbv2-cur { stroke: var(--rbv-magenta); stroke-width: 2.4; }
.rbv2.rbv2 .rbv2-chipt { font: 700 10px var(--rbv-mono); fill: var(--rbv-ink); text-anchor: middle; dominant-baseline: middle; }
.rbv2.rbv2 .rbv2-site { position: absolute; width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 50%; border: 2px solid var(--rbv-ink);
  background: var(--rbv-paper); color: var(--rbv-ink); cursor: pointer; padding: 0; touch-action: manipulation; display: flex; align-items: center; justify-content: center; }
.rbv2.rbv2 .rbv2-site.rbv2-occ { background: var(--rbv-ink); color: var(--rbv-paper); }
.rbv2.rbv2 .rbv2-site.rbv2-untouched { border-color: var(--rbv-faint); }
.rbv2.rbv2 .rbv2-site.rbv2-selz { box-shadow: 0 0 0 3px var(--rbv-paper), 0 0 0 6px var(--rbv-magenta); }
.rbv2.rbv2 .rbv2-site.rbv2-curz { box-shadow: 0 0 0 3px var(--rbv-paper), 0 0 0 6px var(--rbv-magenta); }
.rbv2.rbv2 .rbv2-clk { font: 800 1.15rem/1 var(--rbv-mono); }
.rbv2.rbv2 .rbv2-num { position: absolute; top: -1.15rem; left: 50%; transform: translate(-50%, -50%); font: 400 .7rem/1 var(--rbv-mono); color: var(--rbv-soft); white-space: nowrap; }
.rbv2.rbv2 .rbv2-hint { font-size: .84rem; color: var(--rbv-soft); min-height: 1.3em; }
.rbv2.rbv2 .rbv2-ekey { font-size: .78rem; line-height: 1.3; color: var(--rbv-soft); max-width: 24rem; list-style: none; padding: 0; margin: .4rem 0; display: grid; gap: .2rem; }
.rbv2.rbv2 .rbv2-ekey li { display: flex; align-items: center; gap: .45rem; }
.rbv2.rbv2 .rbv2-ksw { flex: 0 0 26px; }

/* right side */
.rbv2.rbv2 .rbv2-box { display: flex; flex-direction: column; gap: .4rem; padding-top: .55rem; border-top: 1px solid var(--rbv-rule); }
.rbv2.rbv2 .rbv2-order { display: flex; flex-wrap: wrap; gap: .3rem .5rem; padding: 0; margin: 0; list-style: none; counter-reset: rbv2o; }
.rbv2.rbv2 .rbv2-order li { counter-increment: rbv2o; font: 700 .82rem/1.3 var(--rbv-mono); color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-order li::before { content: counter(rbv2o) ". "; color: var(--rbv-soft); font-weight: 400; }
.rbv2.rbv2 .rbv2-order li.rbv2-none { font: 400 .84rem/1.3 var(--rbv-text); color: var(--rbv-soft); }
.rbv2.rbv2 .rbv2-order li.rbv2-none::before { content: none; }
.rbv2.rbv2 .rbv2-order li.rbv2-curli { color: var(--rbv-magenta-text); }
.rbv2.rbv2 .rbv2-cond { display: flex; flex-wrap: wrap; gap: .25rem .45rem; align-items: baseline; }
.rbv2.rbv2 .rbv2-ch { flex: 0 0 100%; font-size: .82rem; color: var(--rbv-body); }
.rbv2.rbv2 .rbv2-c { font: 700 .76rem/1.3 var(--rbv-mono); padding: .1rem .35rem; border: 1px solid var(--rbv-faint); }
.rbv2.rbv2 .rbv2-c.rbv2-ok { color: var(--rbv-ink); border-color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-c.rbv2-bad { color: var(--rbv-red-text); border-color: var(--rbv-red); border-width: 2px; }
.rbv2.rbv2 .rbv2-verdict { font-size: .88rem; font-weight: 600; color: var(--rbv-body); min-height: 1.3em; }
.rbv2.rbv2 .rbv2-verdict.rbv2-okv { color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-verdict.rbv2-badv { color: var(--rbv-red-text); }
.rbv2.rbv2 .rbv2-agree { font: 700 .7rem/1.4 var(--rbv-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--rbv-soft); }
.rbv2.rbv2 .rbv2-strip { display: flex; flex-wrap: wrap; gap: 3px; }
.rbv2.rbv2 .rbv2-pc { display: inline-flex; flex-direction: column; align-items: center; min-width: 2.7rem; padding: .2rem .25rem; border: 1px solid var(--rbv-faint);
  font: 400 .7rem/1.25 var(--rbv-mono); color: var(--rbv-soft); }
.rbv2.rbv2 .rbv2-pc b { font-weight: 700; color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-pc i { font-size: .8rem; }
.rbv2.rbv2 .rbv2-pc.rbv2-rstart { margin-left: .35rem; }
.rbv2.rbv2 .rbv2-pc.rbv2-rstart:first-child { margin-left: 0; }
.rbv2.rbv2 .rbv2-pc.rbv2-aw { border-color: var(--rbv-ink); border-width: 2px; background: var(--rbv-grey); color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-pc.rbv2-br { border-color: var(--rbv-red); border-style: dashed; background: color-mix(in srgb, var(--rbv-red) 14%, var(--rbv-paper)); color: var(--rbv-ink); }
.rbv2.rbv2 .rbv2-pc.rbv2-cur { box-shadow: inset 0 0 0 2px var(--rbv-magenta); }
.rbv2.rbv2 .rbv2-cnt, .rbv2.rbv2 .rbv2-ordcnt { display: flex; flex-wrap: wrap; gap: .6rem 1.1rem; }
.rbv2.rbv2 .rbv2-cnt > *, .rbv2.rbv2 .rbv2-ordcnt > * { flex: 1 1 9rem; min-width: 0; }
.rbv2.rbv2 .rbv2-n { display: flex; flex-direction: column; gap: .25rem; }
.rbv2.rbv2 .rbv2-big { font: 860 1.8rem/.9 var(--rbv-display); letter-spacing: -.04em; color: var(--rbv-ink); font-variant-numeric: tabular-nums lining-nums; }
.rbv2.rbv2 .rbv2-cap { font-size: .8rem; line-height: 1.3; color: var(--rbv-soft); }
.rbv2.rbv2 .rbv2-caption { padding: .9rem 1.1rem 1rem; border-top: 1px solid var(--rbv-rule); font-size: .9rem; line-height: 1.45; }
.rbv2.rbv2 .rbv2-caption p + p { margin-top: .5rem; }
.rbv2.rbv2 .rbv2-fine { font: 400 .7rem/1.4 var(--rbv-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--rbv-soft); }
.rbv2.rbv2.rbv2-narrow .rbv2-head, .rbv2.rbv2.rbv2-narrow .rbv2-lede, .rbv2.rbv2.rbv2-narrow .rbv2-body, .rbv2.rbv2.rbv2-narrow .rbv2-caption { padding-left: .8rem; padding-right: .8rem; }
.rbv2.rbv2.rbv2-narrow .rbv2-site { width: 46px; height: 46px; margin: -23px 0 0 -23px; }
@media (prefers-reduced-motion: no-preference) { .rbv2.rbv2 .rbv2-site { transition: background-color .2s, color .2s; } }
@media (forced-colors: active) {
  .rbv2.rbv2 { --rbv-paper: Canvas; --rbv-ink: CanvasText; --rbv-body: CanvasText; --rbv-soft: CanvasText; --rbv-hair: GrayText; --rbv-rule: CanvasText;
    --rbv-faint: GrayText; --rbv-cyan: Highlight; --rbv-cyan-text: CanvasText; --rbv-red: CanvasText; --rbv-red-text: CanvasText; --rbv-magenta: Highlight; --rbv-magenta-text: CanvasText; }
  .rbv2.rbv2 .rbv2-btn[aria-pressed="true"] { background: Highlight; color: HighlightText; forced-color-adjust: none; }
  .rbv2.rbv2 .rbv2-site { forced-color-adjust: none; background: Canvas; color: CanvasText; border-color: CanvasText; }
  .rbv2.rbv2 .rbv2-site.rbv2-occ { background: CanvasText; color: Canvas; }
  .rbv2.rbv2 .rbv2-pc.rbv2-aw, .rbv2.rbv2 .rbv2-pc.rbv2-br { background: Canvas; }
}
@media print { .rbv2.rbv2 { --rbv-paper: #fff; --rbv-ink: #000; --rbv-body: #000; break-inside: avoid; } }

/* inactive controls keep focus; screen-reader-only titles are not read in capitals */
.rbv2.rbv2 .rbv2-sr, .rbv2.rbv2 .rbv2-sr * { text-transform: none; }
.rbv2.rbv2 .rbv2-big { overflow-wrap: anywhere; }
