:root{--bg:#0e0e0e;--surface:#161616;--surface-up:#1c1c1c;--accent:#d4a574;--accent-hi:#e0b68a;--accent-dim:hsla(31,53%,64%,.18);--accent-glow:hsla(31,53%,64%,.1);--border:hsla(0,0%,100%,.06);--border-hover:hsla(0,0%,100%,.12);--text:#e8e4df;--text-dim:#8a8580;--text-faint:#5a5550;--up:#7fb685;--up-dim:rgba(127,182,133,.14);--standby:#d4a574;--standby-dim:hsla(31,53%,64%,.14);--down:#c47a72;--down-dim:hsla(6,41%,61%,.14);--font-sans:"DM Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-serif:"DM Serif Display",Georgia,"Cambria",serif;--font-mono:"DM Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--maxw:980px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-weight:300;line-height:1.55;-webkit-font-smoothing:antialiased;min-height:100vh;background-image:radial-gradient(ellipse 80% 55% at 50% 0,var(--accent-glow),transparent 70%),radial-gradient(ellipse 60% 40% at 50% 100%,var(--accent-glow),transparent 70%);background-attachment:fixed}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hi);text-decoration:underline}.wrap{max-width:var(--maxw);margin:0 auto;padding:3.5rem 1.5rem 5rem}.lg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.lg-title{margin:0;font-family:var(--font-serif);font-weight:400;font-size:clamp(2rem,5vw,2.9rem);letter-spacing:-.01em;line-height:1.05}.lg-title .glass{color:var(--accent)}.lg-sub{margin:.55rem 0 0;color:var(--text-dim);font-size:.92rem}.lg-sub code{color:var(--text);font-size:.85em}.lg-status,.lg-sub code{font-family:var(--font-mono)}.lg-status{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;font-size:.72rem}.badge{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .6rem;border:1px solid var(--border);border-radius:999px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;flex:none}.dot.ok{background:var(--up);box-shadow:0 0 8px var(--up)}.dot.bad{background:var(--down);box-shadow:0 0 8px var(--down)}.dot.wait{background:var(--text-faint)}.lg-section{margin-top:2.6rem}.lg-label{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);margin:0 0 .9rem}.nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:.7rem;gap:.7rem}.node{display:flex;align-items:center;gap:.7rem;padding:.75rem .85rem;background:var(--surface);border:1px solid var(--border);border-radius:10px}.node .flag{font-size:1.25rem;line-height:1}.node .meta{min-width:0}.node .city{font-size:.92rem;color:var(--text)}.node .region{font-family:var(--font-mono);font-size:.68rem;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node .pill{margin-left:auto}.pill{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;padding:.22rem .5rem;border-radius:999px;white-space:nowrap}.pill .dot{width:6px;height:6px}.pill.up{color:var(--up);background:var(--up-dim)}.pill.up .dot{background:var(--up);box-shadow:0 0 6px var(--up)}.pill.standby{color:var(--standby);background:var(--standby-dim)}.pill.standby .dot{background:var(--standby)}.query{display:flex;gap:.6rem;flex-wrap:wrap}.query .field{flex:1 1 320px;display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:0 .9rem;transition:border-color .15s}.query .field:focus-within{border-color:var(--border-hover)}.query .field .prefix{font-family:var(--font-mono);color:var(--accent);font-size:.82rem;white-space:nowrap;opacity:.8}.query input{flex:1 1;background:transparent;border:0;outline:0;color:var(--text);font-family:var(--font-mono);font-size:.95rem;padding:.85rem .6rem;min-width:0}.query input::placeholder{color:var(--text-faint)}.query button{font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--bg);background:var(--accent);border:0;border-radius:10px;padding:0 1.4rem;cursor:pointer;transition:background .15s}.query button:hover{background:var(--accent-hi)}.query button:disabled{opacity:.5;cursor:default}.examples{margin:.8rem 0 0;font-size:.82rem;color:var(--text-dim)}.examples button{background:none;border:0;color:var(--accent);font-family:var(--font-mono);font-size:.8rem;cursor:pointer;padding:0 .15rem}.examples button:hover{color:var(--accent-hi);text-decoration:underline}.result-head{display:flex;align-items:baseline;gap:.7rem;margin-bottom:1rem;flex-wrap:wrap}.result-head .q{font-family:var(--font-mono);color:var(--accent);font-size:1.05rem}.result-head .count{color:var(--text-dim);font-size:.85rem}.route{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.2rem;margin-bottom:.9rem}.route .net{font-family:var(--font-mono);font-size:1.1rem;color:var(--text);margin:0 0 .85rem;display:flex;align-items:center;gap:.6rem}.route .net .tbl{font-size:.64rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em}.path{border-top:1px solid var(--border);padding-top:.85rem;margin-top:.85rem}.path:first-of-type{border-top:0;padding-top:0;margin-top:0}.path-top{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.55rem}.star{color:var(--accent);font-size:.9rem}.path-type{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.path-proto,.path-type{font-family:var(--font-mono)}.path-proto{font-size:.72rem;color:var(--accent);background:var(--accent-dim);padding:.15rem .5rem;border-radius:6px}.path-pref{font-family:var(--font-mono);font-size:.7rem;color:var(--text-faint)}.attrs{display:grid;grid-template-columns:max-content 1fr;grid-gap:.3rem .9rem;gap:.3rem .9rem}.attrs dt{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding-top:.1rem}.attrs dd,.attrs dt{font-family:var(--font-mono)}.attrs dd{margin:0;font-size:.84rem;color:var(--text);word-break:break-word}.attrs dd.redacted{color:var(--text-faint);font-style:italic}.aspath span{color:var(--accent)}.comm{display:inline-block;background:var(--surface-up);border:1px solid var(--border);border-radius:5px;padding:.05rem .4rem;margin:0 .25rem .25rem 0;font-size:.78rem}.empty,.err,.hint{font-size:.9rem;padding:1.2rem 1.3rem;border-radius:12px}.empty{color:var(--text-dim);background:var(--surface);border:1px solid var(--border)}.err{color:var(--down);background:var(--down-dim);border:1px solid var(--down-dim)}.hint{color:var(--text-faint)}.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--border-hover);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}.foot{margin-top:4rem;padding-top:1.4rem;border-top:1px solid var(--border);color:var(--text-faint);font-size:.78rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem}.foot a{color:var(--text-dim)}.console{display:flex;flex-direction:column;gap:1rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.2rem 1.3rem}.console-row{display:flex;gap:1.4rem;flex-wrap:wrap;align-items:flex-end}.ctl{display:flex;flex-direction:column;gap:.45rem}.ctl-label{font-size:.64rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint)}.ctl select,.ctl-label{font-family:var(--font-mono)}.ctl select{background:var(--surface-up);border:1px solid var(--border);border-radius:9px;color:var(--text);font-size:.92rem;padding:.6rem .8rem;min-width:200px;outline:0;cursor:pointer}.ctl select:focus{border-color:var(--border-hover)}.cmds{flex:1 1}.cmd-tabs{display:inline-flex;flex-wrap:wrap;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface-up)}.cmd-tabs button{font-family:var(--font-mono);font-size:.82rem;color:var(--text-dim);background:none;border:0;border-left:1px solid var(--border);padding:.6rem 1rem;cursor:pointer;transition:all .12s}.cmd-tabs button:first-child{border-left:0}.cmd-tabs button:hover{color:var(--text)}.cmd-tabs button.on{background:var(--accent);color:var(--bg)}.console-run{display:flex;gap:.6rem;flex-wrap:wrap}.target{flex:1 1 320px;background:var(--surface-up);border:1px solid var(--border);border-radius:9px;color:var(--text);font-family:var(--font-mono);font-size:.98rem;padding:.8rem 1rem;outline:0;min-width:0}.target:focus{border-color:var(--border-hover)}.target::placeholder{color:var(--text-faint)}.target-none{display:flex;align-items:center;color:var(--text-faint);font-style:italic}.run,.target-none{font-family:var(--font-mono);font-size:.85rem}.run{text-transform:uppercase;letter-spacing:.08em;color:var(--bg);background:var(--accent);border:0;border-radius:9px;padding:0 2rem;cursor:pointer;transition:background .15s}.run:hover{background:var(--accent-hi)}.run:disabled{opacity:.5;cursor:default}.term{background:#0a0a0a;border:1px solid var(--border);border-radius:14px;overflow:hidden}.term-cmd{display:flex;align-items:center;gap:.7rem;padding:.8rem 1.1rem;border-bottom:1px solid var(--border);background:var(--surface)}.term-cmd .prompt{color:var(--accent);white-space:nowrap}.term-cmd .prompt,.term-cmd .term-line{font-family:var(--font-mono);font-size:.82rem}.term-cmd .term-line{color:var(--text)}.term-cmd .term-line:before{content:"$ ";color:var(--text-faint)}.term-wait{font-family:var(--font-mono);font-size:.85rem;color:var(--text-faint);padding:1.1rem;margin:0}.term .err{margin:1.1rem}.term-pre{font-family:var(--font-mono);font-size:.85rem;line-height:1.7;color:var(--text);padding:1rem 1.2rem;overflow-x:auto}.term-pre .sum{color:var(--text-dim);border-bottom:1px solid var(--border);padding-bottom:.55rem;margin-bottom:.55rem}.term-pre .ln{white-space:pre}.term-pre .ln b{color:var(--accent);font-weight:400}.term-pre .dim,.term-pre .hopn{color:var(--text-faint)}.term-pre .star{color:var(--accent)}.term-pre .tag{color:var(--up);font-size:.8em}.term-pre .bdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:.5rem;vertical-align:1px}.term-pre .bdot.up{background:var(--up);box-shadow:0 0 6px var(--up)}.term-pre .bdot.down{background:var(--down)}.vp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem}.vp-refresh{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);width:30px;height:28px;cursor:pointer}.vp-refresh:hover{border-color:var(--border-hover);color:var(--text)}.node{width:100%;text-align:left;cursor:pointer;transition:border-color .12s}.node.down{opacity:.5;cursor:not-allowed}.node.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-dim)}.node .city,.node .region{display:block}.pill.down{color:var(--down);background:var(--down-dim)}.pill.down .dot{background:var(--down)}.tbl-head{justify-content:space-between;gap:1rem;margin-bottom:1rem}.tbl-head,.tbl-tools{display:flex;align-items:center;flex-wrap:wrap}.tbl-tools{gap:.6rem}.tbl-total{font-family:var(--font-mono);font-size:.72rem;color:var(--text-faint);white-space:nowrap}.fam-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.fam-toggle button{font-family:var(--font-mono);font-size:.72rem;color:var(--text-dim);background:var(--surface);border:0;padding:.35rem .6rem;cursor:pointer;border-left:1px solid var(--border)}.fam-toggle button:first-child{border-left:0}.fam-toggle button.on{background:var(--accent-dim);color:var(--accent)}.tbl-filter{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--font-mono);font-size:.82rem;padding:.4rem .7rem;min-width:220px;outline:0;transition:border-color .15s}.tbl-filter:focus{border-color:var(--border-hover)}.tbl-filter::placeholder{color:var(--text-faint)}.tbl-refresh{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);font-size:.9rem;width:34px;height:32px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.tbl-refresh:hover{border-color:var(--border-hover);color:var(--text)}.tbl-refresh:disabled{opacity:.6;cursor:default}.tbl-group{margin-bottom:1rem}.tbl-group-head{width:100%;display:flex;align-items:center;gap:.6rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.7rem .9rem;cursor:pointer;color:var(--text);transition:border-color .15s}.tbl-group-head:hover{border-color:var(--border-hover)}.grp-dot{width:8px;height:8px;border-radius:50%;flex:none}.grp-dot.public{background:var(--accent);box-shadow:0 0 8px var(--accent-dim)}.grp-dot.torus{background:var(--text-dim)}.grp-label{font-family:var(--font-serif);font-size:1.05rem}.grp-count{font-family:var(--font-mono);font-size:.72rem;background:var(--surface-up);border:1px solid var(--border);border-radius:999px;padding:.1rem .55rem}.grp-caret,.grp-count{color:var(--text-faint)}.grp-caret{margin-left:auto;font-size:.8rem}.tbl-rows{margin-top:.5rem;display:flex;flex-direction:column;gap:.35rem}.trow{background:var(--surface);border:1px solid var(--border);border-radius:9px;overflow:hidden}.trow.open{border-color:var(--border-hover)}.trow-head{width:100%;display:flex;align-items:center;gap:.7rem;background:none;border:0;padding:.6rem .85rem;cursor:pointer;text-align:left;color:var(--text)}.trow-head:hover{background:var(--surface-up)}.trow-net{font-size:.92rem;color:var(--text);white-space:nowrap}.fam-chip,.trow-net{font-family:var(--font-mono)}.fam-chip{font-size:.58rem;color:var(--text-faint);border:1px solid var(--border);border-radius:4px;padding:.05rem .3rem;flex:none}.fam-chip.v6{color:var(--accent);border-color:var(--accent-dim)}.trow-summary{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;min-width:0;font-family:var(--font-mono);font-size:.76rem}.trow-as{color:var(--accent)}.trow-via{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.trow-proto{color:var(--text-faint)}.trow-multi{font-family:var(--font-mono);font-size:.66rem;background:var(--surface-up);border-radius:999px;padding:.1rem .45rem;white-space:nowrap}.trow-caret,.trow-multi{color:var(--text-faint);margin-left:auto}.trow-caret{font-size:.75rem;flex:none}.trow-multi+.trow-caret{margin-left:.4rem}.trow-detail{padding:.2rem .95rem .9rem;border-top:1px solid var(--border)}.trow-detail .path:first-of-type{padding-top:.85rem;margin-top:0}