/* Site header and navigation (ne-nav.js). One header for the static site and the application pages.
   Floating panels hang from their trigger; no ancestor clips them (the old bar scrolled sideways, which forced every menu to be clipped). Below 1180px the header becomes a hamburger with accordion sections. */
:root{--head-h:60px}
.sh{position:sticky;top:0;z-index:60;background:var(--bg);border-bottom:1px solid var(--line)}
.sh-in{max-width:1560px;margin:0 auto;padding:0 clamp(16px,3.2vw,40px);height:var(--head-h);display:flex;align-items:center;gap:24px}
.sh-brand{flex:none;display:flex;flex-direction:column;gap:1px;line-height:1.1}
.sh .wordmark{flex:none;font-size:1.28rem;white-space:nowrap;display:block;padding:4px 0}
.sh .edition{font-family:var(--mono);font-size:.56rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.sh-nav{flex:1;min-width:0;display:flex;align-items:center;gap:8px;justify-content:space-between}
.sh-groups,.sh-act{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:2px}
.sh-g{position:relative}
.sh-d{position:relative}
.sh-d>summary,.sh-l{list-style:none;display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:8px;font-family:var(--body);font-size:.95rem;font-weight:500;color:var(--ink);text-decoration:none;cursor:pointer;white-space:nowrap;user-select:none}
.sh-d>summary::-webkit-details-marker{display:none}
.sh-d>summary::after{content:"";width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7;transition:transform .18s}
.sh-d[open]>summary::after{transform:rotate(225deg) translateY(-2px)}
.sh-d>summary:hover,.sh-l:hover,.sh-d[open]>summary{background:var(--accent-soft);color:var(--ink)}
.sh-d>summary:focus-visible,.sh-l:focus-visible,.sh-burger:focus-visible,.sh-panel a:focus-visible,.sh .themebtn:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.sh-d[data-current]>summary,.sh-l[aria-current=page]{color:var(--accent-ink);box-shadow:inset 0 -2px 0 var(--accent);border-radius:8px 8px 0 0}
.sh-g.primary>.sh-d>summary{font-weight:650}
.sh-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:70;width:max-content;min-width:300px;max-width:min(380px,calc(100vw - 24px));max-height:calc(100vh - var(--head-h) - 24px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:0 18px 40px -12px rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.08)}
.sh-panel ul{list-style:none;margin:0;padding:0}
.sh-panel a{display:block;padding:9px 12px;border-radius:8px;color:var(--ink);text-decoration:none}
.sh-panel a b{display:block;font-family:var(--body);font-weight:600;font-size:.95rem}
.sh-panel a span{display:block;font-size:.82rem;line-height:1.3;color:var(--muted);margin-top:1px}
.sh-panel a:hover,.sh-panel a[aria-current=page]{background:var(--accent-soft)}
.sh-act{flex:none}
.sh-act .sh-sep{width:1px;height:22px;background:var(--line);margin:0 6px}
.sh .themebtn{margin-left:4px}
.sh .sh-city>.citymenu{position:absolute;right:0;left:auto;top:calc(100% + 8px);z-index:70}
.sh-burger{display:none;margin-left:auto;width:44px;height:44px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;position:relative}
.sh-burger i,.sh-burger i::before,.sh-burger i::after{position:absolute;left:12px;right:12px;height:2px;background:var(--ink);border-radius:2px;content:"";transition:transform .2s,opacity .2s}
.sh-burger i{top:21px}.sh-burger i::before{top:-7px;left:0;right:0}.sh-burger i::after{top:7px;left:0;right:0}
.sh-burger[aria-expanded=true] i{background:transparent}.sh-burger[aria-expanded=true] i::before{transform:translateY(7px) rotate(45deg)}.sh-burger[aria-expanded=true] i::after{transform:translateY(-7px) rotate(-45deg)}
.sh .toc,.toc{top:var(--head-h)}
@media (max-width:1219px){
  .sh-in{gap:12px}
  .sh-burger{display:block}
  .sh-nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 16px 18px;max-height:calc(100vh - var(--head-h));max-height:calc(100dvh - var(--head-h));overflow:auto}
  .sh.is-open .sh-nav{display:flex}
  .sh-groups,.sh-act{flex-direction:column;align-items:stretch;gap:0}
  .sh-d>summary,.sh-l{display:flex;justify-content:space-between;width:100%;padding:13px 6px;font-size:1.02rem;border-radius:0;border-bottom:1px solid var(--line)}
  .sh-d[data-current]>summary,.sh-l[aria-current=page]{box-shadow:none;color:var(--accent-ink)}
  .sh-panel,.sh .sh-city>.citymenu{position:static;width:auto;min-width:0;max-width:none;max-height:none;border:0;border-radius:0;box-shadow:none;background:transparent;padding:2px 0 8px 10px}
  .sh-act{margin-top:10px;border-top:0}.sh-act .sh-sep{display:none}
  .sh .themebtn{margin:12px 0 0;align-self:flex-start}
}
@media print{.sh{display:none}}
html.sh-lock{overflow:hidden}
/* explorer cards */
.tx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px}.tx-card{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:14px 18px}.tx-card h3{margin:0 0 4px}.tx-links{list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:8px 0}.tx-place{margin:4px 0 0}
/* Single-link groups (Industries, Northline Brief, Intelligence Studio) reuse .sh-l; the badge marks a product that is announced but not yet available. */
.sh-link{white-space:nowrap}
.sh-link[aria-current=page]{background:var(--accent-soft)}
.sh-badge{font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid currentColor;opacity:.8;line-height:1.2}
/* Seven primary entries plus the city finder must fit between 1220 and 1499 px without horizontal scroll: tighter padding, and the Search shortcut (also in the Data menu) is dropped from the action row. */
@media (min-width:1220px) and (max-width:1499px){
  .sh-groups{gap:0}.sh-d>summary,.sh-l{padding:8px 8px;font-size:.9rem}.sh-act>a.sh-l:first-child{display:none}.sh-badge{font-size:.6rem;padding:1px 5px}
}
/* With accounts on (Pricing, Account and Sign in join the header) the collapsed menu is used up to 1319 px, so nothing overflows. */
@media (max-width:1319px){
  .sh[data-acct] .sh-in{gap:12px}
  .sh[data-acct] .sh-burger{display:block}
  .sh[data-acct] .sh-nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 16px 18px;max-height:calc(100vh - var(--head-h));max-height:calc(100dvh - var(--head-h));overflow:auto}
  .sh[data-acct].is-open .sh-nav{display:flex}
  .sh[data-acct] .sh-groups,.sh[data-acct] .sh-act{flex-direction:column;align-items:stretch;gap:0}
  .sh[data-acct] .sh-d>summary,.sh[data-acct] .sh-l{display:flex;justify-content:space-between;width:100%;padding:13px 6px;font-size:1.02rem;border-radius:0;border-bottom:1px solid var(--line)}
  .sh[data-acct] .sh-d[data-current]>summary,.sh[data-acct] .sh-l[aria-current=page]{box-shadow:none;color:var(--accent-ink)}
  .sh[data-acct] .sh-panel,.sh[data-acct]  .sh-city>.citymenu{position:static;width:auto;min-width:0;max-width:none;max-height:none;border:0;border-radius:0;box-shadow:none;background:transparent;padding:2px 0 8px 10px}
  .sh[data-acct] .sh-act{margin-top:10px;border-top:0}
  .sh[data-acct] .sh-act .sh-sep{display:none}
  .sh[data-acct]  .themebtn{margin:12px 0 0;align-self:flex-start}
}

