.tg-root{--bg:#F8F6F1;--ink:#1C1917;--muted:#78716C;--accent:#1B4F4F;--rule-c:#E2DDD6;--paper:#FFFFFF;--grid:#EDE8E0;--grid-strong:#DED7CC;--axis:#A8A29A;--obj:#57534E;--obj-fill:rgba(87,83,78,.09);--img:#A8442B;--img-fill:rgba(168,68,43,.15);--vec:#1B4F4F;--font-display:"Playfair Display",Georgia,serif;--font-body:"IBM Plex Sans",system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace;--radius:14px;font-family:var(--font-body);line-height:1.5;-webkit-font-smoothing:antialiased;color:var(--ink);max-width:1180px;margin:0 auto;padding:30px 22px 56px}.tg-root,.tg-root *{box-sizing:border-box}.tg-root .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tg-root header.masthead{margin-bottom:22px}.tg-root .eyebrow{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0 0 8px}.tg-root .eyebrow a{color:inherit;text-decoration:none;border-bottom:1px solid transparent}.tg-root .eyebrow a:hover{border-bottom-color:currentColor}.tg-root h1{font-family:var(--font-display);font-weight:700;font-size:clamp(30px,5vw,46px);line-height:1.06;margin:0;letter-spacing:-.01em}.tg-root h1 em{font-style:italic;font-weight:400;color:var(--accent)}.tg-root .lede{color:var(--muted);max-width:68ch;margin:12px 0 0;font-size:15px}.tg-root .lede em{font-style:normal;color:var(--ink)}.tg-root .rule-inline{font-family:var(--font-mono);color:var(--img);white-space:nowrap}.tg-root .tabs{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 18px}.tg-root .tab{appearance:none;border:1px solid var(--rule-c);background:transparent;color:var(--muted);font-family:var(--font-body);font-weight:500;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;padding:9px 15px;border-radius:999px;cursor:pointer;transition:.18s;display:flex;align-items:center;gap:8px}.tg-root .tab .n{font-family:var(--font-mono);font-size:11px;opacity:.65;letter-spacing:0}.tg-root .tab:hover{color:var(--ink);border-color:var(--muted)}.tg-root .tab[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 22px -12px var(--accent)}.tg-root .tab[aria-selected=true] .n{opacity:.8}.tg-root .stage{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;align-items:start}@media(max-width:900px){.tg-root .stage{grid-template-columns:1fr}}.tg-root .canvas-card{background:var(--paper);border:1px solid var(--rule-c);border-radius:var(--radius);padding:10px 10px 4px;box-shadow:0 18px 44px -30px #1c191773;position:sticky;top:16px}@media(max-width:900px){.tg-root .canvas-card{position:static}}.tg-root svg.board{display:block;width:100%;height:auto;border-radius:8px;touch-action:none}.tg-root .caption{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);margin:6px 4px 8px;line-height:1.5}.tg-root .panel{display:flex;flex-direction:column;gap:16px}.tg-root .card{background:var(--paper);border:1px solid var(--rule-c);border-radius:var(--radius);padding:18px}.tg-root .card[hidden]{display:none}.tg-root .card h2{font-family:var(--font-display);font-weight:600;font-size:20px;margin:0 0 4px}.tg-root .card .hint{margin:0 0 14px;color:var(--muted);font-size:13.5px}.tg-root .rule-card{border-left:3px solid var(--img)}.tg-root .card-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.tg-root .rule{font-family:var(--font-mono);font-size:clamp(16px,2.4vw,21px);line-height:1.7;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.tg-root .rule .op{color:var(--muted)}.tg-root .rule .src{color:var(--obj);font-weight:600}.tg-root .rule .dst{color:var(--img);font-weight:600;background:var(--img-fill);padding:1px 8px;border-radius:6px}.tg-root .rule .par{color:var(--vec);font-weight:500;font-size:13px;background:#1b4f4f14;padding:2px 8px;border-radius:6px}.tg-root .note{margin:14px 0 0;font-family:var(--font-mono);font-size:12px;color:var(--muted);line-height:1.65;border-top:1px solid var(--rule-c);padding-top:11px}.tg-root .vec-fields{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:19px;color:var(--vec);font-weight:600}.tg-root .vec-fields input{width:76px;font-family:var(--font-mono);font-size:17px;font-weight:600;color:var(--ink);border:1px solid var(--rule-c);border-radius:8px;padding:7px 8px;text-align:center;background:var(--bg)}.tg-root .vec-fields input:focus{outline:2px solid var(--vec);outline-offset:1px;border-color:transparent}.tg-root .vec-sep{color:var(--muted)}.tg-root .vec-fields[hidden]{display:none}.tg-root .turns{display:flex;gap:7px;margin-bottom:14px}.tg-root .turns span{flex:1;text-align:center;font-family:var(--font-mono);font-size:12px;border:1px solid var(--rule-c);border-radius:8px;padding:8px 4px;color:var(--muted);transition:.18s}.tg-root .turns span.on{background:var(--img-fill);border-color:var(--img);color:var(--img);font-weight:600}.tg-root .btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.tg-root .ghost,.tg-root .primary,.tg-root .reset,.tg-root .chip{appearance:none;font-family:var(--font-body);font-size:13px;font-weight:500;border-radius:999px;padding:8px 15px;cursor:pointer;transition:.16s}.tg-root .ghost,.tg-root .reset,.tg-root .chip{background:transparent;color:var(--muted);border:1px solid var(--rule-c)}.tg-root .ghost:hover,.tg-root .chip:hover{color:var(--ink);border-color:var(--muted)}.tg-root .reset:hover{color:var(--img);border-color:var(--img)}.tg-root .ghost:disabled{opacity:.45;cursor:not-allowed}.tg-root .primary{background:var(--img);border:1px solid var(--img);color:#fff;box-shadow:0 8px 20px -12px var(--img)}.tg-root .primary:hover{filter:brightness(1.06)}.tg-root .chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.tg-root .presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.tg-root table.vtx{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px}.tg-root table.vtx th{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:left;padding:0 6px 8px;border-bottom:1px solid var(--rule-c)}.tg-root table.vtx td{padding:5px 6px;border-bottom:1px solid var(--rule-c);vertical-align:middle}.tg-root table.vtx tbody th{padding:5px 6px;border-bottom:1px solid var(--rule-c);font-size:13px;letter-spacing:0;text-transform:none;color:var(--obj);font-weight:600;width:1%}.tg-root table.vtx td.in{display:flex;align-items:center;gap:3px;padding:5px 6px}.tg-root table.vtx input{width:56px;font-family:var(--font-mono);font-size:13px;color:var(--ink);border:1px solid var(--rule-c);border-radius:6px;padding:4px 5px;text-align:center;background:var(--bg)}.tg-root table.vtx input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}.tg-root table.vtx td.seta{color:var(--muted);text-align:center;width:1%}.tg-root table.vtx td.img{color:var(--img);font-weight:600;white-space:nowrap}.tg-root .controls{display:flex;flex-wrap:wrap;gap:8px}.tg-root .toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);border:1px solid var(--rule-c);border-radius:999px;padding:7px 13px;cursor:pointer;user-select:none;transition:.16s}.tg-root .toggle:hover{color:var(--ink)}.tg-root .toggle input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.tg-root .toggle.on{color:var(--ink);border-color:var(--muted)}.tg-root .theory{margin-top:26px;border-top:1px solid var(--rule-c);padding-top:24px;max-width:74ch}.tg-root .theory h2{font-family:var(--font-display);font-weight:600;font-size:24px;margin:0 0 10px}.tg-root .theory p{color:var(--muted);font-size:15px;margin:0 0 12px}.tg-root .theory b{color:var(--ink);font-weight:600}.tg-root .theory code{font-family:var(--font-mono);font-size:.92em;color:var(--img)}.tg-root .theory ul{margin:0 0 12px;padding-left:20px;color:var(--muted);font-size:15px}.tg-root .theory li{margin-bottom:6px}.tg-root .g-line{stroke:var(--grid);stroke-width:1}.tg-root .g-line.strong{stroke:var(--grid-strong)}.tg-root .axis{stroke:var(--axis);stroke-width:1.6}.tg-root .tick{stroke:var(--axis);stroke-width:1.2}.tg-root .ticklbl{font-family:var(--font-mono);font-size:11px;fill:var(--muted)}.tg-root .axislbl{font-family:var(--font-mono);font-size:13px;font-weight:600;fill:var(--axis)}.tg-root .poly-obj{fill:var(--obj-fill);stroke:var(--obj);stroke-width:2;stroke-linejoin:round;stroke-dasharray:6 5}.tg-root .poly-img{fill:var(--img-fill);stroke:var(--img);stroke-width:2.4;stroke-linejoin:round}.tg-root .trace{stroke:var(--vec);stroke-width:1.4;stroke-dasharray:4 5;fill:none;opacity:.75}.tg-root .vecline{stroke:var(--vec);stroke-width:3;stroke-linecap:round}.tg-root .vechead{fill:var(--vec)}.tg-root .veclbl{font-family:var(--font-mono);font-size:13px;font-weight:600;fill:var(--vec)}.tg-root .eixo{stroke:var(--vec);stroke-width:2;stroke-dasharray:11 7;stroke-linecap:round}.tg-root .eixolbl{font-family:var(--font-mono);font-size:13px;font-weight:600;fill:var(--vec)}.tg-root .pt-ref{fill:var(--vec)}.tg-root .pt-obj{fill:var(--obj)}.tg-root .pt-img{fill:var(--img)}.tg-root .lbl-obj{font-family:var(--font-mono);font-size:13px;font-weight:600;fill:var(--obj)}.tg-root .lbl-img{font-family:var(--font-mono);font-size:13px;font-weight:600;fill:var(--img)}.tg-root .coord{font-family:var(--font-mono);font-size:10.5px}.tg-root .handle{cursor:grab;fill:transparent;stroke:transparent;stroke-width:0}.tg-root .handle:hover{fill:#57534e1f}.tg-root .handle:active{cursor:grabbing}.tg-root .handle.vec:hover{fill:#1b4f4f24}@media(prefers-reduced-motion:reduce){.tg-root *{transition:none!important}}
