  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{margin:0;background:#FFFFFF;-webkit-font-smoothing:antialiased;}
  p,li,button{font-family:'Albert Sans',system-ui,sans-serif;}
  h1,h2,h3,[data-display]{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-weight:440;}
  h1 span,h2 span,h3 span,[data-display] span{font-family:inherit;font-weight:inherit;}
  a{color:inherit;text-decoration:none;}
  a:hover{color:#0057FF;}
  button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;}
  img{max-width:100%;}
  ::selection{background:#0057FF;color:#FFFFFF;}
  a:focus-visible,button:focus-visible{outline:2px solid #0057FF;outline-offset:3px;}
  [data-ground="dark"] a:focus-visible,header a:focus-visible,header button:focus-visible{outline-color:#FFFFFF;}
  @keyframes bw-bloom{
    0%   {transform:translate3d(0,0,0) scale(1)}
    22%  {transform:translate3d(-11%,7%,0) scale(1.1)}
    44%  {transform:translate3d(-19%,-5%,0) scale(0.96)}
    63%  {transform:translate3d(-7%,-11%,0) scale(1.08)}
    81%  {transform:translate3d(-15%,4%,0) scale(1.02)}
    100% {transform:translate3d(0,0,0) scale(1)}
  }
  @media (prefers-reduced-motion: reduce){ [data-bloom]{animation:none !important;} }
  @keyframes bw-spark-core{0%,100%{transform:rotate(45deg) scale(1);opacity:1}50%{transform:rotate(45deg) scale(1.28);opacity:.85}}
  @keyframes bw-spark-arm{0%,100%{transform:translateX(-50%) scaleY(1);opacity:1}50%{transform:translateX(-50%) scaleY(1.3);opacity:.8}}
  @keyframes bw-spark-armh{0%,100%{transform:translateY(-50%) scaleX(1);opacity:1}50%{transform:translateY(-50%) scaleX(1.3);opacity:.8}}
  @keyframes bw-spark-sat{0%,100%{transform:rotate(45deg) scale(.7);opacity:.5}40%{transform:rotate(45deg) scale(1.35);opacity:1}70%{transform:rotate(45deg) scale(.9);opacity:.7}}
  @media (prefers-reduced-motion: reduce){ [data-ai-spark] span{animation:none !important;} }
  @keyframes bw-pulse{0%{transform:scale(1);opacity:.55}70%,100%{transform:scale(2.6);opacity:0}}
  [data-qf] input::placeholder{color:rgba(255,255,255,0.52);}
  [data-qf] input:focus{border-color:rgba(0,87,255,0.75);}
  @keyframes bw-caret{0%,100%{opacity:1}50%{opacity:0}}
  @keyframes bw-roam{
    0%{left:62%;top:-14%}
    22%{left:6%;top:14%}
    45%{left:56%;top:48%}
    68%{left:2%;top:62%}
    85%{left:50%;top:20%}
    100%{left:62%;top:-14%}
  }
  @media (prefers-reduced-motion: reduce){ [style*="bw-roam"]{animation:none !important;} }
  @keyframes bw-markloop{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
  /* Mobile nav must be correct BEFORE the logic mounts: the markup ships the
     desktop nav visible, so a slow phone would flash a broken nav (or keep it
     if mount is delayed). !important so it cannot lose to the inline defaults. */
  @media (max-width:1119px){
    [data-nav-links]{display:none !important;}
    [data-burger]{display:flex !important;}
  }