/* Routing follows the gateway's existing operations palette and density. */
.routing-view>:not(#routing):not(.footer){display:none}
#routing{--route-wire:var(--blue);margin-bottom:24px}
.rt-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}
.rt-heading h1{font-size:24px;font-weight:650;letter-spacing:-.02em}
.rt-heading p{color:var(--muted);margin-top:4px}
.rt-controls{display:flex;align-items:center;gap:12px}
.rt-controls label{display:grid;gap:4px;color:var(--muted);font-size:11px}
.rt-controls select{min-width:160px;height:36px;border:1px solid var(--border);border-radius:4px;padding:0 12px;background:var(--surface);color:var(--ink)}
.rt-controls button{height:36px;align-self:end}
.rt-status-strip{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:20px}
.rt-verdict{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600}
.rt-verdict::before,.rt-proof-indicator::before{content:'';display:block;width:7px;height:7px;flex-shrink:0;border-radius:50%;background:currentColor}
.rt-pending{color:var(--amber)}
.badge.rt-pending{background:var(--bg)}
.rt-status-strip>span:last-child{font-size:11px;color:var(--muted)}
.rt-map{overflow:hidden;margin-bottom:20px}
.rt-map .panel-heading{border-bottom:1px solid var(--border)}
.rt-map .panel-heading>div{min-width:0}
.rt-map .panel-heading>span{font-size:11px;white-space:nowrap}
.rt-canvas{display:grid;grid-template-columns:minmax(174px,1.2fr) 32px minmax(155px,1fr) 32px minmax(150px,1fr) 32px minmax(156px,1fr) 32px minmax(140px,.9fr);align-items:stretch;padding:24px 20px;min-height:286px}
.rt-canvas{--route-wire:var(--muted)}
.rt-canvas.rt-route-observed{--route-wire:var(--blue)}
.rt-lans{display:grid;gap:12px;align-content:center}
.rt-point{min-width:0;display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:var(--radius);padding:16px 12px;background:var(--surface)}
.rt-point-heading{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.rt-point-heading>.icon{color:var(--muted);width:19px;height:19px}
.rt-point h3{font-size:14px;font-weight:650;letter-spacing:-.01em}
.rt-address{font-size:15px;font-weight:600;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.rt-point-detail{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.rt-point-footer{margin-top:auto;padding-top:8px}
.rt-point-footer .badge{font-size:11px;white-space:normal}
.rt-lan{gap:4px;padding:12px}
.rt-lan .rt-point-heading{margin-bottom:0}
.rt-lan>.rt-address{font-size:13px}
.rt-lan>.rt-address+.rt-address{font-size:11px;color:var(--muted);font-weight:400}
.rt-lan .rt-point-footer{padding-top:4px}
.rt-gateway{background:var(--bg)}
.rt-port-label{font-size:11px;color:var(--muted);margin-top:4px}
.rt-source-preserved{display:flex;gap:6px;font-size:11px;color:var(--muted);margin-top:12px}
.rt-source-preserved .icon{width:15px;height:15px}
.rt-cgnat-public{display:grid;gap:12px;margin-top:4px}
.rt-cgnat-public-item{display:grid;gap:2px;min-width:0}
.rt-cgnat-site,.rt-cgnat-probe{font-size:11px;color:var(--muted)}
.rt-cgnat-ip{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.rt-cgnat-probe.rt-pending{color:var(--amber)}
.rt-public-note{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.65}
.rt-connector{position:relative;min-width:0;align-self:stretch}
.rt-connector svg{display:block;width:100%;height:100%;min-height:240px;fill:none;stroke:var(--route-wire);stroke-width:1.5;vector-effect:non-scaling-stroke}
.rt-connector .rt-mobile-wire{display:none}
.rt-flowing .rt-connector:not(.rt-join)::after{content:'';position:absolute;top:50%;left:2px;width:4px;height:4px;border-radius:50%;background:var(--route-wire);animation:route-packet 1.8s linear infinite}
@keyframes route-packet{from{transform:translate(0,-50%);opacity:.2}20%{opacity:1}to{transform:translate(25px,-50%);opacity:.2}}
.rt-flow-strip{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 20px;background:var(--bg);border-block:1px solid var(--border);font-size:11px;color:var(--muted)}
.rt-flow-strip>span:first-child{display:flex;align-items:center;gap:8px;color:var(--ink)}
.rt-public{padding:16px 20px}
.rt-public h3{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px}
.rt-public-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(150px,.7fr) 100px 110px;align-items:center;gap:12px;padding-block:8px}
.rt-public-row>div{display:flex;gap:16px;align-items:center;font-size:12px}
.rt-public-row .muted{font-size:11px}
.rt-public-ip{font-size:16px;font-weight:600;color:var(--ink)}
.rt-public-row .badge{justify-self:start;font-size:11px}
.rt-probe-time{font-size:11px;color:var(--muted);text-align:right}
.rt-bottom{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.rt-routes,.rt-evidence{min-width:0;overflow:hidden}
.rt-table-wrap{overflow-x:auto}
.rt-table{width:100%;min-width:640px;border-collapse:collapse}
.rt-table th,.rt-table td{font-size:12px;padding:12px 16px;white-space:nowrap;text-align:left;border-bottom:1px solid var(--border)}
.rt-table thead th{font-size:11px;font-weight:500;color:var(--muted);background:var(--bg)}
.rt-table .numeric{text-align:right}
.rt-table .rt-route-prefix{font-weight:600}
.rt-table .badge{font-size:11px}
.rt-routes-foot{padding:10px 16px;color:var(--muted);font-size:11px}
.rt-proof{padding:16px 20px;border-top:1px solid var(--border)}
.rt-proof>div{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:11px;margin-bottom:6px}
.rt-proof-indicator{display:inline-flex;align-items:center;flex-shrink:0}
.rt-proof>strong{display:block;font-size:13px;font-weight:600;margin-bottom:4px}
.rt-proof>p{font-size:11px;color:var(--muted);line-height:1.65}
.rt-explanation{border-top:1px solid var(--border);padding:12px 20px;font-size:11px;color:var(--muted)}
.rt-explanation summary{color:var(--ink);cursor:pointer;padding-block:4px;font-weight:500}
.rt-explanation p{margin-top:8px;line-height:1.75}
.rt-note{margin-top:16px;font-size:11px;color:var(--muted);display:flex;gap:8px;align-items:flex-start}
.rt-note>.icon{width:15px;height:15px}
.rt-notice{padding:12px 16px;margin-bottom:16px;color:var(--amber);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:12px}
.rt-empty{padding-block:12px;color:var(--muted);font-size:12px}
@media(max-width:1450px){.rt-bottom{grid-template-columns:minmax(0,1fr) 320px}.rt-canvas{padding:20px 16px;grid-template-columns:minmax(140px,1.1fr) 24px minmax(138px,1fr) 24px minmax(140px,1fr) 24px minmax(138px,1fr) 24px minmax(115px,.8fr)}.rt-point{padding:12px 10px}.rt-address{font-size:13px}.rt-point h3{font-size:13px}.rt-point-heading{gap:6px}}
@media(max-width:1200px){.rt-canvas{grid-template-columns:1fr;gap:0;padding:20px}.rt-lans{grid-template-columns:1fr 1fr;gap:16px}.rt-point{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px;padding:16px}.rt-point-heading{grid-column:1/-1;margin:0 0 4px}.rt-point-footer{grid-column:2;grid-row:2/4;align-self:center;justify-self:end;padding:0}.rt-port-label{grid-column:1;margin:0}.rt-source-preserved{margin:0}.rt-connector{height:32px;width:32px;justify-self:center}.rt-connector .rt-desktop-wire{display:none}.rt-connector .rt-mobile-wire{display:block;min-height:0;width:32px;height:32px}.rt-flowing .rt-connector:not(.rt-join)::after{animation:none;display:none}.rt-bottom{grid-template-columns:1fr}.rt-public-row{grid-template-columns:1fr 150px 80px 90px}.rt-public-row>div{flex-direction:column;align-items:flex-start;gap:2px}.rt-proof{padding:14px 20px}.rt-address{font-size:15px}}
@media(max-width:700px){.rt-heading{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:16px}.rt-heading h1{font-size:22px}.rt-controls{width:100%;justify-content:space-between}.rt-controls label{flex:1}.rt-controls select{width:100%;min-width:0}.rt-status-strip{align-items:flex-start;flex-direction:column;padding:12px}.rt-map .panel-heading{flex-direction:column;align-items:flex-start;gap:8px;padding:12px}.rt-canvas{padding:16px 12px}.rt-lans{grid-template-columns:1fr;gap:12px}.rt-point{padding:12px}.rt-point h3{font-size:14px}.rt-address{font-size:14px}.rt-public{padding:12px}.rt-public-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;border-top:1px solid var(--border);padding-block:12px}.rt-public-row .rt-public-ip{font-size:15px;justify-self:end}.rt-public-row .badge{grid-column:1}.rt-probe-time{grid-column:2}.rt-flow-strip{padding:10px 12px;font-size:11px;gap:6px}.rt-bottom{gap:16px}.rt-proof,.rt-explanation{padding:12px 16px}.rt-note{line-height:1.8}.rt-table th,.rt-table td{padding:12px}.rt-routes .panel-heading,.rt-evidence .panel-heading{padding:12px}}
@media(prefers-reduced-motion:reduce){.rt-flowing .rt-connector::after{animation:none;display:none}}
@media(max-width:1200px){.rt-cgnat-public{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-top:8px}.rt-cgnat .rt-source-preserved{grid-column:1/-1}}