/* ---- Navigation feedback and page transitions (behaviour in ne-nav.js). Decorative only; honours reduced motion. */
html.ne-go::before{content:"";position:fixed;z-index:2147483000;top:0;left:0;right:0;height:3px;background:var(--accent,#5EB4D1);transform-origin:0 50%;transform:scaleX(0);pointer-events:none;animation:ne-go 9s cubic-bezier(.08,.7,.2,1) .1s forwards}
@keyframes ne-go{to{transform:scaleX(.92)}}
a[data-pending]{opacity:.65}
@media (prefers-reduced-motion:reduce){html.ne-go::before{animation:none;transform:scaleX(.5)}}
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  ::view-transition-old(root){animation:ne-vt-out .12s ease-out both}
  ::view-transition-new(root){animation:ne-vt-in .16s ease-in both}
  .sh{view-transition-name:site-header}
  ::view-transition-group(site-header){animation-duration:0s}
  @keyframes ne-vt-out{to{opacity:0}}
  @keyframes ne-vt-in{from{opacity:0}}
}

/* The full-width header shortens a long current-city name (Kitchener–Cambridge–Waterloo); the whole name stays in the text and the tooltip. */
@media (min-width:1220px){.sh .sh-cn{display:inline-block;max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}}
@media (min-width:1320px) and (max-width:1439px){.sh[data-acct] .sh-cv{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}}      /* with Pricing and Account, the prefix is left to screen readers and the tooltip */
