:root{--g-network:#94600a;--g-transport:#0b7285;--g-web:#5b3fc4;--g-speed:#a61e4d}:root[data-theme=dark]{--g-network:#e3a94b;--g-transport:#4fc3d3;--g-web:#b3a2ff;--g-speed:#f783ac}[data-group=network]{--accent:var(--g-network)}[data-group=transport]{--accent:var(--g-transport)}[data-group=web]{--accent:var(--g-web)}[data-group=speed]{--accent:var(--g-speed)}.grid-2.wide-left{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}@media (width<=1100px){.grid-2.wide-left{grid-template-columns:minmax(0,1fr)}}.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}.legend-inline{font:11px var(--mono);color:var(--ink-3);align-items:center;gap:6px;display:inline-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)}.send-row{gap:8px;display:flex}.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)}svg .tick{fill:var(--ink-3);font:11px var(--mono)}svg .tick.mid{text-anchor:middle}svg .tick.end{text-anchor:end}svg .tick.strong{fill:var(--ink);font-weight:600}svg .tick.x{fill:var(--bad);font-size:15px;font-weight:700}svg .grid line{stroke:var(--rule);stroke-width:1px}svg .cap{stroke:var(--ink-3);stroke-width:1px;stroke-dasharray:4 4;fill:none}.chart svg,.net-map,.ladder,.world,.floor,.pipe,.wave{width:100%;height:auto;display:block}.legend-inline{flex-wrap:wrap;margin:0}.sw{width:10px;height:10px;margin-left:6px;display:inline-block}.sw.prop,.split-bar .prop{background:var(--accent)}.sw.trans,.split-bar .trans{background:color-mix(in srgb, var(--accent) 30%, var(--rule))}.sw.net{background:var(--accent)}.sw.host{background:var(--rule)}.sw.cap{border-top:1px dashed var(--ink-3);width:14px;height:0}.terminal{font:12.5px/1.55 var(--mono);white-space:pre;color:var(--ink);background:var(--paper);border:1px solid var(--rule);margin:0;padding:12px 14px;overflow-x:auto}mark{background:var(--mark);color:inherit;padding:0 2px}.btn.small{padding:6px 10px;font-size:11px}.grow{flex:1;min-width:0}.send-row{align-items:flex-end}.path-diagram{max-width:640px}.path-diagram text{font-size:11px}.addr-bar{font:13px var(--mono);color:var(--ink-2);background:var(--paper);border:1px solid var(--rule);overflow-wrap:anywhere;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;display:flex}.addr-bar .lock{font-size:13px}.wf-row rect{fill:color-mix(in srgb, var(--accent) 45%, var(--sheet))}.wf-row.cur rect{fill:var(--accent)}.wf-row.cur text{fill:var(--ink);font-weight:600}.tick.skipped{font-style:italic}.stage{flex-direction:column;gap:4px;min-height:6.5em;display:flex}.stage strong{font:400 22px/1.2 var(--serif);color:var(--accent)}.glossary.numbers dt{font-family:var(--mono)}.byte-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.byte-list li{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.byte-list strong{width:1.6em;font:400 22px var(--serif);color:var(--accent)}.byte-list code{font:13px var(--mono);letter-spacing:.08em}.wave{background:var(--paper);border:1px solid var(--rule);height:80px}.wave path{fill:none;stroke:var(--accent);stroke-width:2.5px;vector-effect:non-scaling-stroke}.wave .base{stroke:var(--rule);vector-effect:non-scaling-stroke}.pipe-body{fill:color-mix(in srgb, var(--accent) 25%, var(--sheet));stroke:var(--accent);stroke-width:1.5px;transition:all .25s}.split-bar{border:1px solid var(--rule-strong);height:14px;display:flex}.split-bar span{height:100%;transition:width .25s;display:block}.pkt-list{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pkt{font:13px var(--mono);white-space:pre;background:var(--accent-tint);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);padding:3px 7px}.pkt small{color:var(--accent);margin-right:5px;font-size:10px;font-weight:600}.pkt.late{background:var(--bad-tint);border-color:var(--bad)}.pkt.late small{color:var(--bad)}.net-map .wire{fill:none;stroke:var(--rule);stroke-width:3px;stroke-linecap:round}.net-map .router{fill:var(--sheet);stroke:var(--ink-3);stroke-width:1.5px}.net-map .host{fill:var(--accent-tint);stroke:var(--accent);stroke-width:1.5px}.pkt-dot rect{fill:var(--accent)}.pkt-dot text{fill:var(--on-accent);font:600 11px var(--mono);text-anchor:middle}.rebuilt{font:400 20px/1.4 var(--serif);overflow-wrap:anywhere;margin:0}.rebuilt .label{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);display:block}.bits{font:600 16px/1.6 var(--mono);letter-spacing:.04em;flex-wrap:wrap;margin:0;display:flex}.bits span{display:inline-flex}.bits .net{color:var(--accent)}.bits .host{color:var(--ink-3)}.bits i{color:var(--ink-3);margin:0 4px;font-style:normal}.kv dd.kind{font-family:var(--sans)}.kind.private{color:var(--ok)}.kind.public{color:var(--accent)}.devices{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.devices li{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.devices li>span{flex-direction:column;min-width:0;display:flex}.devices code{font:12px var(--mono);color:var(--ink-3)}.rewrite{background:var(--paper);border:1px dashed var(--accent);flex-direction:column;gap:4px;padding:12px;display:flex}.rewrite .label{font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.rewrite code{font:13px var(--mono);overflow-wrap:anywhere}.table td,.table th{overflow-wrap:anywhere}.nat-table td:first-child,.fwd td:first-child,.cache td:first-child,.sockets td:first-child{white-space:normal;width:auto}.routes .rlink .wire{stroke:var(--rule);stroke-width:3px}.routes .rlink.on .wire{stroke:var(--accent);stroke-width:5px}.routes .rlink.cut .wire{stroke:var(--bad);stroke-dasharray:6 6;stroke-width:2px}.routes .rlink .hit{stroke:#0000;stroke-width:22px;cursor:pointer}.routes .rlink .hit:focus-visible{stroke:color-mix(in srgb, var(--accent) 30%, transparent);outline:none}.rnode{cursor:pointer}.rnode circle{fill:var(--sheet);stroke:var(--ink-3);stroke-width:2px}.rnode.on circle{stroke:var(--accent)}.rnode.dst circle{fill:var(--accent);stroke:var(--accent)}.rnode.me circle{fill:var(--ink);stroke:var(--ink)}.rnode text{fill:var(--ink-2);font-size:12px}.rnode:focus-visible{outline:none}.rnode:focus-visible circle{stroke-width:4px}.route-line{overflow-wrap:anywhere}.fwd tr.picked td{background:var(--accent-tint)}.stack{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.stack li{border:1px solid var(--rule);border-left:4px solid var(--rule);flex-direction:column;padding:10px 12px;transition:all .2s;display:flex}.stack li.on{border-color:var(--accent);background:var(--accent-tint)}.stack li span{color:var(--ink-2);font-size:14px}.env{border:2px solid;flex-direction:column;gap:6px;padding:8px;animation:.3s ease-out env-in;display:flex}@keyframes env-in{0%{opacity:0;transform:scale(.97)}}.env-name{font:600 10px var(--mono);letter-spacing:.1em;text-transform:uppercase}.env-hdr{flex-wrap:wrap;gap:4px;display:flex}.env-hdr code,.env-trailer{font:11px var(--mono);background:var(--sheet);border:1px solid var(--rule);overflow-wrap:anywhere;padding:2px 6px}.env-trailer{align-self:flex-end}.l-http{border-color:var(--g-web);background:color-mix(in srgb, var(--g-web) 8%, var(--sheet))}.l-http>.env-name{color:var(--g-web)}.l-tcp{border-color:var(--g-transport);background:color-mix(in srgb, var(--g-transport) 8%, var(--sheet))}.l-tcp>.env-name{color:var(--g-transport)}.l-ip{border-color:var(--g-network);background:color-mix(in srgb, var(--g-network) 8%, var(--sheet))}.l-ip>.env-name{color:var(--g-network)}.l-eth{border-color:var(--g-foundations);background:color-mix(in srgb, var(--g-foundations) 8%, var(--sheet))}.l-eth>.env-name{color:var(--g-foundations)}.bitstream{font:13px/1.5 var(--mono);letter-spacing:.1em;word-break:break-all;color:var(--accent);background:var(--paper);border:1px dashed var(--accent);margin:0;padding:14px}.log{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.log li{background:var(--paper);border-left:3px solid;padding:8px 10px;font-size:14px}.log li.ok{border-color:var(--ok)}.log li.bad{border-color:var(--bad)}.port-ref{flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.port-ref code{font:600 13px var(--mono);color:var(--accent)}.sockets td.mono{font:13px var(--mono)}.lanes{margin-top:16px}.cells{grid-template-columns:repeat(10,minmax(0,1fr));gap:4px;margin:0;padding:0;list-style:none;display:grid}.cell{aspect-ratio:1;font:600 12px var(--mono);color:var(--ink-3);border:1px solid var(--rule);background:var(--paper);place-items:center;transition:background .15s;display:grid}.cell.ready{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.cell.held{border:2px dotted var(--accent);color:var(--accent)}.cell.lost{background:var(--bad-tint);border-color:var(--bad);color:var(--bad)}.kv.small dd{font-size:15px}.match{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.match li{background:var(--sheet);border:1px solid var(--rule);border-top:4px solid var(--rule);flex-direction:column;gap:8px;padding:14px;display:flex}.match li.ok{border-top-color:var(--ok)}.match li.bad{border-top-color:var(--bad)}.match .stat{margin:0}.ladder .lifeline{stroke:var(--ink-3);stroke-width:2px}.ladder .seg line{stroke:var(--accent);stroke-width:2px}.ladder .seg.s line{stroke:var(--ink-2)}.ladder .seg.lost line{stroke:var(--bad);stroke-dasharray:5 4}.ladder .seg.retx line{stroke-width:3px}.ladder .arrowhead{fill:context-stroke}.ladder .seg-label{fill:var(--ink);paint-order:stroke;stroke:var(--sheet);stroke-width:4px;font-size:12px}.ladder .seg.cur .seg-label{fill:var(--accent);font-weight:700}.ladder .seg-note{fill:var(--bad);font-weight:600}.cw-bar{cursor:pointer}.cw-bar rect:not(.hit){fill:color-mix(in srgb, var(--accent) 60%, var(--sheet))}.cw-bar:hover rect:not(.hit){fill:var(--accent)}.cw-bar.loss rect:not(.hit){fill:var(--bad)}.cw-bar .hit{fill:#0000}.cw-bar:focus-visible{outline:none}.cw-bar:focus-visible .hit{fill:var(--accent-tint)}.dns-chain{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.dns-chain li{min-width:70px;font:600 11px var(--mono);text-align:center;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);border:1px solid var(--rule);background:var(--paper);flex:1 1 0;padding:8px 6px;transition:all .2s}.dns-chain li.on{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.hops{flex-direction:column;gap:8px;min-height:8em;margin:0;padding:0;list-style:none;display:flex}.hops li{background:var(--paper);border-left:3px solid var(--accent);grid-template-columns:4.5em minmax(0,1fr);gap:10px;padding:8px 10px;font-size:15px;animation:.25s ease-out env-in;display:grid}.hops li.cached{border-left-color:var(--ok)}.cache tr.gone td{color:var(--ink-3);text-decoration:line-through}textarea.raw{font:13px/1.5 var(--mono);white-space:pre;overflow-x:auto}.terminal.http{white-space:pre-wrap;overflow-wrap:anywhere;border-left:4px solid var(--ink-3)}.terminal.http.s2{border-left-color:var(--ok)}.terminal.http.s3{border-left-color:var(--accent)}.terminal.http.s4,.terminal.http.s5{border-left-color:var(--bad)}.status-classes{margin-top:24px}.sniff .kv{grid-template-columns:minmax(0,1fr);gap:0}.sniff .kv-row{border-top:1px solid var(--rule);grid-template-columns:11rem minmax(0,1fr);align-items:baseline;gap:12px;padding:8px 0;display:grid}.sniff dd{overflow-wrap:anywhere}.sniff dd.leak{color:var(--bad);background:var(--bad-tint);padding:2px 6px;font-weight:600}.sniff dd.enc{color:var(--ink-3)}.sniff.open{border-top:6px solid var(--bad)}.sniff.safe{border-top:6px solid var(--ok)}.kv dd.mono{overflow-wrap:anywhere}.browser.safe{border-top:6px solid var(--ok)}.browser.warn{border-top:6px solid var(--bad);background:repeating-linear-gradient(-45deg, var(--bad-tint) 0 2px, var(--sheet) 2px 9px)}.warn-title{font:400 24px/1.2 var(--serif);color:var(--bad)}.world{background:var(--paper);border:1px solid var(--rule)}.world .grat{stroke:var(--rule);stroke-width:1px}.world .grat.eq{stroke-dasharray:4 4}.world .leg{stroke:var(--accent);stroke-width:3px;stroke-dasharray:1200;stroke-dashoffset:1200px;animation:.8s ease-out forwards draw}.world .leg.back{stroke:var(--ink-3);stroke-width:2px;stroke-dasharray:6 5;animation:none}@keyframes draw{to{stroke-dashoffset:0}}.city{cursor:pointer}.city .hit{fill:#0000}.city .dot{fill:var(--ink-3)}.city .edge{fill:none;stroke:color-mix(in srgb, var(--accent) 50%, transparent);stroke-width:1.5px}.city.warm .edge{fill:color-mix(in srgb, var(--accent) 25%, transparent);stroke:var(--accent)}.city.origin .dot{fill:var(--ink)}.city.me .dot{fill:var(--accent)}.city text{fill:var(--ink-2);paint-order:stroke;stroke:var(--paper);stroke-width:3px;font-size:14px}.city.me text{fill:var(--accent);font-weight:600}.city:focus-visible{outline:none}.city:focus-visible .hit{fill:var(--accent-tint)}.floor{touch-action:none;cursor:ew-resize;background:var(--paper);border:1px solid var(--rule);-webkit-user-select:none;user-select:none}.floor .wave-ring{fill:none;stroke:color-mix(in srgb, var(--accent) 35%, transparent);stroke-width:1.5px}.floor .wall{stroke:var(--ink-2);stroke-width:5px}.floor .host{fill:var(--accent)}.laptop rect{fill:var(--ink)}.laptop text{fill:var(--ink);font-weight:600}.chart .series.alt{stroke:var(--ink-2);stroke-dasharray:6 4}.chart .series.faint{opacity:.35}.mini-chart{margin:0}.timeline .hs{fill:color-mix(in srgb, var(--accent) 12%, transparent)}.timeline .pk{fill:color-mix(in srgb, var(--accent) 35%, var(--sheet))}.timeline .pk.ready{fill:var(--accent)}.timeline .pk.resent{fill:var(--bad)}.timeline .stall{fill:color-mix(in srgb, var(--bad) 30%, transparent);stroke:var(--bad);stroke-width:.5px;stroke-dasharray:2 2}.runs{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.runs li{grid-template-columns:minmax(0,1fr) 80px 4.5rem;align-items:center;gap:10px;font-size:13px;display:grid}.runs .bar{width:100%;margin:0}.runs strong{font:500 13px var(--mono);text-align:right}@media (width<=720px){.sniff .kv-row{grid-template-columns:minmax(0,1fr);gap:2px}.cells{grid-template-columns:repeat(5,minmax(0,1fr))}.bits{font-size:13px}.hops li{grid-template-columns:minmax(0,1fr);gap:2px}.runs li{grid-template-columns:minmax(0,1fr) 4.5rem}.runs .bar{display:none}}@media (pointer:coarse){.cw-bar,.city,.rnode{-webkit-tap-highlight-color:transparent}}figure.card{min-width:0;margin:0}.section-title+.lead{margin-bottom:18px}@media (width<=720px){.routes .tick,.net-map .tick,.ladder .tick,.floor .tick{font-size:17px}.rnode text{font-size:18px}.city text{font-size:20px}.ladder .seg-label{font-size:16px}.timeline .tick,.chart .tick{font-size:15px}}
