.hub-page{max-width:1200px;padding:var(--sp-6) var(--sp-5) var(--sp-8);color:var(--ink);font-family:var(--font-sans);font-variant-numeric:tabular-nums;margin:0 auto}.hub-page h1,.hub-page h2{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;overflow-wrap:anywhere;font-weight:650}.hub-intro{max-width:880px;margin:32px 0}.hub-intro h1{font-size:var(--fs-h1);margin:0 0 var(--sp-5);max-width:28ch;line-height:1.17}.hub-answer{font-size:var(--fs-lead);max-width:68ch;margin:0 0 var(--sp-4);line-height:1.55}.hub-source,.hub-note{color:var(--ink-muted);max-width:68ch;font-size:14px;line-height:1.5}.hub-source{font-size:12px}.hub-freshness{padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);margin:0;display:inline-block}.hub-page a{color:var(--action);text-underline-offset:3px}.hub-page a:focus-visible{outline:2px solid var(--focus);outline-offset:4px;border-radius:6px}.hub-facts{gap:var(--sp-6) 0;padding:var(--sp-6) 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);margin:0 0 var(--sp-7);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.hub-facts>div{justify-content:flex-end;gap:var(--sp-2);padding-inline:var(--sp-5);border-left:1px solid var(--line);flex-direction:column-reverse;min-width:0;display:flex}.hub-facts>div:nth-child(3n+1){border-left:0;padding-left:0}.hub-facts dt{color:var(--ink-muted);max-width:28ch;font-size:14px;line-height:1.45}.hub-facts dd{font-family:var(--font-display);font-size:var(--fs-kpi);letter-spacing:-.03em;overflow-wrap:anywhere;margin:0;font-weight:650;line-height:1}.hub-facts .hub-fact-sentence{letter-spacing:-.02em;max-width:20ch;font-size:22px;line-height:1.25}.hub-story{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:32px;display:grid}.hub-page h2{font-size:var(--fs-h2);margin:0 0 var(--sp-5);line-height:1.3}.hub-section-heading{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.hub-section-heading>a,.hub-page-count{white-space:nowrap;font-size:14px}.hub-section-heading>a{align-items:center;min-height:44px;display:inline-flex}.hub-map,.hub-map-empty{background:var(--sunken);border:1px solid var(--line);border-radius:12px;height:360px;overflow:hidden}.hub-map .atlas-map-frame,.hub-map .atlas-map{height:100%;min-height:0}.hub-map-empty{color:var(--ink-muted);place-items:center;padding:24px;display:grid}.hub-equipment{padding:var(--sp-5);background:var(--surface);border-radius:var(--r-md);border:1px solid var(--line)}.hub-equipment h2{font-size:var(--fs-h3)}.hub-device-list{gap:24px;margin:0;padding:0;list-style:none;display:grid}.hub-device-list li>div:first-child{justify-content:space-between;gap:16px;font-size:14px;line-height:1.4;display:flex}.hub-device-list strong{text-align:right;white-space:nowrap;font-weight:650}.hub-device-share{color:var(--ink-muted);font-size:var(--fs-meta);margin-top:4px;font-weight:400;display:block}.hub-bar-track{background:var(--sunken);border-radius:6px;height:8px;margin-top:8px;overflow:hidden}.hub-bar-track span{background:var(--dev-other);border-radius:6px;height:100%;display:block}.hub-device-list [data-device=gates] .hub-bar-track span{background:var(--dev-gates)}.hub-device-list [data-device=flashing] .hub-bar-track span{background:var(--dev-lights)}.hub-device-list [data-device=signs] .hub-bar-track span{background:var(--dev-signs)}.hub-reading{border-left:3px solid var(--line-strong);background:var(--sunken);border-radius:0 6px 6px 0;grid-template-columns:1fr 1fr;gap:32px;margin:32px 0 48px;padding:16px 24px;display:grid}.hub-reading p{max-width:68ch;margin:0;font-size:14px;line-height:1.6}.hub-records{counter-reset:none;border-top:1px solid var(--line);margin:16px 0 0;padding:0;list-style:none}.hub-records li{border-bottom:1px solid var(--line)}.hub-records a{color:var(--ink);transition:background var(--dur-fast) var(--ease-out);border-radius:6px;grid-template-columns:minmax(0,1fr) 120px minmax(140px,220px);gap:24px;padding:24px 16px;text-decoration:none;display:grid}.hub-records a:hover{background:var(--action-soft)}.hub-records a:hover .hub-record-name strong{text-underline-offset:3px;color:var(--action);text-decoration:underline}.hub-records a>div{flex-direction:column;gap:4px;min-width:0;display:flex}.hub-records strong{overflow-wrap:anywhere;font-size:16px;font-weight:500}.hub-records span{color:var(--ink-muted);font-size:12px;line-height:1.5}.hub-record-id{font-family:var(--font-mono,monospace)}.hub-record-detail{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:4px;display:flex}.hub-device-label{align-items:center;gap:6px;display:inline-flex}.hub-device-label:before{content:"";background:var(--dev-other);border-radius:50%;flex:none;width:7px;height:7px}.hub-device-label[data-device=gates]:before{background:var(--dev-gates)}.hub-device-label[data-device=flashing]:before{background:var(--dev-lights);border-radius:0;transform:rotate(45deg)}.hub-device-label[data-device=signs]:before{background:var(--dev-signs);clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0}.hub-records .hub-record-traffic strong{font-size:22px;font-weight:650;line-height:1.2}.hub-traffic-track{background:var(--sunken);border-radius:2px;height:4px;margin-top:8px;display:block;overflow:hidden}.hub-traffic-track>span{background:var(--action);border-radius:2px;height:100%;display:block}.hub-record-traffic,.hub-record-road{text-align:right}.hub-records .hub-record-road strong{font-size:14px}.hub-pagination{grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;margin:24px 0;font-size:14px;display:grid}.hub-pagination a{border:1px solid var(--line-strong);border-radius:6px;justify-self:start;padding:12px 16px;text-decoration:none}.hub-pagination a:last-child{justify-self:end}.hub-notice{background:var(--sunken);border-radius:12px;padding:24px;line-height:1.6}.hub-neighbors{margin:48px 0}.hub-neighbors ul,.hub-link-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 24px;padding:0;list-style:none;display:grid}.hub-neighbors a,.hub-link-grid a{border-bottom:1px solid var(--line);overflow-wrap:anywhere;flex-direction:column;gap:4px;min-height:44px;padding:16px 0;font-weight:500;text-decoration:none;display:flex}.hub-neighbors a:hover,.hub-link-grid a:hover{text-decoration:underline}.hub-neighbors a span,.hub-link-grid a span{color:var(--ink-muted);font-size:12px;font-weight:400}.hub-link-block{font-family:var(--font-sans);color:var(--ink);margin-block:48px}.hub-link-block a{color:var(--action);text-underline-offset:3px}.hub-link-block a:focus-visible{outline:2px solid var(--focus);outline-offset:4px;border-radius:var(--r-sm)}.hub-link-block h2{font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.02em;font-weight:650}.hub-link-block h3{font-size:18px;font-weight:500}.hub-loading-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-block:32px;display:grid}.hub-loading-facts span{background:var(--sunken);border-radius:var(--r-sm);height:80px}.hub-loading-facts,.hub-loading-map{animation:1.8s ease-in-out infinite alternate hub-loading-breathe}@keyframes hub-loading-breathe{0%{opacity:.55}to{opacity:1}}@media (max-width:959px){.hub-story{grid-template-columns:1fr}.hub-map{height:380px}.hub-equipment{padding:24px}.hub-device-list{grid-template-columns:1fr 1fr}.hub-reading{gap:24px}}@media (max-width:639px){.hub-page{padding:24px 16px 48px}.hub-intro{margin:24px 0}.hub-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 0;margin-bottom:32px}.hub-facts>div{padding-inline:16px}.hub-facts>div:nth-child(3n+1){border-left:1px solid var(--line);padding-left:16px}.hub-facts>div:nth-child(odd){border-left:0;padding-left:0}.hub-facts .hub-fact-sentence{font-size:20px}.hub-map{height:300px}.hub-section-heading{flex-wrap:wrap;align-items:flex-start}.hub-section-heading h2{margin-bottom:8px}.hub-section-heading{margin-bottom:16px}.hub-device-list{grid-template-columns:1fr}.hub-reading{grid-template-columns:1fr;margin-block:24px 32px}.hub-records a{grid-template-columns:minmax(0,1fr) 96px;gap:16px;padding:24px 8px}.hub-record-road{text-align:left;grid-column:1/-1}.hub-records .hub-record-road{flex-flow:wrap;gap:4px 12px}.hub-neighbors ul,.hub-link-grid{grid-template-columns:1fr 1fr}.hub-pagination{gap:8px}.hub-pagination a{padding:12px}.hub-loading-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-loading-facts span:last-child{display:none}}@media (prefers-reduced-motion:reduce){.hub-records a{transition:none}.hub-loading-facts,.hub-loading-map{animation:none}}
