/* generated from archviz/render.py CSS by tools/build_data.py */

.av{--bg:#fffdfa;--ink:#30243b;--muted:#7a6d80;--panel:#fbf7f2;--panel-s:#ece3d9;--ptitle:#b54834;
--res:#d8cfdd;--data:#5b4d66;--spk:#8a6fb0;--ctrl:#b27b14;--state:#7d5ba6;--glyph:#8a6fb0;--ring:#b54834;--chip:#b54834;--chip-inh:#bdb1c3;
--f-io:#30243b;--s-io:#30243b;--t-io:#fff;
--f-norm:#f4efe9;--s-norm:#d6ccc1;--t-norm:#5b4d66;--f-act:#f4efe9;--s-act:#d6ccc1;--t-act:#5b4d66;
--f-spk:#eee6f7;--s-spk:#8a6fb0;--t-spk:#30243b;--f-neuron:#eee6f7;--s-neuron:#8a6fb0;--t-neuron:#30243b;
--f-lin:#fff;--s-lin:#b9adc2;--t-lin:#30243b;--f-conv:#fbe6da;--s-conv:#d98c6a;--t-conv:#5a2d1c;
--f-core:#30243b;--s-core:#30243b;--t-core:#fff;--f-state:#efe7f8;--s-state:#7d5ba6;--t-state:#3b2a55;
--f-op:#fff;--s-op:#5b4d66;--t-op:#30243b;--f-stat:#fff3d6;--s-stat:#d9a441;--t-stat:#6b4b0e;
--f-gate:#fde7e2;--s-gate:#b54834;--t-gate:#7c2a1b;--f-param:#fff;--s-param:#d6ccc1;--t-param:#7a6d80;
--f-novel:#b54834;--s-novel:#b54834;--t-novel:#fff;--glowc:transparent;--grid:transparent;--expand:#b54834;
--fade-s:#d3cad7;--fade-op:#bdb3c2;--fade-core:#a99fb0;--fade-stat-f:#fcf6e9;--fade-stat-s:#dcbd7c;--fade-stat-t:#7a6230}
.av[data-theme=dark],[data-theme=dark] .av{--bg:#1f1828;--ink:#efe8f3;--muted:#a497ad;--panel:#2a2135;--panel-s:#3d3249;--ptitle:#f0b79d;
--res:#4b3f58;--data:#c9bdd3;--spk:#b89be0;--ctrl:#e9b85a;--state:#c7a8f0;--glyph:#b89be0;--ring:#f0937a;--chip:#f0937a;--chip-inh:#5d5069;
--f-io:#efe8f3;--s-io:#efe8f3;--t-io:#1f1828;
--f-norm:#2a2135;--s-norm:#5d5069;--t-norm:#c9bdd3;--f-act:#2a2135;--s-act:#5d5069;--t-act:#c9bdd3;
--f-spk:#2f2540;--s-spk:#b89be0;--t-spk:#f3ecfa;--f-neuron:#2f2540;--s-neuron:#b89be0;--t-neuron:#f3ecfa;
--f-lin:#2a2135;--s-lin:#7d6f8a;--t-lin:#efe8f3;--f-conv:#33242a;--s-conv:#f0b79d;--t-conv:#fbe2d6;
--f-core:#3a2b52;--s-core:#c7a8f0;--t-core:#fff;--f-state:#30254a;--s-state:#c7a8f0;--t-state:#eadcff;
--f-op:#1f1828;--s-op:#c9bdd3;--t-op:#efe8f3;--f-stat:#3a311c;--s-stat:#f2c46b;--t-stat:#fbe8bf;
--f-gate:#3d2226;--s-gate:#f0937a;--t-gate:#ffd9cf;--f-param:#2a2135;--s-param:#5d5069;--t-param:#a497ad;
--f-novel:#c8553f;--s-novel:#f0937a;--t-novel:#fff;--glowc:#f0937a;--grid:#3a2f45;--expand:#f0b79d;
--fade-s:#4d4258;--fade-op:#5d5069;--fade-core:#6d5f7a;--fade-stat-f:#2c2620;--fade-stat-s:#a08550;--fade-stat-t:#d8c79f}
.av.focus,.av-focus .av{--data:#b3a9b9;--state:#a99fb0;--ptitle:var(--muted)}
.av.focus[data-theme=dark],[data-theme=dark] .av.focus,.av-focus[data-theme=dark] .av,[data-theme=dark] .av-focus .av{--data:#6d5f7a;--state:#6d5f7a}
.av text{font-family:'DM Sans',Arial,sans-serif}
.av .sub{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:9.5px;fill:var(--muted)}
.av .ttl{font-family:Manrope,'DM Sans',sans-serif;font-weight:800;fill:var(--ink)}
.av .cap{letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700;fill:var(--ptitle)}
.av .capsub{letter-spacing:0;text-transform:none;font-size:12px;font-weight:600;fill:var(--ink)}
.av .bg{fill:var(--bg)} .av .gridbg{fill:var(--grid)}
.av .panel{fill:var(--panel);stroke:var(--panel-s);stroke-width:1.2}
.av .panel.aux{stroke-dasharray:5 4}
.av .e{fill:none;stroke-linecap:round;stroke-linejoin:round}
.av .e-res{stroke:var(--res);stroke-width:3.2} .av .e-data{stroke:var(--data);stroke-width:1.35}
.av .e-spk{stroke:var(--spk);stroke-width:1.6;stroke-dasharray:1.2 3.2}
.av .e-ctrl{stroke:var(--ctrl);stroke-width:1.4;stroke-dasharray:5 3} .av .e-state{stroke:var(--state);stroke-width:1.35;stroke-dasharray:4 3}
.av .m-res{fill:var(--res)} .av .m-data{fill:var(--data)} .av .m-spk{fill:var(--spk)} .av .m-ctrl{fill:var(--ctrl)} .av .m-state{fill:var(--state)}
.av.focus .e-data.nv,.av-focus .av .e-data.nv{stroke:var(--ring);stroke-width:1.9}
.av.focus .e-ctrl.nv,.av-focus .av .e-ctrl.nv,.av.focus .e-spk.nv,.av-focus .av .e-spk.nv{stroke-width:2}
.av .elbl{font-family:'JetBrains Mono',monospace;font-size:9.5px;fill:var(--muted)} .av .elbl.k-ctrl{fill:var(--ctrl)} .av .elbl.k-spk{fill:var(--spk)}
.av .sh{stroke-width:1.3}
.av .fam-io .sh{fill:var(--f-io);stroke:var(--s-io)} .av .fam-io .lbl{fill:var(--t-io)}
.av .fam-norm .sh{fill:var(--f-norm);stroke:var(--s-norm)} .av .fam-norm .lbl{fill:var(--t-norm)}
.av .fam-act .sh{fill:var(--f-act);stroke:var(--s-act)} .av .fam-act .lbl{fill:var(--t-act)}
.av .fam-spk .sh{fill:var(--f-spk);stroke:var(--s-spk)} .av .fam-spk .lbl{fill:var(--t-spk)}
.av .fam-lin .sh{fill:var(--f-lin);stroke:var(--s-lin)} .av .fam-lin .lbl{fill:var(--t-lin)}
.av .fam-conv .sh{fill:var(--f-conv);stroke:var(--s-conv)} .av .fam-conv .lbl{fill:var(--t-conv)}
.av .fam-core .sh{fill:var(--f-core);stroke:var(--s-core)} .av .fam-core .lbl{fill:var(--t-core)}
.av .fam-op .sh{fill:var(--f-op);stroke:var(--s-op)} .av .fam-op .lbl{fill:var(--t-op)}
.av .fam-stat .sh{fill:var(--f-stat);stroke:var(--s-stat)} .av .fam-stat .lbl{fill:var(--t-stat)}
.av .fam-neuron .sh{fill:var(--f-neuron);stroke:var(--s-neuron)} .av .fam-neuron .lbl{fill:var(--t-neuron)}
.av .fam-gate .sh{fill:var(--f-gate);stroke:var(--s-gate)} .av .fam-gate .lbl{fill:var(--t-gate)}
.av .fam-param .sh{fill:var(--f-param);stroke:var(--s-param)} .av .fam-param .lbl{fill:var(--t-param)}
.av .fam-state .sh{fill:var(--f-state);stroke:var(--s-state)} .av .fam-state .lbl{fill:var(--t-state)}
.av.focus .node.fam-norm:not(.novel) .sh,.av-focus .av .node.fam-norm:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-norm:not(.novel) .lbl,.av-focus .av .node.fam-norm:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-act:not(.novel) .sh,.av-focus .av .node.fam-act:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-act:not(.novel) .lbl,.av-focus .av .node.fam-act:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-lin:not(.novel) .sh,.av-focus .av .node.fam-lin:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-lin:not(.novel) .lbl,.av-focus .av .node.fam-lin:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-conv:not(.novel) .sh,.av-focus .av .node.fam-conv:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-conv:not(.novel) .lbl,.av-focus .av .node.fam-conv:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-op:not(.novel) .sh,.av-focus .av .node.fam-op:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-op)} .av.focus .node.fam-op:not(.novel) .lbl,.av-focus .av .node.fam-op:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-gate:not(.novel) .sh,.av-focus .av .node.fam-gate:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-gate:not(.novel) .lbl,.av-focus .av .node.fam-gate:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-param:not(.novel) .sh,.av-focus .av .node.fam-param:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-param:not(.novel) .lbl,.av-focus .av .node.fam-param:not(.novel) .lbl{fill:var(--muted)}
.av.focus .node.fam-state:not(.novel) .sh,.av-focus .av .node.fam-state:not(.novel) .sh{fill:var(--bg);stroke:var(--fade-s)} .av.focus .node.fam-state:not(.novel) .lbl,.av-focus .av .node.fam-state:not(.novel) .lbl{fill:var(--muted)}

.av.focus .node.fam-stat:not(.novel) .sh,.av-focus .av .node.fam-stat:not(.novel) .sh{fill:var(--fade-stat-f);stroke:var(--fade-stat-s)}
.av.focus .node.fam-stat:not(.novel) .lbl,.av-focus .av .node.fam-stat:not(.novel) .lbl{fill:var(--fade-stat-t)}
.av.focus .node.fam-core:not(.novel) .sh,.av-focus .av .node.fam-core:not(.novel) .sh{fill:var(--panel);stroke:var(--fade-core)}
.av.focus .node.fam-core:not(.novel) .lbl,.av-focus .av .node.fam-core:not(.novel) .lbl,.av.focus .node.fam-core:not(.novel) .sub,.av-focus .av .node.fam-core:not(.novel) .sub{fill:var(--ink)}
.av .fam-core .sub,.av .fam-io .sub{fill:var(--t-core);opacity:.72}
.av .fam-param .sh{stroke-dasharray:4 3}
.av .glyph{fill:none;stroke:var(--glyph);stroke-width:1.4;stroke-linejoin:round}
.av .fam-core .glyph,.av .fam-io .glyph{stroke:var(--glyph)}
.av .from-spk .spkring{fill:none;stroke:var(--spk);stroke-width:1.8}
.av .ring{fill:none;stroke:var(--ring);stroke-width:1.4;stroke-dasharray:3 3}
.av .glow{fill:var(--glowc);opacity:.32;filter:blur(7px)}
.av.focus .ring,.av-focus .av .ring{display:none}
.av.focus .glow,.av-focus .av .glow{fill:var(--ring);opacity:.2}
.av .badge{display:none} .av.focus .badge,.av-focus .av .badge{display:inline}
.av .badge circle{fill:var(--ring)} .av .badge text{fill:var(--bg);font-size:10px;font-weight:700}
.av.focus .node.novel .sh,.av-focus .av .node.novel .sh{stroke:var(--s-novel);stroke-width:2.4}
.av.focus .fam-op.novel .lbl,.av-focus .av .fam-op.novel .lbl{fill:var(--ring)}
.av.focus .fam-io.novel .sh,.av-focus .av .fam-io.novel .sh{stroke:var(--s-novel)}
.av .loop{fill:none;stroke:var(--state);stroke-width:1.4;stroke-dasharray:4 3} .av .looplbl{fill:var(--state)}
.av .expand{cursor:pointer} .av .expand rect{fill:var(--bg);stroke:var(--expand);stroke-width:1.2} .av .expand text{fill:var(--expand);font-size:10px;font-weight:700}
.av .chip rect{fill:none;stroke:var(--chip);stroke-width:1.2} .av .chip text{fill:var(--chip);font-size:11.5px;font-weight:600}
.av .chip .badge text{fill:var(--bg);font-size:10px} .av .chip.spk rect{stroke:var(--spk)} .av .chip.spk text{fill:var(--spk)}
.av .chip.inherited rect{stroke:var(--chip-inh)} .av .chip.inherited text{fill:var(--muted);font-weight:500}
.av.focus .chip.evolved rect,.av-focus .av .chip.evolved rect,.av.focus .chip.loss rect,.av-focus .av .chip.loss rect{stroke-width:2}
.av .legend text{font-size:11px;fill:var(--muted)} .av .legend .lgnote{font-size:10.5px;font-style:italic}
.av .legend .sw-nv{display:none;fill:none;stroke:var(--s-novel);stroke-width:2.4}
.av.focus .legend .sw-nv,.av-focus .av .legend .sw-nv{display:inline}
.av .legend .focus-only{display:none} .av.focus .legend .focus-only,.av-focus .av .legend .focus-only{display:inline}
.av .eq{font-family:'JetBrains Mono',monospace;font-size:11.5px;fill:var(--ink)}
.av .node[data-id]:hover .sh{stroke-width:2.2}
