/* Northline visual layer: the night environment behind section headers (ne-atmosphere.js), in the tokens of .night in northline.css. Separate from national.css on purpose: national.css is the token-only extension of the Calgary design
   system; this layer is the deliberate new look and is the only stylesheet allowed to hold its own palette, declared once below. */
:root{--atm-bg:#14171b;--atm-ink:#f6f2e9;--atm-ink-strong:#fffdf7;--atm-ink-soft:#d8d2c5;--atm-link:#f3b9a3;--atm-muted:#b3ada1;--atm-accent:#f0603a;--atm-gold:#f0603a;--atm-node:#22262c;--atm-a-teal:#3a2a26;--atm-a-blue:#2c2d33;--atm-a-ochre:#3a2f22;--atm-a-green:#26302b;--atm-a-plum:#33282e}
/* Section atmospheres (ne-atmosphere.js): a dark, lit stage behind a page header. Fixed colours on purpose: the light comes from the data, in both themes. */
.hero[data-atmo]{position:relative;isolation:isolate;overflow:hidden;background:var(--atm-bg);color:var(--atm-ink);border-radius:3px;padding:44px 32px 34px;margin-top:14px;--px:0;--py:0}
.hero[data-atmo] h1{color:var(--atm-ink-strong)}.hero[data-atmo] .eyebrow{color:var(--atm-link)}.hero[data-atmo] .dek,.hero[data-atmo] p{color:var(--atm-ink-soft)}
.hero[data-atmo] a{color:var(--atm-link)}.hero[data-atmo] .meta,.hero[data-atmo] .small,.hero[data-atmo] .muted{color:var(--atm-muted)}
.hero[data-atmo] .banner,.hero[data-atmo] .notice{background:rgba(34,38,44,.7);border-color:rgba(243,185,163,.35);color:var(--atm-ink)}.hero[data-atmo] .banner b{color:var(--atm-ink-strong)}
.hero[data-atmo] a.btn-primary{background:var(--atm-accent);border-color:var(--atm-accent);color:var(--atm-bg);text-decoration:none}.hero[data-atmo] a.btn-secondary{color:var(--atm-ink);border-color:rgba(246,242,233,.45);text-decoration:none}
.hero[data-atmo]{margin-bottom:28px}
.hero[data-atmo]>*:not(.atmo-sky):not(.atmo-motif){position:relative;z-index:1}
.hero[data-atmo] h1,.hero[data-atmo] .dek{max-width:44rem}
.atmo-sky{position:absolute;inset:-12% -4%;z-index:-2;transform:translate3d(calc(var(--px)*-16px),calc(var(--py)*-10px),0);pointer-events:none}
.atmo-sky i{position:absolute;border-radius:50%;filter:blur(64px);opacity:.5}
.atmo-sky i:nth-child(1){width:52%;height:80%;left:-8%;top:-10%;background:radial-gradient(closest-side,var(--atmo-a,var(--atm-a-teal)),transparent)}
.atmo-sky i:nth-child(2){width:46%;height:70%;right:-6%;top:5%;background:radial-gradient(closest-side,var(--atmo-b,var(--atm-a-blue)),transparent);opacity:.42}
.atmo-sky i:nth-child(3){width:50%;height:46%;left:28%;bottom:-24%;background:radial-gradient(closest-side,var(--atmo-c,var(--atm-a-ochre)),transparent);opacity:.2}
.hero[data-atmo=research]{--atmo-a:var(--atm-a-teal);--atmo-b:var(--atm-a-blue);--atmo-c:var(--atm-gold)}.hero[data-atmo=monitor]{--atmo-a:var(--atm-a-green);--atmo-b:var(--atm-a-teal);--atmo-c:var(--atm-accent)}
.hero[data-atmo=industry]{--atmo-a:var(--atm-a-plum);--atmo-b:var(--atm-a-teal);--atmo-c:var(--atm-a-ochre)}.hero[data-atmo=investment]{--atmo-a:var(--atm-a-ochre);--atmo-b:var(--atm-a-teal);--atmo-c:var(--atm-a-blue)}
.hero[data-atmo=advisory]{--atmo-a:var(--atm-a-blue);--atmo-b:var(--atm-a-plum);--atmo-c:var(--atm-accent)}.hero[data-atmo=studio]{--atmo-a:var(--atm-a-teal);--atmo-b:var(--atm-a-green);--atmo-c:var(--atm-a-blue)}
.atmo-motif{position:absolute;top:0;bottom:0;right:0;width:58%;height:100%;z-index:-1;pointer-events:none;transform:translate3d(calc(var(--px)*12px),calc(var(--py)*8px),0);opacity:.9}
.atmo-motif .a-line{fill:none;stroke-width:1.4;stroke:rgba(243,185,163,.35)}.atmo-motif .l1{stroke:rgba(240,96,58,.32)}.atmo-motif .l2{stroke:rgba(216,210,197,.2)}
.atmo-motif .a-dot,.atmo-motif .a-site{fill:var(--atm-link)}.atmo-motif .a-edge{stroke:rgba(243,185,163,.2);stroke-width:1}
.atmo-motif .a-node{fill:var(--atm-node);stroke:var(--atm-link);stroke-width:1.4;transition:fill .3s,stroke .3s}.atmo-motif .a-node.near{fill:var(--atm-ink-strong);stroke:var(--atm-gold)}
.atmo-motif .a-ring,.atmo-motif .a-axis,.atmo-motif .a-grid{fill:none;stroke:rgba(243,185,163,.18);stroke-width:1}
.atmo-motif .a-wedge{fill:rgba(240,96,58,.2)}.atmo-motif .a-blip{fill:var(--atm-gold);opacity:.35}
.atmo-motif .a-pulse{fill:rgba(240,96,58,.25)}.atmo-motif .a-focus{fill:rgba(243,185,163,.18);stroke:var(--atm-link)}.atmo-motif .a-trace{fill:none;stroke:var(--atm-gold);stroke-width:2.4}
@media (prefers-reduced-motion:no-preference){
  .atmo-sky i{animation:atdrift 30s ease-in-out infinite alternate}.atmo-sky i:nth-child(2){animation-duration:38s;animation-direction:alternate-reverse}
  .atmo-motif .a-line{stroke-dasharray:6 14;animation:atflow 22s linear infinite;animation-delay:var(--d,0s)}
  .atmo-motif .a-dot,.atmo-motif .a-node{animation:atpulse 6s ease-in-out infinite;animation-delay:var(--d,0s)}
  .atmo-motif .a-sweep{animation:atspin 9s linear infinite}.atmo-motif .a-blip{animation:atblip 9s linear infinite;animation-delay:var(--d,0s)}
  .atmo-motif .a-pulse{animation:atring 5s ease-out infinite;animation-delay:var(--d,0s)}
  .atmo-motif .a-trace{stroke-dasharray:1;stroke-dashoffset:1;animation:attrace 7s ease-in-out infinite}
  .hero.atmo-paused .atmo-sky i,.hero.atmo-paused .atmo-motif *{animation-play-state:paused}
}
@keyframes atdrift{to{transform:translate3d(6%,4%,0) scale(1.1)}}@keyframes atflow{to{stroke-dashoffset:-200}}@keyframes atpulse{50%{opacity:.35}}
@keyframes atspin{to{transform:rotate(360deg)}}@keyframes atblip{0%,6%{opacity:1}30%,100%{opacity:.25}}@keyframes atring{from{transform:scale(.4);opacity:1}to{transform:scale(3);opacity:0}}
@keyframes attrace{0%{stroke-dashoffset:1}55%,85%{stroke-dashoffset:0}100%{stroke-dashoffset:-1}}
@media (max-width:900px){.atmo-motif{width:100%;opacity:.4}}
@media (max-width:760px){.hero[data-atmo]{padding:30px 18px 24px;border-radius:10px}.atmo-motif{opacity:.3}}
